Sitat av
Ignifer
Det vil kanskje være mulig å gjøre det sånn att når programet/loopen starter er klokka 1, og jeg passer på å sette i strømmen klokka 1?
Ved eventuel strømstans venter jeg med å sette i klokka til neste gang tidene stemmer med den reele tiden?
Jeg sjønner att ikke alle gidder å sitte å skrive koder helt gratis til random folk. Men kanskje det er noen der ute som vil bruke dette til å bli bedre på å prgramere? Så hjelper vi hverandre.. Jeg forventer ikke ett perfekt resultat første gang.
Om det er noen som trenger noe fra meg er jeg såklart villig til byttejobb her. Men nå jobber jeg i en litt mer fysisk verden, men det går såklart an å sende ting.
Som jeg skrev over så er den eneste koden du behøver den som er i "blink" eksempelet om du kun skal telle time for time og ikke synkronisere klokken via nettet eller en RTC modul.
Om du skal ha en bryter/knapp for å kunne stille klokken må du bruke noe som
millis() istedenfor delay() siden du ikke kan utføre andre funksjoner mens ett delay() holder på, da vil du kunne stille klokken time for time ved å trykke på en knapp.
Jeg tror dette skal fungere, men jeg vet det finnes langt mer elegante måter å gjøre det på.
Kode
int rele1 = 1; // Angi hvilken digital pin reléet er koblet til
int rele2 = 2;
int rele3 = 3;
int rele4 = 4;
int rele5 = 5;
int rele6 = 6;
int rele7 = 7;
void setup() {
pinMode(rele1, OUTPUT); // Spesifiser at de aktuelle pinnene er OUTPUT for å sende HIGH/LOW (PÅ/AV) signal til relé.
pinMode(rele2, OUTPUT);
pinMode(rele3, OUTPUT);
pinMode(rele4, OUTPUT);
pinMode(rele5, OUTPUT);
pinMode(rele6, OUTPUT);
pinMode(rele7, OUTPUT); // skilleanviseren
}
// Her er loopen som teller millisekunder og styrer reléene.
// Først skrur du på ett relé, venter i en time og skru på ett nytt, venter i en time og skrur på ett nytt osv.
// Klokka 6 skrus alle utenom rele 1 av og skilleanviseren går på.
void loop() {
digitalWrite(rele1, HIGH); // Skrur på relé 1 Klokken 1
delay(3600000); // Venter 1 time
digitalWrite(rele2, HIGH); // Skrur på relé 2 Klokken 2
delay(3600000); // Venter 1 time
digitalWrite(rele3, HIGH); // Skrur på relé 3 Klokken 3
delay(3600000); // Venter 1 time
digitalWrite(rele4, HIGH); // Skrur på relé 4 Klokken 4
delay(3600000); // Venter 1 time
digitalWrite(rele5, HIGH); // Skrur på relé 5 Klokken 5
delay(3600000); // Venter 1 time
digitalWrite(rele6, HIGH); // Skrur på relé 6 Klokken 6
delay(3600000); // Venter 1 time
digitalWrite(rele2, LOW); // Skrur av relé 2
digitalWrite(rele3, LOW); // Skrur av relé 3
digitalWrite(rele4, LOW); // Skrur av relé 4
digitalWrite(rele5, LOW); // Skrur av relé 5
digitalWrite(rele6, LOW); // Skrur av relé 6
digitalWrite(rele7, HIGH); // Skrur på relé 7 Klokken 7
delay(3600000); // Venter 1 time
digitalWrite(rele2, HIGH); // Skrur på relé 2 Klokken 8
delay(3600000); // Venter 1 time
digitalWrite(rele3, HIGH); // Skrur på relé 3 Klokken 9
delay(3600000); // Venter 1 time
digitalWrite(rele4, HIGH); // Skrur på relé 4 Klokken 10
delay(3600000); // Venter 1 time
digitalWrite(rele5, HIGH); // Skrur på relé 5 Klokken 11
delay(3600000); // Venter 1 time
digitalWrite(rele6, HIGH); // Skrur på relé 6 Klokken 12
delay(3600000); // Venter 1 time
digitalWrite(rele2, LOW); // Skrur av relé 2
digitalWrite(rele3, LOW); // Skrur av relé 3
digitalWrite(rele4, LOW); // Skrur av relé 4
digitalWrite(rele5, LOW); // Skrur av relé 5
digitalWrite(rele6, LOW); // Skrur av relé 6
digitalWrite(rele7, LOW); // Skrur på relé 7
// Nå starter loopen fra begynnelsen igjen.
}
PS: Husk å bruk en ekstern strømkilde til relé-ene siden 8 kanaler vil bruke opp mot 600ma om alle er aktivert samtidig.