Mese: agosto 2013

31 Replies

Inserire parametri e password con Arduino + LCD + Keypad + Servo

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:

servo_lcd_password

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;
}

30 Replies

Sensore di temperatura e umidità DHT22 + Arduino + Display LCD

In questo precendente articolo abbiamo visto come utilizzare il sensore DHT22 con Arduino e mandare i valori di umidità e temperatura sul Serial monitor. Ora vedremo invece come crivere i dati ricevuti dal sensore su un display LCD. INGREDIENTI: – 1x Arduino UNO – 1x Sensore DHT22

-1x Resistenza da 10 kΩ

-1x Bredboard

-1x Display LCD

-1x Potenziometro da 10 kΩ

-Cavetti vari (altro…)