Stap 6: Arduino sketch - klok
Adafruit Trinket analoge meter klok
Datum- en tijdfuncties, met behulp van een RTC DS1307 aangesloten via I2C en de TinyWireM-lib
Het downloaden van deze bibliotheken van Adafruit van Github repository en / / installeren in uw directory van de Arduino Libraries
#include < TinyWireM.h >
#include < TinyRTClib.h >
Voor debug, uncomment periodieke code, gebruikt u een FTDI vriend met de RX-pin op Pin 3 aangesloten
U moet een terminal programma (zoals freeware PuTTY for Windows) ingesteld op de
USB-poort van de FTDI vriend met 9600 baud. Uncomment seriële opdrachten om te zien what's up uit / /
#define HOUR_PIN 1 / / uur display via PWM over Trinket GPIO #1
#define MINUTE_PIN 4 / / Minute weergave via PWM over Trinket GPIO #4 (via Timer 1 gesprekken)
SendOnlySoftwareSerial Serial(3); Seriële transmissie over Trinket Pin 3
RTC_DS1307 de rtc; Real timerklok instellen
void setup () {}
pinMode (HOUR_PIN, uitvoer); define PWM meter pinnen als uitgang
pinMode (MINUTE_PIN, uitvoer);
PWM4_init(); Set timer 1 PWM gewerkt Trinket Pin 4
TinyWireM.begin(); Beginnen met I2C
RTC.begin(); Beginnen DS1307 real timerklok
Serial.begin(9600); Seriële Monitor beginnen met 9600 baud
Als (! rtc.isrunning()) {}
Serial.println ("RTC is NOT running!");
de RTC gevolgd ingesteld op de datum en tijd die deze schets werd samengesteld
RTC.adjust (DateTime (__DATE__, __TIME__));
}
}
void loop () {}
uint8_t hourvalue, minutevalue;
uint8_t hourvoltage, minutevoltage;
DateTime nu = rtc.now(); De RTC-info
hourvalue = now.hour(); Krijgen van het uur
Als (hourvalue > 12) hourvalue-= 12; Deze klok is 12 uur
minutevalue = now.minute(); De notulen
minutevoltage = kaart (minutevalue, 1, 57, 60, 255); Converteren van minuten naar PWM taakcyclus
if(hourvalue == 1) {}
analogWrite (HOUR_PIN, 57);
}
if(hourvalue == 2) {}
analogWrite (HOUR_PIN, 75); elk uur komt overeen met + 18
}
if(hourvalue == 3) {}
analogWrite (HOUR_PIN, 91);
}
if(hourvalue == 4) {}
analogWrite (HOUR_PIN, 111);
}
if(hourvalue == 5) {}
analogWrite (HOUR_PIN, 126);
}
if(hourvalue ==6) {}
analogWrite (HOUR_PIN, 147);
}
if(hourvalue == 7) {}
analogWrite (HOUR_PIN, 165);
}
if(hourvalue == 8) {}
analogWrite (HOUR_PIN, 183);
}
if(hourvalue == 9) {}
analogWrite (HOUR_PIN, 201);
}
if(hourvalue == 10) {}
analogWrite (HOUR_PIN, 215);
}
if(hourvalue == 11) {}
analogWrite (HOUR_PIN, 237);
}
if(hourvalue == 12) {}
analogWrite (HOUR_PIN, 255);
}
analogWrite4(minutevoltage); minuut analogwrite kan blijven hetzelfde als in de werken van de toewijzing
code om de processor te slapen misschien wenselijk zijn-we zullen vertragen
delay(5000); Controleer elke 5 seconden. U kunt dit wijzigen.
}
VOID PWM4_init() {/ / PWM over Trinket GPIO #4 (PB4, pin 3) instellen met behulp van Timer 1
TCCR1 = _BV (CS10); geen prescaler
GTCCR = _BV (COM1B1) | _BV (PWM1B); Schakel OC1B vergelijken
OCR1B = 127; Duty cycle initialiseren tot 50%
OCR1C = 255; frequentie
}
Functie analogWrite toestaan op Trinket GPIO #4
VOID analogWrite4 (uint8_t duty_value) {}
OCR1B = duty_value; plicht mogelijk 0 tot 255 (0 tot 100%)
}