Probleem met de code? - Beginner in arduino

Arduino specifieke Software
Berichten: 1
Geregistreerd: 24 Aug 2012, 13:09

Probleem met de code? - Beginner in arduino

Berichtdoor bram209 » 24 Aug 2012, 13:17

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:
/*
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

Gebruikers-avatar
Berichten: 700
Geregistreerd: 05 Mrt 2012, 21:56
Woonplaats: Appingedam

Re: Probleem met de code? - Beginner in arduino

Berichtdoor pjh » 24 Aug 2012, 21:13

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

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Eleanorchats, ubeyolod en 18 gasten