mijn arduino reageert onwillekeurig

algemene C code
Berichten: 2
Geregistreerd: 07 Dec 2015, 12:13

mijn arduino reageert onwillekeurig

Berichtdoor Klaaz » 28 Jan 2016, 20:08

hallo

hier heb ik een programma. alles werkt alleen als je de knop indrukt van aanraak1 en langer vast houd gaat hij raar doen en komen de uitgangen onwillekeurig knipperend op. iemand een idee. heb al geprobeerd met pullup weerstanden enz maar helpt niet
cpp code
#include <elapsedMillis.h>



elapsedMillis timeElapsed; //declare global if you don't want it reset every time loop runs

int buzzer = 11;
unsigned int interval = 500;
boolean ledState = LOW;


int aanraak1 = 3;
int aanraak2 = 4;
int aanraak3 = 5;
int uit1 = 8;
int uit2 = 9;
int uit3 = 10;




void setup() {
Serial.begin(9600);
pinMode (aanraak1, INPUT_PULLUP);
pinMode (uit1, OUTPUT);
pinMode (aanraak2, INPUT_PULLUP);
pinMode (uit2, OUTPUT);
pinMode (aanraak3, INPUT_PULLUP);
pinMode (uit3, OUTPUT);
pinMode (buzzer, OUTPUT);

}

void loop() {

int x = digitalRead(aanraak1);
int y = digitalRead(aanraak2);
int z = digitalRead(aanraak3);

if (x == HIGH){
digitalWrite(uit1, !HIGH);
digitalWrite(uit2, !HIGH);
digitalWrite(uit3, !HIGH);
digitalWrite(buzzer, !LOW);
delay(1000);
return;
}

if (y == HIGH){
digitalWrite(uit2, !HIGH);
digitalWrite(uit1, !LOW);
digitalWrite(uit3, !HIGH);
digitalWrite(buzzer, !LOW);
delay(1000);
return;
}

if (z == HIGH){
digitalWrite(uit3, !HIGH);
digitalWrite(uit2, !LOW);
digitalWrite(uit1, !LOW);
digitalWrite(buzzer, !LOW);
delay(1000);
return;
}
if ( z == 0 && timeElapsed > interval){
digitalWrite(uit1, !LOW);
digitalWrite(uit2, !LOW);


ledState = !ledState;
digitalWrite(buzzer, ledState);
digitalWrite(uit3, ledState);
timeElapsed = 0;
return;

}
}

Advertisement

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: mijn arduino reageert onwillekeurig

Berichtdoor shooter » 29 Jan 2016, 00:55

dus jij vergelijkt een int met HIGH dat klopt niet.

cpp code
#include <elapsedMillis.h>



elapsedMillis timeElapsed; //declare global if you don't want it reset every time loop runs

#define buzzerpin 11;
unsigned int interval = 500;
boolean ledState = false;


#define aanraak1pin 3; //zelf even de rest doen
int aanraak2 = 4; // ik heb overal maar een gedaan de rest kun je zelf.

int aanraak3 = 5;
int uit1 = 8;
int uit2 = 9;
int uit3 = 10;




void setup() {
Serial.begin(9600);
pinMode (aanraak1pin, INPUT_PULLUP);
pinMode (uit1, OUTPUT);
pinMode (aanraak2, INPUT_PULLUP);
pinMode (uit2, OUTPUT);
pinMode (aanraak3, INPUT_PULLUP);
pinMode (uit3, OUTPUT);
pinMode (buzzerpin, OUTPUT);

}

void loop() {

boolean x = (digitalRead(aanraak1)==HIGH);
int y = digitalRead(aanraak2);
int z = digitalRead(aanraak3);

// wat wil je als er 2 knoppen aan zijn.
// dat zijn al 8 standen

if (x && !y && !z){
digitalWrite(uit1, !HIGH);// wat is !HIGH gebruik dan LOW
digitalWrite(uit2, !HIGH);
digitalWrite(uit3, !HIGH);
digitalWrite(buzzer, !LOW);
delay(1000);
// return; als je in een functie zit kan dat wel maar hier niet
}

if (y == HIGH){
digitalWrite(uit2, !HIGH);
digitalWrite(uit1, !LOW);
digitalWrite(uit3, !HIGH);
digitalWrite(buzzer, !LOW);
delay(1000);
return;
}

if (z == HIGH){
digitalWrite(uit3, !HIGH);
digitalWrite(uit2, !LOW);
digitalWrite(uit1, !LOW);
digitalWrite(buzzer, !LOW);
delay(1000);
return;
}



if ( !z && (timeElapsed > interval)){// hier gaat ook iets fout met de tijd
digitalWrite(uit1, !LOW); wat is !LOW
digitalWrite(uit2, !LOW);


ledState = !ledState;
digitalWrite(buzzer, ledState);
digitalWrite(uit3, ledState);
timeElapsed = 0;
return;

}
}
paul deelen
shooter@home.nl

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 13 gasten