Probleem met de code? - Beginner in arduino
2 berichten
• Pagina 1 van 1
Probleem met de code? - Beginner in arduino
Hallo, ik wil een led lampje aan en uitzetten met een knop, en als ik de knop ingedrukt houdt moet de led feller gaan branden.
Dus als de knop kort word ingedrukt --> Lamp aan/uit
Knop langer dan 0.5 sec ingedrukt --> Lamp steeds veller (tot je de knop weer los laat)
Hier is de code:
Dit zou toch gewoon moeten werken?
Ik gebruik een led met 270 ohm resistor en een button op 5v met 10k ohm resistor.
En de led zit op een analoge input/output.
Als je weet wat er fout is hoor ik het graag.
Dus als de knop kort word ingedrukt --> Lamp aan/uit
Knop langer dan 0.5 sec ingedrukt --> Lamp steeds veller (tot je de knop weer los laat)
Hier is de code:
/*
Vervaag een led:
Een led feller laten worden en weer laten vervagen,
doormiddel van for-loops en analogWrite
*/
const int led = 9; // de pin waar de led aan verbonden is
const int knop = 8; //de input pin van de knop
boolean waarde = LOW; //Hier word de status in bewaard
boolean waarde_oud = LOW; //De vorige waarde van variable 'waarde'
int state = 0;
unsigned long startTime = 0; //wanneer we beginnen met drukken
int level = 28; // hoe licht de led is
int hoeveel = 1; // hoe groot de tussenstap is
void setup() {
pinMode(led, OUTPUT); // pin 9 is een output
pinMode(knop, INPUT); //button is een input
}
void loop() {
waarde = digitalRead(knop); //leest waarde van button in
if ((waarde == HIGH) && (waarde_oud == LOW)){
state = 1 - state;
startTime = millis();
delay(5);
}
if ((waarde == HIGH) && (waarde_oud == LOW)){
if (state == 1 && (millis() - startTime) > 500) {
level++;
delay(5);
if (level > 255) {
level = 0;
}
}
}
waarde_oud = waarde; // waarde is nu oud
if (state == 1){
analogWrite(led, level);
}
else {
analogWrite(led, 0); //zet led uit
}
}
Dit zou toch gewoon moeten werken?
Ik gebruik een led met 270 ohm resistor en een button op 5v met 10k ohm resistor.
En de led zit op een analoge input/output.
Als je weet wat er fout is hoor ik het graag.
Advertisement
Re: Probleem met de code? - Beginner in arduino
De Arduino heeft een klokje aan boord die 16 mega hertz gaat. Dus per seconde 16 miljoen keer aan en uit. DIT IS DE DIGITALE WERTELD.
Je knopje maakt contact met twee metalen plaatjes waar vast nog wat vieze vingers op staan. Dat gaat niet mooi meteen op aan. DAT IS DE ANALOGE WERELD.
Conclusie: Wanneer jij in je MICROSECONDE WERELD (analoog) op een knopje drukt, ZIET DE MICROCONTROLLER in zijn één-zestiende-van-een-miljoenste-seconde-wereld HEEL VAAK het signaal AAN & UIT gaan, voor er een STABIEL SIGNAAL ONTSTAAT.
Er zijn twee twee manieren om dit zogenaamde DEBOUNCING van de BUTTON te ondervangen:
1) Software matig
2) Hardware matig.
De laatste is beter. Zie internet en Arduino.cc
wordt vervolgd
Je knopje maakt contact met twee metalen plaatjes waar vast nog wat vieze vingers op staan. Dat gaat niet mooi meteen op aan. DAT IS DE ANALOGE WERELD.
Conclusie: Wanneer jij in je MICROSECONDE WERELD (analoog) op een knopje drukt, ZIET DE MICROCONTROLLER in zijn één-zestiende-van-een-miljoenste-seconde-wereld HEEL VAAK het signaal AAN & UIT gaan, voor er een STABIEL SIGNAAL ONTSTAAT.
Er zijn twee twee manieren om dit zogenaamde DEBOUNCING van de BUTTON te ondervangen:
1) Software matig
2) Hardware matig.
De laatste is beter. Zie internet en Arduino.cc
wordt vervolgd
2 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: qewupazfota en 31 gasten