Stap 1: Een Arduino maakt een slechte klok - simuleren van een klok in Software
Wanneer ik een complex project aanpakken, ik dit in discrete stappen gebaseerd op de functionaliteit en de bedrading te verdelen. Vervolgens, wanneer iets verkeerd gaat, ik kan altijd terugvallen op de vorige 'goed bekende' staat te helpen erachter te komen wat er mis ging.
We beginnen gewoon enkele eenvoudige door code te schrijven voor het afhandelen van de seconden, minuten en uren met behulp van de Arduino interne counter die tracks de tijd, in milliseconden, nadat de Raad van bestuur werd powered-on of opnieuw instellen.
Hier is onze eerste schets, met geen bibliotheken of bedrading. Tijd is gewoon weergegeven met behulp van de seriële console:
// time variables<br> long lastMillis; int hours = 0; int minutes = 0; int seconds = 0; void setup() { Serial.begin(9600); // Open channel to serial console Serial.println("Arduino Clock Step 1"); } void loop() { long curMillis = millis(); // get current counter in milliseconds if (curMillis > (lastMillis + 1000)){ // If one second has passed: lastMillis = lastMillis + 1000; seconds = seconds + 1; // increment seconds if (seconds > 59){ seconds = 0; minutes = minutes + 1; // increment minutes if (minutes > 59){ minutes = 0; hours = hours + 1; // increment hours if (hours > 23){ hours = 0; } } } // Display time on serial console Serial.print(hours); Serial.print(":"); Serial.print(minutes); Serial.print(":"); Serial.println(seconds); } }
U kunt de tijdvariabelen instellen voordat u uploaden van de schets, en de Arduino, redelijke termijn (binnen een minuut per dag) tot een reset blijft of macht cyclus optreedt.
Tijd om te verkennen:
- Kunt u het oplossen van de output dus als uren of minuten minder dan 10, een eerste "0" wordt weergegeven?
- Hoe nauwkeurig is je Arduino? Kon u het te lopen nauwkeuriger kalibreren?
- Kunt u de digitale Pin 13 LED om aan te geven van het verloop van seconden?