Beste Mas3,
Ik ben in den beginne misschien wat optimistisch geweest door een bestaande code te gebruiken en die te willen aanpassen. Ik heb een bestaand project van prateeks.in gebouwd. En hoopte eigenlijk dat het aanpassen van de code makkelijker zou zijn.
Het projectje is bedoeld als douche timer. Gezien de gasprijs willen wij op onze scoutinggroep de tijd van het douchen reguleren. (ook omdat wij verhuren).
Een relais stuurt een klep aan waarbij het warm water aan en uitgeschakeld kan worden. Men kan 6 minuten douchen, waarna er een wachttijd van 3 minuten is, voordat de knop weer kan worden ingedrukt om weer opnieuw 6 minuten kunnen douchen.
Ik heb het "stappenplan" in mijn vorige post inderdaad in het Engels gemaakt. Simpelweg omdat de code ook in het Engels is. Mijn vraag heb ik enkel hier gepost.
Ik ben op YouTube inmiddels een starterscursus gaan volgen. Mede omdat wij tijdens de Jota (groot evenement van Scouting waarin techniek en communicatie centraal staat) ook een projectje willen doen met Arduino's, maar voor nu is dit mijn eerste keer, en heb ik nog een hoop te leren!
Hierbij de code die ik heb gebruikt:
#include <LiquidCrystal.h>
#include "Countimer.h"
Countimer tdown;
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
#include <EEPROM.h>
#define bt_set A0
#define bt_up A3
#define bt_down A1
#define bt_start A2
int time_s = 0;
int time_m = 0;
int time_h = 0;
int set = 0;
int flag1 = 0, flag2 = 0;
int relay = 5;
int buzzer = 6;
void setup() {
Serial.begin (9600);
pinMode(bt_set, INPUT_PULLUP);
pinMode(bt_up, INPUT_PULLUP);
pinMode(bt_down, INPUT_PULLUP);
pinMode(bt_start, INPUT_PULLUP);
pinMode(relay, OUTPUT);
pinMode(buzzer, OUTPUT);
lcd.begin(16, 2);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Welcome ");
lcd.setCursor(0, 1);
lcd.print(" Arduino Nano ");
tdown.setInterval(print_time, 999);
eeprom_read();
delay(5000);
lcd.clear();
}
void print_time() {
time_s = time_s - 1;
if (time_s < 0) {
time_s = 59;
time_m = time_m - 1;
}
if (time_m < 0) {
time_m = 59;
time_h = time_h - 1;
}
}
void tdownComplete() {
Serial.print("ok");
}
//tdown.stop();
void loop() {
tdown.run();
if (digitalRead (bt_set) == 0) {
if (flag1 == 0 && flag2 == 0) {
flag1 = 1;
set = set + 1;
if (set > 3) {
set = 0;
}
delay(100);
}
} else {
flag1 = 0;
}
if (digitalRead (bt_up) == 0) {
if (set == 0) {
tdown.start();
flag2 = 1;
}
if (set == 1) {
time_s++;
}
if (set == 2) {
time_m++;
}
if (set == 3) {
time_h++;
}
if (time_s > 59) {
time_s = 0;
}
if (time_m > 59) {
time_m = 0;
}
if (time_h > 99) {
time_h = 0;
}
if (set > 0) {
eeprom_write();
}
delay(200);
}
if (digitalRead (bt_down) == 0) {
if (set == 0) {
tdown.stop();
flag2 = 0;
}
if (set == 1) {
time_s--;
}
if (set == 2) {
time_m--;
}
if (set == 3) {
time_h--;
}
if (time_s < 0) {
time_s = 59;
}
if (time_m < 0) {
time_m = 59;
}
if (time_h < 0) {
time_h = 99;
}
if (set > 0) {
eeprom_write();
}
delay(200);
}
if (digitalRead (bt_start) == 0) {
flag2 = 1;
eeprom_read();
digitalWrite(relay, HIGH);
tdown.restart();
tdown.start();
}
lcd.setCursor(0, 0);
if (set == 0) {
lcd.print( "Timer" );
}
if (set == 1) {
lcd.print(" Set Timer SS ");
}
if (set == 2) {
lcd.print(" Set Timer MM ");
}
if (set == 3) {
lcd.print(" Set Timer HH ");
}
lcd.setCursor(4, 1);
if (time_h <= 9) {
lcd.print("0");
}
lcd.print(time_h);
lcd.print(":");
if (time_m <= 9) {
lcd.print("0");
}
lcd.print(time_m);
lcd.print(":");
if (time_s <= 9) {
lcd.print("0");
}
lcd.print(time_s);
lcd.print(" ");
if (time_s == 0 && time_m == 0 && time_h == 0 && flag2 == 1) {
flag2 = 0;
tdown.stop();
digitalWrite(relay, LOW);
digitalWrite(buzzer, HIGH);
delay(300);
digitalWrite(buzzer, LOW);
delay(200);
digitalWrite(buzzer, HIGH);
delay(300);
digitalWrite(buzzer, LOW);
delay(200);
digitalWrite(buzzer, HIGH);
delay(300);
digitalWrite(buzzer, LOW);
}
if (flag2 == 1) {
digitalWrite(relay, HIGH);
}
else {
digitalWrite(relay, LOW);
}
delay(1);
}
void eeprom_write() {
EEPROM.write(1, time_s);
EEPROM.write(2, time_m);
EEPROM.write(3, time_h);
}
void eeprom_read() {
time_s = EEPROM.read(1);
time_m = EEPROM.read(2);
time_h = EEPROM.read(3);
Groet, Mike