Czujnik ultradźwiękowy z elektrozaworem( Nalewak do napojów)

zibi
Posty: 10
Rejestracja: pt cze 14, 2019 6:23 pm

Czujnik ultradźwiękowy z elektrozaworem( Nalewak do napojów)

Postautor: zibi » wt lip 09, 2019 10:08 pm

witam
Projekt można wykorzystać jako nalewak do napojów.

Zasada działania:

Dioda czerwona świeci cały czas. Gdy czujnik wykryje obecność szklanki gaśnie dioda czerwona zapala się dioda zielona informując o tym, że szklanka została wykryta po 3 sekundach otwiera się elektrozawór nalewając przez 6 sekund, po tym czasie mimo, że szklanka stoi elektrozawór zamyka się, czekając do kolejnego cyklu kiedy podłożymy szklankę. Zabierając szklankę dioda zielona gaśnie zapala się czerwona.

#include <TimerOne.h>

int const trigPin = 2;
int const echoPin = 3;
int Red = 4; // Numer pinu - dioda czerwona
int Green = 5; // Numer Pinu - dioda zielona
int Elektrozawor = 9; // Numer Pinu - elektrozawor
bool flaga = true;

void setup()
{
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(Red, OUTPUT);
pinMode(Green, OUTPUT);
pinMode(Elektrozawor, OUTPUT);
}

void loop()
{
int duration, distance;
digitalWrite(trigPin, HIGH);
delay(1);
digitalWrite(trigPin, LOW);
// Measure the pulse input in echo pin
duration = pulseIn(echoPin, HIGH);
// Distance is half the duration devided by 29.1 (from datasheet)
distance = (duration / 2) / 29.1;
// if distance less than 0.5 meter and more than 0 (0 or less means over range)
if (distance <= 4 && distance >= 0)
{
digitalWrite(Red, HIGH);
digitalWrite(Green, LOW);

if (flaga) czekaj_trzy_sekundy();

} else
{
digitalWrite(Red, LOW);
digitalWrite(Green, HIGH);
flaga = true;
digitalWrite(Elektrozawor, LOW);
}
}

void czekaj_trzy_sekundy()
{
Timer1.initialize(3000000);
Timer1.attachInterrupt( timerStart );

}

void timerStart()
{
Timer1.stop();
Timer1.detachInterrupt();
Timer1.initialize(6000000);
Timer1.attachInterrupt( timerIsr );
flaga = false;
digitalWrite(Elektrozawor, HIGH);
}

void timerIsr()
{
digitalWrite(Elektrozawor, LOW);

}
Załączniki
schemat.jpg
schemat.jpg (147.89 KiB) Przejrzano 12740 razy