Go Down

Topic: Datum en tijd [ OPGELOST ] (Read 4079 times) previous topic - next topic

PieterP

Jawel, maar als je ze in een int probeert te stoppen, houdt de Arduino enkel rekening met de laagste 16 bits, waardoor het niet meer je oorspronkelijke getal is.

Gebruik unsigned long i.p.v. int voor getallen groter dan 32767.

Pieter

84538

Oke, ik ga het even uitproberen

84538

Jawel, maar als je ze in een int probeert te stoppen, houdt de Arduino enkel rekening met de laagste 16 bits, waardoor het niet meer je oorspronkelijke getal is.

Gebruik unsigned long i.p.v. int voor getallen groter dan 32767.

Pieter
Ik heb er nu dus dit van gemaakt :

unsigned long time;

int startseconds = 0;
int startminutes = 600000;
unsigned long starthours =  72000000;

int ss = 0;
int mm = 600000;
unsigned long hh = 72000000;

int tijd;

void setup() {
 
Serial.begin(9600);
}

void loop() {
  tijd = millis()/1000; // tijd in seconden
  ss = (tijd + startseconds)%60; // blijft hetzelfde
  mm = ((tijd + startseconds)/60)%60;
  hh = ((tijd + startseconds+60*startminutes)/3600)%24;

Serial.println("Tijd :");
  Serial.println(ss);
  Serial.println(mm);
  Serial.println(hh);
  Serial.println();


delay (5000);
}


En dan krijg ik dit de zien :

Tijd :
0
0
5

Tijd :
5
0
5

Tijd :
10
0
5

Tijd :
15
0
5

Tijd :
20
0
5

Tijd :
25
0
5


Onderste is de uren dus 5. Maar 72000000 moeten 20 uur zijn. En minuten geeft hij ook niet goed aan

84538

#18
Jun 17, 2017, 08:22 pm Last Edit: Jun 17, 2017, 09:13 pm by 84538
int startminutes = 600000; heb ik ondertussen ook veranderd in unsigned long startminutes = 600000

En met int mm heb ik hetzelfde gedaan.

Maar nog steeds werkt het niet helemaal.

PieterP

Ben echt niet goed wakker, om de een of andere reden zijn de startminutes en starthours eruit gevallen...

Code: [Select]
unsigned long tijd = millis()/1000; // tijd in seconden
unsigned long ss = (tijd + startseconds)%60; // blijft hetzelfde
unsigned long mm = ((tijd + startseconds)/60+startminutes)%60;
unsigned long hh = ((tijd + startseconds+60*startminutes)/3600+starthours)%24;


Snap je ongeveer wat ik probeer te doen?
Eigenlijk tel ik gewoon de starttijd op bij 'tijd', en zet dan 'tijd' om in hh:mm:ss.

Pieter

84538

Ja ik snap het nu ongeveer! Ik ga het even uitproberen en laat iets weten als het gelukt is ;)

Groetjes,

Cathy

84538

Ben echt niet goed wakker, om de een of andere reden zijn de startminutes en starthours eruit gevallen...

Code: [Select]
unsigned long tijd = millis()/1000; // tijd in seconden
unsigned long ss = (tijd + startseconds)%60; // blijft hetzelfde
unsigned long mm = ((tijd + startseconds)/60+startminutes)%60;
unsigned long hh = ((tijd + startseconds+60*startminutes)/3600+starthours)%24;


Snap je ongeveer wat ik probeer te doen?
Eigenlijk tel ik gewoon de starttijd op bij 'tijd', en zet dan 'tijd' om in hh:mm:ss.

Pieter
unsigned long time;
unsigned long startseconds = 0;
unsigned long startminutes = 2700000;
unsigned long starthours = 43200000;

unsigned long ss;
unsigned long mm;
unsigned long hh;

unsigned long millis(void);

unsigned long tijd;

void setup() {
 
Serial.begin(9600);



}

void loop() {
  unsigned long tijd = millis()/1000; // tijd in seconden
  unsigned long ss = (tijd + startseconds)%60; // blijft hetzelfde
  unsigned long mm = ((tijd + startseconds)/60+startminutes)%60;
  unsigned long hh = ((tijd + startseconds+60*startminutes)/3600+starthours)%24;

Serial.println("Tijd :");
  Serial.println(ss);
  Serial.println(mm);
  Serial.println(hh);
  Serial.println();


delay (5000);
}

Dit is het programma nu, maar nog steeds zie ik dan bij tijd 0 seconde , 0 minuten en 0 uren. Waar ga ik dan de fout in?

Groetjes,

Cathy

84538

Het is mij toch gelukt! Ik schreef het eerste stukje verkeerd. Nu heb ik er dit van gemaakt :

unsigned long time;
unsigned long startseconds = 0;
unsigned long startminutes = 59;
unsigned long starthours = 13;

En nu werkt het prima! Bedankt voor het helpen Pieter!

Go Up