12. timer, klok (software)


 
volatile unsigned long seconden = 0;
unsigned long seconden_oud = 0;

int seco;
int minu;
int uren;

ISR(TIMER1_OVF_vect) {
  TCNT1=0xBDC;
  seconden = seconden+1;
}

void setup() {
  Serial.begin(9600);
 
  TIMSK1=0x01;   // Bij een overflow wordt dat ISR stukje hierboven uitgevoerd
  TCCR1A = 0x00; // normale functie timer
  TCNT1=0xBDC;  //  0xBDC = 3036 decimaal (stukje vroegtijdige overflow)
  TCCR1B = 0x04; // dit is de deler. 1=1; 2=8; 3=64; 4 = 256; 5=1024
};

void loop () {
  if (seconden_oud != seconden){
   
    seconden_oud = seconden;
    seco = seconden % 60;
    minu = (seconden % (60*60))/60;
    uren = minu/60;

    Serial.print("De Arduino staat ");
    Serial.print(seco);
    Serial.print(" Seconden, ");
    Serial.print(minu);
    Serial.print(" Minuten en  ");
    Serial.print(uren);
    Serial.println("  uur aan.");
  }
};