Delucidazione parte di listato

#include <OnewireKeypad.h>
#include <Password.h>

#define Rows 4
#define Cols 3
#define Pin A0
#define Row_Res 4700
#define Col_Res 1000
#define LEDVERDE 13
#define LEDROSSO 10

char KEYS[]= {
  '1','2','3',
  '4','5','6',
  '7','8','9',
  '*','0','#'
};

OnewireKeypad <Print, 12> KeyPad(Serial, KEYS, Rows, Cols, Pin, Row_Res, Col_Res );
Password password = Password( "4053" );

void setup ()
{
  Serial.begin(115200);
  pinMode(LEDVERDE,OUTPUT);
  pinMode(LEDROSSO,OUTPUT);

  KeyPad.SetHoldTime(1000);
  KeyPad.ShowRange();
}

void loop()
{
  char Key;
  byte KState = KeyPad.Key_State();

  if (KState == PRESSED)
  {
    if ( Key = KeyPad.Getkey() )
    {
      Serial << "Pressed: " << Key << "\n";
      switch (Key)
      {
        case '*': checkPassword(); break;
        case '#': password.reset(); break;
        default: password.append(Key);
      }
    }
  }
  else if (KState == HELD)
  {
    Serial << "Key:" << KeyPad.Getkey() << " being held\n";
  }
}

void checkPassword()
{
  if (password.evaluate())
  {
    Serial.println("Success");
    digitalWrite(LEDVERDE,HIGH);
  }
  else
  {
    Serial.println("Wrong");
    digitalWrite(LEDROSSO,HIGH);

  }
}

ho trovato questo listato e lo ho modificato secondo le mie necessità. Ora però non mi serve più la seriale in quanto inserisco uno schermo lcd 16x2, ma la parte “Serial << “Key:” << KeyPad.Getkey() << " being held\n”"

come posso modificarla? e non mi è molto chiara la sua funzione… se qualcuno può aiutarmi lo ringrazio

Prova a leggere QUI ...

Guglielmo

Tecnica molto interessante che non conoscevo.

Credevo che l’operatore “<<” (left shift) venisse usato solo con variabile numeriche intere: non si smette mai di imparare!

Una domanda.

Ho letto che “endl” (End Line) invia un nuova linea e esegue il flush dello stream: è lo stesso se si inserisce solo un “\n”?

cyberhs:
… è lo stesso se si inserisce solo un “\n”?

… non so, non uso quella libreria, comunque mettere ‘\n’ (singolo apice, non doppio che identifica una stringa di tipo char array) o mettere 0x0A (LF) è uguale.

Guglielmo

cyberhs:
Credevo che l’operatore “<<” (left shift) venisse usato solo con variabile numeriche intere: non si smette mai di imparare!

Nota che in questo caso non si parla di operatore di left shift, bensì di operatore di inserimento (insertion), sebbene sia uguale sintatticamente.
Quanto al ‘\n’ al posto di endl, sì, se non ti serve flushare lo stream è la stessa cosa.