Go Down

Topic: led + button + random (Read 343 times) previous topic - next topic

frankdewispelaere1

ben aan het proberen mijn 3leds en knoppen gewoon afzonderlijk te doen werken 1 led lukt de 2de niet meer
wat doe ik verkeerd ?

de code

 int ledPin1 = 9;
int ledPin2 = 8;
int ledPin3 = 10;
int buttonPin1 = 7;
int buttonPin2 = 6;
int buttonPin3 = 5;
int lastButtonState1=LOW;
int lastButtonState2=LOW;
int lastButtonstate3=LOW;
int ledState1=HIGH;
int ledState2=HIGH;
int ledState3=HIGH;

void setup()
{
  pinMode(ledPin1,OUTPUT);
  pinMode(ledPin2,OUTPUT);
  pinMode(ledPin3,OUTPUT);
  pinMode(buttonPin1,INPUT);
  pinMode(buttonPin2,INPUT);
  pinMode(buttonPin3,INPUT);
}
 void loop()
  {
 
  int buttonState1 = digitalRead(buttonPin1);
   
  if(buttonState1==LOW&& buttonState1!=lastButtonState1)
  {
 
    if(ledState1==LOW)
    {
  ledState1=HIGH;
    }
  else
  {
   ledState1=LOW;
  }
  }
 
  digitalWrite(ledPin1, ledState1);
  lastButtonState1=buttonState1;
  delay(20);
}
 int buttonState2 = digitalRead(buttonPin2);

 if(buttonState2==LOW&& buttonState2!=lastButtonState2)
 {
if(ledState2==LOW)
  {
ledState2=HIGH;
 }
else
{
 ledState2=LOW;
}
/

digitalWrite(ledPin2,ledState2);
lastButtonState2=buttonState2;
delay(20);
}
}

mvg
frank

MAS3

wat doe ik verkeerd ?
Dat je de code niet in tags zet, zoals eerder in deze thread toegelicht, en ook in de forum gebruiksaanwijzing (klik !) vermeld is.

Code: [Select]

int ledPin1 = 9;
int ledPin2 = 8;
int ledPin3 = 10;
int buttonPin1 = 7;
int buttonPin2 = 6;
int buttonPin3 = 5;
int lastButtonState1=LOW;
int lastButtonState2=LOW;
int lastButtonstate3=LOW;
int ledState1=HIGH;
int ledState2=HIGH;
int ledState3=HIGH;

void setup()
{
  pinMode(ledPin1,OUTPUT);
  pinMode(ledPin2,OUTPUT);
  pinMode(ledPin3,OUTPUT);
  pinMode(buttonPin1,INPUT);
  pinMode(buttonPin2,INPUT);
  pinMode(buttonPin3,INPUT);
}
 void loop()
  {
 
  int buttonState1 = digitalRead(buttonPin1);
   
  if(buttonState1==LOW&& buttonState1!=lastButtonState1)
  {
 
    if(ledState1==LOW)
    {
  ledState1=HIGH;
    }
  else
  {
   ledState1=LOW;
  }
  }
 
  digitalWrite(ledPin1, ledState1);
  lastButtonState1=buttonState1;
  delay(20);
}
 int buttonState2 = digitalRead(buttonPin2);

 if(buttonState2==LOW&& buttonState2!=lastButtonState2)
 {
if(ledState2==LOW)
  {
ledState2=HIGH;
 }
else
{
 ledState2=LOW;
}
/

digitalWrite(ledPin2,ledState2);
lastButtonState2=buttonState2;
delay(20);
}
}


Dit doe je door op het code knopje te klikken als je in de uitgebreide editor je bericht typt, of door [code] (plak hier je code) [/code] te doen.
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

frankdewispelaere1

Code: [Select]

int ledPin = 9;
int buttonPin = 7;
int lastButtonState = HIGH;
int ledState = HIGH;


sorry

heb hier een stuk code gezet, is dit de juiste manier?

mvg

frank

racemaniac

Code: [Select]

int ledPin = 9;
int buttonPin = 7;
int lastButtonState = HIGH;
int ledState = HIGH;


sorry

heb hier een stuk code gezet, is dit de juiste manier?

mvg

frank
yup

frankdewispelaere1

