Salve a tutti premetto che e la mia prima volta su questo tipo di programmazione..quindi siate clementi se commetto errori stupidi.
Allora veniamo al punto della situazione,con la mia squadra di softair abbiamo deciso di crearci un valigetta giocattolo molto semplice, Vi spiego più o meno quel'è la mia intenzione e cosa sono riuscito a fare:
1)avvio con scritta personalizzata ( e fino a qua ci sono riuscito)
2)settaggio di un conto alla rovescia tramite tastiera (e qui sorge il primo problema)
3)Inserimento di un password a 4 cifre per bloccare il conto alla rovescia( altro problema)
4)Ed in fine con il tasto " * " volevo riattivare la valigetta
Di tutto ciò che ho elencato sopra sono riuscito solo a programmare un countdown con tempo predefinito
da pc
ora di seguito li lascio lo sketch che sono riuscito a compilare girando su internet e utilizzando gli esempi sul programma
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
int S = 5; // count seconds
int M = 0; // count minutes
int H = 0; // count hours
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
//define the cymbols on the buttons of the keypads
char hexaKeys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {4, 3, 2, 1}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {8, 7, 6, 5}; //connect to the column pinouts of the keypad
//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
LiquidCrystal_I2C lcd(0x27, 20, 4); // set the LCD address to 0x27 for a 16 chars and 2 line display
void setup()
{
lcd.init(); // initialize the lcd
// Print a message to the LCD.
Serial.begin(9600);
lcd.backlight();
lcd.setCursor(4, 0);
lcd.print("S.M.A.S.");
lcd.setCursor(3, 1);
lcd.print("La Bombaaa!");
delay(5000); // tempo di attessa
lcd.clear();
}
void loop()
{
// lcd.clear(); // Start with a blank screen
lcd.setCursor(3, 0);
lcd.print ("Countdown!");
lcd.setCursor(6, 1);
lcd.print(":");
lcd.setCursor(9, 1);
lcd.print(":");
S--;
delay(1000);
if (S < 0)
{
lcd.setCursor(1, 0);
lcd.print("Tempo Scaduto");
lcd.setCursor(3, 1);
lcd.print("Sei Morto!");
delay(5000);
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("Riavviare!");
lcd.setCursor(4, 1);
lcd.print("*SI #NO");
delay(100000); //lcd.clear();
}
if (M < 0)
{
H--;
M = 59;
}
if (H < 0)
{
H = 23;
M = 59;
S = 59;
}
if (M > 9)
{
lcd.setCursor(7, 1);
lcd.print(M);
}
else
{
lcd.setCursor(7, 1);
lcd.print("0");
lcd.setCursor(8, 1);
lcd.print(M);
lcd.setCursor(9, 1);
lcd.print(":");
}
if (S > 9)
{
lcd.setCursor(10, 1);
lcd.print(S);
}
else
{
lcd.setCursor(10, 1);
lcd.print("0");
lcd.setCursor(11, 1);
lcd.print(S);
lcd.setCursor(12, 1);
lcd.print(" ");
}
if (H > 9)
{
lcd.setCursor(4, 1);
lcd.print (H);
}
else
{
lcd.setCursor(4, 1);
lcd.print("0");
lcd.setCursor(5, 1);
lcd.print(H);
lcd.setCursor(6, 1);
lcd.print(":");
}
}
praticamente da come vedete l'unica cosa che sono riuscito a fare e far spuntare a video le varie scritte senza la possibilità di interagire da keypad(anche se già nel codice ho inserito la funzione)
qualcuno di buon cuore e armato di tanta pazienza mi può aiutare per completare questo progetto