Stap 1: programma
Hier is de schets van de Adruino voor het circuit. De output is op pin 7 en pin 5 een handmatige reset-knop is gekoppeld. De timing is gedaan met behulp van de millis() commando zodat extra functionaliteit kan worden toegevoegd in de lus (zoals het scannen van de handleiding resetknop) zonder werkelijk van de rest van de timing. Een andere keer ik kan kijken misschien toe te voegen in een paar van 7-seg schermen weer te geven van de resterende tijd.De op en reset tijden kunnen worden gewijzigd in de desbetreffende regels. Het op tijd (rstdly) is ingesteld in minuten waar de reset vertraging (rstoff) is ingesteld in seconden.
Zie de opmerkingen voor een verdere beschrijving van het programma.
#define relay 7 / / Pin voor uitvoer switcher
#define rstsw 5 / / Pin voor handmatige reset
Instellen na tijd in min voor reset vertraging wijzigen
#define rstdly 15
Instellen na ga off tijd in sec
#define rstoff 5
unsigned long old_time;
unsigned long cpr_time;
unsigned long dly_time;
unsigned long off_time;
byte rstswitch = 0;
VOID Setup
{
pinMode (Relais, uitvoer); set relay voor uitvoer
pinMode (rstsw, INPUT); Reset schakelaar invoerfilter
off_time = rstoff * 1000; mS vertraging voor off tijd berekenen
dly_time = (rstdly * 60000)-off_time; mS vertraging voor wachttijd, minder tijd om de timing te berekenen
}
void loop
{
digitalWrite (Relais, hoge); switch output op
old_time = millis(); krijgen van de huidige tijd
cpr_time = millis() - old_time; calc hoe lang gelopen voor
terwijl (cpr_time < dly_time) / / wait voor vertragingstijd
{
cpr_time = millis() - old_time;
rstswitch = digitalRead(rstsw); krijgen van de schakelaar staat
Als (rstswitch == 1) {breken;} / / als de schakelaar ingedrukt einde lus
}
digitalWrite (Relais, laag); uitgang uit te schakelen
old_time = millis();
cpr_time = millis() - old_time;
terwijl (cpr_time < off_time) / / wachten totdat het uit tijd verstreken
{
cpr_time = millis() - old_time;
}
}