Crea sito

Tag Archives: sensor

2 Replies

Sensore a ultrasuoni HC-SR04 + Arduino

hc-sr04

In questo articolo vedremo come misurare distanze con il sensore a ultrasuoni HCSR04.

INGREDIENTI:
-1x Arduino UNO
-1x Bredboard
-1x Sensore a ultrasuoni HCSR04
-Cavetti vari

Gli ultrasuoni sono delle onde sonore non udibili all’orecchio umano. Per misurare le distanze si usa la capacità delle onde di riflettersi sugli oggetti;  Viene mandata un’onda e si misura il tempo che impiega per tornare indietro.
Sapendo poi la velocità del suono nell’aria, si può calcolare la distanza con la semplice equazione S=VxT V è la velocità del suono, che per comodità, si può assumere il suo valore a 20°, ovvero 331.4m/s; Se si hanno elevate variazione di temperatura, per avere risultati accurati, è opportuno calcolare la velocità con la formula V = 331.4 + 0.62*t.
Per avere un risultato apprezzabile, ci conviene convertire la velocità in cm/ms (centimetri al microsecondo) in modo da ottenere il risultato in centimetri. Il nuovo valore di V sarà quindi pari a  3.4*10^-2 cm/microsec. Per avere informazioni dal sensore, bisogna mettere il pin trigger a stato logico alto per almeno 10 microsecondi. Il sensore emetterà le onde e aspetterà il loro ritorno, poi manderà un un impulso di stato logico alto al pin echo, della stessa duranta del tempo impiegato dall’onda  per compiere il suo percorso.
Il tempo T restituitoci dal sensore, è quello impiegato dall’onda per andare e tornare in microsecondi, quindi dobbiamo dividerlo per due per avere il tempo trascorso prima di essere riflesso. lo schema da realizzare è il seguente:
HC-SR04
lo sketch da caricare su arduino:

//Creato da Mohamed Fadiga momodesine@hotmail.it
int trigger=7;
int echo=8;

void setup()
{
  pinMode(trigger,OUTPUT);
  pinMode(echo,INPUT);
  Serial.begin(9600);
}

void loop()
{
  digitalWrite(trigger,LOW);
  digitalWrite(trigger,HIGH);
  delayMicroseconds(10);
  digitalWrite(trigger,LOW);
  long duration=pulseIn(echo,HIGH);
  long distance=0.017*duration;
  Serial.print("distanza:  ");
  //dopo 38ms è fuori dalla portata del sensore
  if(duration < 40000)Serial.println("fuori portata");
  else
  {
    Serial.print(distance);
    Serial.println("cm");
  }
  delay(1500);
}

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

64 Replies

Sensore di temperatura e umidità DHT22 + Arduino

In questo articolo vedremo come rilevare misure di temperatura e umidità con il sensore DHT22 e Arduino.

INGREDIENTI:

– 1x Arduino UNO

– 1x Sensore DHT22

– 1x Resistenza da 10 kΩ

– 1x Bredboard

– Cavetti vari (altro…)


2 Replies

Misurare temperatura con termistore + Arduino

Read in ENGLISH

In questo articolo vederemo come misurare delle temperature grazie ad Arduino e un termistore.

INGREDIENTI:

1x Arduino UNO

1x Resistenza da 4,7 kΩ

1x Termistore (in questo articolo il 159-282-86001 )

(altro…)