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);
}
Czujnik ultradźwiękowy z elektrozaworem( Nalewak do napojów)
Czujnik ultradźwiękowy z elektrozaworem( Nalewak do napojów)
- Załączniki
-
- schemat.jpg (147.89 KiB) Przejrzano 17428 razy