Hi!
Voor school moet ik een douchetimer maken met behulp van Arduino. De bedoeling is dat ik dmv een watersensor meet of de douche aan of uit staat. Als de douche aanstaat gaat er een timer lopen en na 10 minuten krijg je een alarm en er gaat een rood lampje aan. Staat de douche uit of zijn de 10 minuten nog niet voorbij, een groen lampje.
Nadat de 10 minuten timer (WaterDetectionTime) gaat lopen krijg je elke minuut een beep te horen (LastTimeIDidBeep).
Niet geheel onbelangrijk om hierbij te vermelden; ik ben een beginner.
Nu heb ik de volgende code, maar ik weet niet waarom er na 10 minuten geen alarm komt. De minutenbeeps blijven doorlopen en het lampje blijft groen. Misschien kunnen jullie mij een verlossend antwoord geven.
code:
//
// FILE: watersensor.ino
// AUTHOR: Kimmie
// VERSION: 0.0.8
// PURPOSE: Douchegedrag veranderen
//
const int sensor = A0;
int water;
const int greenLEDPin = D3;
const int redLEDPin = D4;
const int piezoPin = D1;
unsigned long currentTime = 0;
unsigned long lastTimeIDidBeep = 0;
unsigned long WaterDetectionTime = 0;
void setup() {
Serial.begin(9600); //Begin serial communication
pinMode(greenLEDPin, OUTPUT);
pinMode(redLEDPin, OUTPUT);
pinMode(piezoPin, OUTPUT);
}
void loop() {
currentTime = millis();
water = analogRead(sensor);
if (water > 700) //douche staat aan
{
WaterDetectionTime = millis(); //onthoud de begintijd van waterdetectie
if (currentTime - lastTimeIDidBeep >= 6000) //na elke minuut een beep (6 seconden voor testen)
{
lastTimeIDidBeep = currentTime;
beep();
}
if (millis() - WaterDetectionTime >= 60000 && WaterDetectionTime != 0) //zijn er 10 minuten verstreken (1 minuut voor testen) én waterdetectie staat niet op 0 nadat er water is gedetecteerd? Zet rode led aan + alarm
{
digitalWrite(greenLEDPin, LOW);
digitalWrite(redLEDPin, HIGH);
alarm();
}
}
else //douche staat uit
{
digitalWrite(greenLEDPin, HIGH);
digitalWrite(redLEDPin, LOW);
digitalWrite(piezoPin, LOW);
}
}
void alarm() {
tone(piezoPin, 698);
delay(600);
noTone(piezoPin);
delay(400);
}
void beep() {
tone(piezoPin, 100);
delay(100);
noTone(piezoPin);
delay(1000);
}
Alvast bedankt!