Stap 4: De klok
De bedrading
De bedrading is alleen het toevoegen van twee knoppen, dus dat is niet zo moeilijk.
Als u knoppen werken releiable op een Arduino, die u wilt gebruiken een pull-down weerstand (verbonden met de GND) of een pull up weerstand (verbonden met de + 5V).
Deze 10 kOhm weerstand ervoor zorgt dat de knop laag of hoog, is als het niet wordt geduwd. Ik gebruikte een pull up weerstand, zodat mijn knoppen hoge zijn wanneer ze niet zijn geduwd.
(Leer alles wat je nooit wilde weten over knoppen op Arduinos hier:)
- Sluit een draad van de + strippen van de breadboard aan + 5V op de Arduino
- Sluit een draad van de - strip van het breadboard aan GND op de Arduino
- Zet twee knoppen in het breadboard
- verbinding maken met de weerstand van een 10kOhm tussen een been van de knop en de + strip (2 x)
- Sluit een draad van de zelfde been van de knop waarop de weerstand is aangesloten, tot en met 8 pin van de Arduino (en pin 9 van de andere knop)
- Sluit een draad van het andere been van de knoppen aan de-strip (2 x)
De schets
Ik probeerde om te schrijven van mijn eigen schets, met behulp van de functie [millis] op de Arduino, maar dat was niet zo gemakkelijk als ik dacht dat het zou zijn dat, zodat ik www.arduino.cc zocht en vond enkele mooie bibliotheken en schetsen. Het enige was dat de schetsen alle iets externe gebruikt voor het instellen van de tijd (internet, seriële poort of RTC). Ik wilde de twee knoppen gebruiken voor het instellen van de tijd, dus er nog steeds sommige programmering was te doen voor mij.
Nog steeds heb niet het LCD-scherm, zodat de functie van de seriële-monitor van de Arduino-software mijn scherm voor nu zullen.
Voordat u de schets uitvoeren kunt, zul je de bibliotheek downloaden vanaf hier: http://www.arduino.cc/playground/Code/Time en zet het in de map [arduino]. (en herstart de Arduino-software)
De code
#include < Time.h > //adding de tijd-bibliotheek
int knoptijd = 400; alle variabelen instellen (sorry voor de Nederlandse namen)
int uur = 12;
int minuut = 15;
int seconde = 0;
int dag = 10;
int maand = 9;
int. jaar = 2011;
int knopset = 10;
int knopmode = 11;
int setwaarde = 0;
int modewaarde = 0;
VOID Setup {}
pinMode (knopset, INPUT);
pinMode (knopmode, INPUT);
Serial.begin(9600);
setTime(uur,minuut,seconde,dag,maand,jaar); de starttime voor de klok instellen wanneer het begint
}
void loop {}
setklok();
digitalClockDisplay();
delay(1000);
}
VOID setklok() {//setting de klok
modewaarde = digitalRead(knopmode);
Als (modewaarde == LOW) {//if de [modus] knop is pusched
Serial.println ("tijd instellen");
de uren instellen
Serial.println("uur");
Serial.println(uur);
delay(knoptijd);
modewaarde = digitalRead(knopmode);
terwijl (modewaarde == HIGH) {}
delay(knoptijd);
setwaarde = digitalRead(knopset);
Als (setwaarde == LOW) {}
uur ++;
Als (uur > 24) uur = 1;
Serial.println(uur);
}
modewaarde = digitalRead(knopmode);
}
instellen van de notulen
Serial.println("minuut");
Serial.println(minuut);
delay(knoptijd);
modewaarde = digitalRead(knopmode);
terwijl (modewaarde == HIGH) {}
delay(knoptijd);
setwaarde = digitalRead(knopset);
Als (setwaarde == LOW) {}
minuut ++;
Als (minuut > 59) minuut = 0;
Serial.println(minuut);
}
modewaarde = digitalRead(knopmode);
}
instellen van de maand
Serial.println("maand");
Serial.println(maand);
delay(knoptijd);
modewaarde = digitalRead(knopmode);
terwijl (modewaarde == HIGH) {}
delay(knoptijd);
setwaarde = digitalRead(knopset);
Als (setwaarde == LOW) {}
maand ++;
Als (maand > 12) maand = 1;
Serial.println(maand);
}
modewaarde = digitalRead(knopmode);
}
instellen van de dag
Serial.println("dag");
Serial.println(dag);
delay(knoptijd);
modewaarde = digitalRead(knopmode);
terwijl (modewaarde == HIGH) {}
delay(knoptijd);
setwaarde = digitalRead(knopset);
Als (setwaarde == LOW) {}
dag ++;
Als (maand == 1 || maand == 3 || maand == 5 || maand 7 == || maand 8 == || maand 10 == || maand 12 ==) {}
Als (dag > 31) dag = 1;
}
Als (maand == 4 || maand 6 == || maand 9 == || maand == 11) {}
Als de dag (dag > 30) = 1;
}
Als (maand == 2) {}
Als (dag > 28) dag = 1;
}
Serial.println(dag);
}
modewaarde = digitalRead(knopmode);
}
setTime(uur,minuut,seconde,dag,maand,jaar);
}
}
VOID digitalClockDisplay() {//printing tijd en datum
Serial.Print(Hour());
printDigits(minute());
Serial.Print("");
Serial.Print(Day());
Serial.Print("/");
Serial.Print(month());
Serial.println();
}
VOID printDigits (int cijfers) {}
hulpprogrammafunctie voor digitale klokvertoning: prenten voorafgaand aan de dikke darm en 0 voorsprong
Serial.Print(":");
if(digits < 10)
Serial.Print('0');
Serial.Print(digits);
}