Count time na if statement

algemene C code
Berichten: 5
Geregistreerd: 11 Mei 2016, 14:16

Re: Count time na if statement

Berichtdoor stijn98765 » 19 Mei 2016, 02:19

Hoe zouden jullie dit effiecenter oplossen dan?
Groetjes,
Stijn

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Count time na if statement

Berichtdoor nicoverduin » 19 Mei 2016, 06:17

cpp code
//Constants
const int airPump = 13;
const int hygrometer = A0;
const uint32_t AIRPUMP_TIME = 5000;
const uint32_t UPDATE_STATUS= 1000;
int led = A1;

//Variables
uint16_t value;
uint32_t begintijd = 0;
uint32_t updateTimer = 0;
uint32_t Tijd = 0;
uint32_t airPumpTimer;
uint8_t uren = 0;
uint8_t minuten = 0;
uint8_t seconden = 0;
char updateString[25];

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

pinMode(airPump, OUTPUT);
pinMode(led, OUTPUT);
updateTimer = 1;
delay(1); // voor de airpump timer
}

void loop() {

value = analogRead(hygrometer); //Read analog value
value = constrain(value, 400, 1023); //Keep the ranges!
value = map(value, 400, 1023, 100, 0); //Map value : 400 will be 100 and 1023 will be 0

//Start the watering if humidity decrease down of 20%
if (value < 40) {
if (airPumpTimer == 0) {
//
// de timer loopt nog niet dus nu starten
//
airPumpTimer = millis();
//
// pomp aan
//
digitalWrite(airPump, HIGH);
digitalWrite(led, HIGH);
}
}
//
// kijk of de luchtpomp timer loopt
//
if (airPumpTimer != 0) {
//
// Ja
//
if ((millis() - airPumpTimer) > AIRPUMP_TIME){
//
// verlopen
//
digitalWrite(airPump, LOW);
digitalWrite(led, LOW);
airPumpTimer = 0;
//
// start de klok
//
begintijd = millis();
}
}
//
// een keer per seconde informeren
//
if (millis() - updateTimer > UPDATE_STATUS) {
//
// bereken de uren/minuten/seconden
//
Tijd = millis() - begintijd;
Tijd = Tijd / 1000; // milliseconden omzetten in seconden
uren = Tijd / 3600; // aantal verstreken uren
Tijd = Tijd - (uren * 3600); // en haal de uren * seconden van Tijd af. houd je minuten & seconden over
minuten = Tijd / 60; // aantal verstreken minuten
seconden= Tijd - (minuten * 60); // en haal deze minuten * seconden van Tijd af. Houd je de seconden over
//
// toon alle info op de serial
//
sprintf(updateString, "%3d%% Duur: %02d:%02d:%02d\n", value, uren, minuten,seconden);
Serial.print(updateString);
//
// start de update timer voor de volgende seconde
//
updateTimer = millis();
}
}
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Vorige

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 10 gasten