Arduino for Noobs – Tutorial #2
Eccoci con il secondo videotutorial sulla programmazione Arduino per nabbi!
In questo secondo tutorial vedremo l’utilizzo di alcune funzione della comunicazione seriale in Arduino.
The new generation of learning
Eccoci con il secondo videotutorial sulla programmazione Arduino per nabbi!
In questo secondo tutorial vedremo l’utilizzo di alcune funzione della comunicazione seriale in Arduino.
In questo articolo vedremo come sfruttare un keypad 4×4 e un display LCD per permettere a l’utente di inserire parametri come dati o password.
Utilizzeremo questo metodo per attivare un servo dopo l’inserimento di una password dalla tastiera
INGREDIENTI:
-1x Arduino UNO
-1x Bredboard
-1x Display LCD
-1x Potenziometro da 10 kΩ (opzionale)
-1x Keypad 4×4
-1x Servo
-Cavetti vari
lo schema da realizzare:
lo scketch per arduino:
//Creato da Mohamed Fadiga momodesine@hotmail.it #include//include la libreria per la gestione del display LCD #include //include la libreria per la gestione del keypad #include //include la libreria per la gestione del servo LiquidCrystal lcd(10, 11, A0, A1, A2, A3); //Imposta i pin di Arduino a quali sono collegati in pin del display (Rs,E,DB4,DB5,DB6,DB7) byte colPins[4] = {5, 4, 3, 2}; byte rowPins[4] = {9, 8, 7, 6}; char Keys[4][4] = //creo la matrice dei tasti della tastiera. { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'} }; Keypad keyp = Keypad(makeKeymap(Keys), rowPins, colPins, 4, 4); Servo myservo; char key = '\0'; int lum_pin = 12; long inst_time; char risp[16]; byte close_val = 0; byte open_val = 180; void setup() { pinMode(lum_pin, OUTPUT); analogWrite(lum_pin, 0); lcd.begin(16, 2); Serial.begin(9600); myservo.attach(A4); myservo.write(close_val); } void loop() { lcd.clear(); lcd.print("Premi '*'"); key = keyp.getKey(); while (key != '*')key = keyp.getKey(); analogWrite(lum_pin, 255); int ans = get_param("Ins. Password", "0123456789", risp, true); if (ans == 1) { lcd.print("Apertura..."); myservo.write(open_val); delay(5000); lcd.clear(); lcd.print("Chiusura..."); myservo.write(close_val); } else if (ans == 2) { lcd.print("Pass errata!"); delay(2000); } analogWrite(lum_pin, 0); } boolean get_param(char* question, char* answer, char* param, boolean isPassword ) { byte j = 0; lcd.clear(); lcd.print(question); lcd.setCursor(j, 1); lcd.blink(); inst_time = millis(); do { lcd.setCursor(j, 1); key = keyp.getKey(); jump_key: if (key)inst_time = millis(); if ((key == '*') || (key == '#'))break; else if (key == 'C' && j > 0) { param[j] = '\0'; j--; lcd.setCursor(j, 1); lcd.write(" "); } else if (key == 'B' || key == 'D' || key == 'A'); else if (key) { param[j] = key; j++; lcd.print(key); if (isPassword) { long pass_wait = millis(); do key = keyp.getKey(); while (((millis() - pass_wait) < 1000) && (!key)); lcd.setCursor(j - 1, 1); lcd.write('*'); if (key)goto jump_key; } } } while ((millis() - inst_time) < 10000 && j < 17); param[j] = '\0'; lcd.clear(); if (key == '*') { Serial.println(param); if (!strcmp(param, answer))return 1; else return 2; } else return 0; }
Apri un sito e guadagna con Altervista - Disclaimer - Segnala abuso - Privacy Policy - Personalizza tracciamento pubblicitario