Stap 7: Interactie en enkele andere ideeën
We hebben twee script delen links:
3. interactie, uur, minuten, dagen in de maand instellen
4. add-ons, zoals een LDR te regelen van de helderheid, misschien een temperatuursensor
5. grappige effecten of tekst
3. interactie, uur, minuten, dagen in de maand instellen
De interactie is nodig om de tijd, bij het opstarten zonder een Arduino. Of wanneer de tijd niet nauwkeurig meer loopt.
We moeten de twee knoppen, een voor gaan op de modus voor het instellen en de andere voor het wijzigen van de cijfers.
Ik besloot om het toevoegen van twee grotere drukknoppen. Gewoon de knoppen verbinden met GND en door middel van een 10K Ohm weerstand naar een PIN en maak een pull up op die PIN:
pinMode ( 8,INPUT_PULLUP); pinMode ( 9,INPUT_PULLUP);
of de oude manier doen:
pinMode ( 8,OUTPUT); digitalWrite(8, HIGH); pinMode ( 9,OUTPUT);<br> digitalWrite(9, HIGH);
(Ik later dacht aan iets meer fancy:
Gebruik bijvoorbeeld een magneet en een Hallsensor. Misschien voor klok ontwerp versie 3?)
4. add-ons, zoals een LDR te regelen van de helderheid, misschien een temperatuursensor
Het display is nogal helder tijdens de nacht. Ik gebruikte een LDR te regelen van de helderheid. De helderheid kan worden geregeld door de snelheid van de timer instellen. Dit wordt gedaan door het geven van OCR1A een andere waarde.
Dus ik een weerstand en een LDR op analoge PIN A0 aangesloten en gemaakt van enkele stappen van de helderheid.
(GND - WEERSTAND VAN DE LDR - PIN 14 - 2K - GND)
//dimming or brightening if ( tCounter%100 == 0 ) { //do not check every loop but only once in a while int hhh = analogRead(0)/4; if ( hhh < 150 ) hhh = 0; else if ( hhh < 175 ) hhh = 10; else if ( hhh < 200 ) hhh = 20; else if ( hhh < 250 ) hhh = 50; // do the dimming by way of the frequency of the interrupt noInterrupts(); OCR1A = 10 + hhh ; interrupts();
5. grappige effecten of tekst
Dit is waar u een verschil kunt maken met de meer "normale" klokken.
Nu en dan tekst invoegen:
Van de rechter- of linkerkant verschijnen sommige woorden willekeurig, zoals hello, ciao...
Om dit te doen moet u een heleboel matrix verschuiven. Je nodig tips omdat dit Arduino script is gebaseerd op C.
Ik heb ook getest met het toevoegen van een bewegende komma met een andere timer, timer0
TCCR0A = 0; TCCR0B = 0; TCNT0 = 0; OCR0A = 50; // compare match register 16MHz/256/2Hz TCCR0B |= (1 << WGM02); // CTC mode TCCR0B |= (1 << CS01); // 256 prescaler TIMSK0 |= (1 << OCIE0A); // enable timer compare interrupt
Wij kunnen samen met een tweede array, alternatieve of zelfs spelen op hetzelfde moment de twee matrices.