Come scheda di controllo si può utilizzare anche l'ARDUINO NANO
PROCEDURA ELETTRONICA TRAMITE PROGRAMMA SOFTWARE (DA INSERIRE NEL PROGRAMMA):
void loop(){
digitalWrite(TRIG_PIN, 0); // Ingresso TRIGGER a 0 o LOW
delayMicroseconds(2); // Attendo 2 microsecondi
digitalWrite(TRIG_PIN, 1); // Attivo il TRIGGER con segnale alto o HIGH
delayMicroseconds(10); // Segnale alto per 10 microsecondi
digitalWrite(TRIG_PIN, 0); // Disattivo il TRIGGER segnale a 0 o LOW
Temp_ECHO = pulseIn(ECHO_PIN,HIGH); //Durata del fronte alto dell'ECHO
.......
Esempio tipico di funzionamento di un relè con pilotaggio a transistor:
Modulo con due relè, in vendita anche modulo ad un solo relè.
Utilizzo di un solo modulo, il collegamento ad Arduino è molto semplice.
Per il sistema di parcheggio prendo a spunto un semplice programma per la misura della distanza.
In seguito nel programma "inserisco" :
Con la libreria di Erick SIMOES si "condensa" il programma sopra esposto.
Collegare Arduino al P.C. e lanciare l'I.D.E. (L'ambiente di programmazione)
Dopo aver installato la libreria procediamo alla programmazione.
Programma ridotto:
Come programma, da installare su qualsiasi Arduino o clone, si può utilizzare una delle due versioni.
La versione ridotta non è compatibile con il software TINKERCAD in quanto nel suddetto software non è presente la libreria di Erick SIMOES
Sistema di controllo ultrasonico, fisso, applicato sulla parete di fondo del garage, altezza paraurti.
Accensione di una lampada ad una determinata distanza paraurti -muro(es.. 25 cm ).
Se sprovvisti di alimentazione elettrica, è possibile alimentare il tutto con una normale batteria auto non utilizzata, purchè eroghi una tensione intorno ai 9 Volt.
Ecco il programma completo (Copia ed Incolla per TINKERCAD):
#define ECHO_PIN 2
#define TRIG_PIN 3
int pin_rele = 5;//collegato il relè
float SPAZIO =0;
float Vel = 0.034; // 0.034 cm al microsecondo
float Temp_ECHO =0; // Tempo durata segnale alto ECHO
float sogliamin = 25; // Range minimo da inserire
void setup(){
Serial.begin(9600);
pinMode(ECHO_PIN, INPUT); // PIN 2 dell'ECHO come ingresso
pinMode(TRIG_PIN, OUTPUT); // PIN 3 del TRIGGER come uscita
pinMode(pin_rele, OUTPUT); // PIN 10 come uscita
}
void loop(){
digitalWrite(TRIG_PIN, 0); // Ingresso TRIGGER a 0 o LOW
delayMicroseconds(2); // Attendo 2 microsecondi
digitalWrite(TRIG_PIN, 1); // Attivo il TRIGGER con segnale alto o HIGH
delayMicroseconds(10); // Segnale alto per 10 microsecondi
digitalWrite(TRIG_PIN, 0); // Disattivo il TRIGGER segnale a 0 o LOW
Temp_ECHO = pulseIn(ECHO_PIN,HIGH); //Durata del fronte alto dell'ECHO
//Serial.println(Temp_ECHO);
SPAZIO = Vel *(Temp_ECHO/2);
Serial.print(" La distanza in cm. = ");
Serial.println(SPAZIO);
Serial.println();
// Controllo il RANGE della distanza minima per attivare nel caso il relè
//if(SPAZIO>sogliamax ||SPAZIO<sogliamin )digitalWrite (pin_Led,1);
if(SPAZIO<sogliamin )digitalWrite (pin_rele,1);//Attivo RELE'
else digitalWrite (pin_rele,0);
delay(100);
}
CIRCUITO ELETTRONICO COMPLETO :
Simulazione con TINKERCAD:
SIMULATORE per PARCHEGGIO ad ultrasuoni con 3 Led in TINKERCAD:
Ecco il programma completo (Copia ed Incolla per TINKERCAD):
#define ECHO_PIN 2
#define TRIG_PIN 3
int led_verde = 8;//collegato led verde
int led_giallo = 9;//collegato led giallo
int led_rosso = 10;//collegato led rosso
float SPAZIO =0;
float Vel = 0.034; // 0.034 cm al microsecondo
float Temp_ECHO =0; // Tempo durata segnale alto ECHO
float max =40; // Range massimo
float min = 15; // Range minimo
// Se la distanza paraurti-muro è:
// uguale o superiore a max cm. => led verde acceso
// se è compresa tra max e min cm. => led giallo acceso
// uguale o minore di min cm. => led rosso acceso
void setup(){
Serial.begin(9600);
pinMode(ECHO_PIN, INPUT); // PIN 2 dell'ECHO come ingresso
pinMode(TRIG_PIN, OUTPUT); // PIN 3 del TRIGGER come uscita
pinMode(led_verde, OUTPUT); // PIN 8 come uscita
pinMode(led_giallo, OUTPUT); // PIN 90 come uscita
pinMode(led_rosso, OUTPUT); // PIN 10 come uscita
}
void loop(){
digitalWrite(TRIG_PIN, LOW); // Ingresso TRIGGER a 0 o LOW
delayMicroseconds(2); // Attendo 2 microsecondi
digitalWrite(TRIG_PIN, HIGH); // Attivo il TRIGGER con segnale alto o HIGH
delayMicroseconds(10); // Segnale alto per 10 microsecondi
digitalWrite(TRIG_PIN, LOW); // Disattivo il TRIGGER segnale a 0 o LOW
Temp_ECHO = pulseIn(ECHO_PIN,HIGH); //Durata del fronte alto dell'ECHO
//Serial.println(Temp_ECHO);
SPAZIO = Vel *(Temp_ECHO/2);
Serial.print(" La distanza in cm. = ");
Serial.println(SPAZIO);
Serial.println();
{
if(SPAZIO>=max){
digitalWrite(led_verde,HIGH);
digitalWrite(led_giallo,LOW);
digitalWrite(led_rosso,LOW);
}
if (SPAZIO<max and SPAZIO>min){
digitalWrite(led_giallo,HIGH);
digitalWrite(led_rosso,LOW);
digitalWrite(led_verde,LOW);
}
if(SPAZIO<=min){
digitalWrite(led_rosso,HIGH);
digitalWrite(led_verde,LOW);
digitalWrite(led_giallo,LOW);
}
delay(50);
}
}
Medesimo programma per le due schede:
N.B. Se si acquista un clone dell'Arduino Nano fare attenzione alla selezione del modello all'interno dell'IDE di programmazione.
ARDUINO UNO:
CONTINUA ......