Crea sito

Tag: 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);
}

31 Replies

Insert parameters e password whith 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;
}

65 Replies

Temperature and humidity sensor DHT22 + Arduino

humidity-temperature-sensor-dht22
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 (more…)


2 Replies

Measuring temperature with thermistor + Arduino

Leggi in ITALIANO

In this article we will see how to measure the temperature thanks to Arduino and a thermistor.

INGREDIENTS:

1x Arduino UNO

1x 4.7 kΩ resistor

1x Thermistor (in this article the 159-282-86001) (more…)