bedankt
zal in het vervolg dit zo verder doen.

MAS3

#20
Apr 29, 2016, 11:55 pm Last Edit: Apr 29, 2016, 11:58 pm by MAS3
Hoi.

Lees ook mijn handtekening, de tekst die onder aan elk van mijn bijdragen hier staat.

In de code die je hierboven hebt geplaatst en die ik later in de tags heb gezet, zie ik een aantal puntjes.
Een daarvan haal ik ook aan in mijn handtekening, omdat dat een veel voorkomend probleem is, namelijk het gebruik van delay().
Als je een delay gebruikt, dan vertel je je Arduino om zoveel milliseconden helemaal niets anders te doen dan op de klok kijken of er al genoeg tijd verstreken is.
Dat is zonde, want je Arduino kan zo'n zestienduizend handelingen per milliseconde uitvoeren.

Dan de {gekrulde haakjes}.
Daar gaat ook heel vaak wat mis.
Heel vaak wat misgaan betekent hier dat er met 100% zekerheid helemaal niemand is onder de bezoekers hier die daar nooit een fout mee heeft gemaakt en/of nu nog steeds maakt.

Kijk eens naar dit stukje:
Code: [Select]

 void loop()
  {
 
  int buttonState1 = digitalRead(buttonPin1);
   
  if(buttonState1==LOW&& buttonState1!=lastButtonState1)
  {
 
    if(ledState1==LOW)
    {
  ledState1=HIGH;
    }
  else
  {
   ledState1=LOW;
  }
  }
 
  digitalWrite(ledPin1, ledState1);
  lastButtonState1=buttonState1;
  delay(20);
}


Dit is alles wat er in wat heet de functie die niets terug geeft (vandaar void) loop() staat.
De inhoud van de functie is opgesloten tussen { }.
Alles wat buiten die { } staat behoort niet tot die functie, en zal daarom niet worden uitgevoerd door je code tenzij je die andere functie aanroept, daarover zometeen meer.
Dit alles vertel ik je omdat daar dus de fout zit die je wil oplossen.
Het gedoe rond button 2 zit niet in de functie loop, en word daarmee nooit uitgevoerd.
Als je wel wil dat die word uitgevoerd, zul je 'm naar de functie loop moeten verplaatsen, of je roept de betreffende functie aan.
Die betreffende functie is er niet, dus je kunt 'm ook niet aanroepen.
Dus alles rond button 2 is een stukje mogelijk correcte code.
Mogelijk, omdat de compiler er mogelijk geen probleem in ziet, maar het niet veel meer is dan commentaar dat nooit tot uitvoering zal komen.
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

nicoverduin

Dat is nog een reden om af en toe eens de format functie van de IDE te gebruiken. Die zet de open en sluit accolades weer keurig onder elkaar. Dan merk je gauw genoeg of de structuur van het programma nog wel zo is als dat ie zou moeten zijn. En voor hen die met de Eclipse-Arduino plugin werken: zet de cursor tegen de sluit accolade aan dan zal Eclipse een gestippeld blokje om de open accolade zetten. En nog wel heeeeel veeeeel meer luxe toeters en bellen.
Met vriendelijke groet / kindest regards
Nico Verduin
www.verelec.nl
Do not PM me for personal consultancy unless you are willing to pay for it.

MAS3

Dat doet de Arduino IDE ook al tijden hoor:
Een dun lichtblauw kadertje om de bijbehorende accolade als je bij de andere kant bent met de cursor.
Superhandig, net zoals het verspringen.
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

nicoverduin

Tja die gebruik ik niet meer heh :) Geen enkele reden meer voor.
Met vriendelijke groet / kindest regards
Nico Verduin
www.verelec.nl
Do not PM me for personal consultancy unless you are willing to pay for it.

frankdewispelaere1

probleem opgelost,

bedankt

mvg
frank

MAS3

Hoi Frank.

Dit forum is bedoeld om informatie in twee richtingen te geven.
Tot nog toe heeft men geprobeerd je te helpen door verschillende antwoorden te geven.
Voor mensen die tegen hetzelfde probleem aan lopen, zou het wel fijn zijn als je uit de doeken zou doen HOE je probleem nu is opgelost.
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy