
Lade delay 20 på slutet, det vart bättre
Kod: Markera allt
int inPin0 = 2;
int inPin1 = 3;
int inPin2 = 4;
int outPin0 = 5;
int outPin1 = 6;
int outPin2 = 7;
int state0 = HIGH;
int reading0;
int previous0 = LOW;
int state1 = HIGH;
int reading1;
int previous1 = LOW;
int state2 = HIGH;
int reading2;
int previous2 = LOW;
long time = 0;
long debounce = 200;
void setup()
{
pinMode(inPin0, INPUT);
pinMode(inPin1, INPUT);
pinMode(inPin2, INPUT);
pinMode(outPin0, OUTPUT);
pinMode(outPin1, OUTPUT);
pinMode(outPin2, OUTPUT);
}
void loop()
{
reading0 = digitalRead(inPin0);
reading1 = digitalRead(inPin1);
reading2 = digitalRead(inPin2);
if (reading0 == HIGH && previous0 == LOW && millis() - time > debounce) {
if (state0 == HIGH)
state0 = LOW;
else
state0 = HIGH;
}
if (reading1 == HIGH && previous1 == LOW && millis() - time > debounce) {
if (state1 == HIGH)
state1 = LOW;
else
state1 = HIGH;
}
if (reading2 == HIGH && previous2 == LOW && millis() - time > debounce) {
if (state2 == HIGH)
state2 = LOW;
else
state2 = HIGH;
}
time = millis();
}
digitalWrite(outPin0, state0);
digitalWrite(outPin1, state1);
digitalWrite(outPin2, state2);
delay(600);
Kod: Markera allt
int inPin0 = 2;
int inPin1 = 3;
int inPin2 = 4;
int outPin0 = 5;
int outPin1 = 6;
int outPin2 = 7;
int state0 = HIGH;
int reading0;
int previous0 = LOW;
int state1 = HIGH;
int reading1;
int previous1 = LOW;
int state2 = HIGH;
int reading2;
int previous2 = LOW;
long time = 0;
long debounce = 200;
void setup()
{
pinMode(inPin0, INPUT);
pinMode(inPin1, INPUT);
pinMode(inPin2, INPUT);
pinMode(outPin0, OUTPUT);
pinMode(outPin1, OUTPUT);
pinMode(outPin2, OUTPUT);
}
void loop()
{
reading0 = digitalRead(inPin0);
reading1 = digitalRead(inPin1);
reading2 = digitalRead(inPin2);
if (reading0 == HIGH && previous0 == LOW && millis() - time > debounce) {
if (state0 == HIGH)
state0 = LOW;
else
state0 = HIGH;
}
if (reading1 == HIGH && previous1 == LOW && millis() - time > debounce) {
if (state1 == HIGH)
state1 = LOW;
else
state1 = HIGH;
}
if (reading2 == HIGH && previous2 == LOW && millis() - time > debounce) {
if (state2 == HIGH)
state2 = LOW;
else
state2 = HIGH;
}
time = millis();
digitalWrite(outPin0, state0);
digitalWrite(outPin1, state1);
digitalWrite(outPin2, state2);
delay(600);
}
Kod: Markera allt
long time = 0;
long debounce = 200;
Kod: Markera allt
long time0 = 0;
long debounce0 = 200;
long time1 = 0;
long debounce1 = 200;
long time2 = 0;
long debounce2 = 200;
Kod: Markera allt
int inPin0 = 2;
int inPin1 = 3;
int inPin2 = 4;
int outPin0 = 5;
int outPin1 = 6;
int outPin2 = 7;
int state0 = HIGH;
int reading0;
int previous0 = LOW;
int state1 = HIGH;
int reading1;
int previous1 = LOW;
int state2 = HIGH;
int reading2;
int previous2 = LOW;
long debounce = 200;
void setup()
{
pinMode(inPin0, INPUT);
pinMode(inPin1, INPUT);
pinMode(inPin2, INPUT);
pinMode(outPin0, OUTPUT);
pinMode(outPin1, OUTPUT);
pinMode(outPin2, OUTPUT);
}
void loop()
{
reading0 = digitalRead(inPin0);
reading1 = digitalRead(inPin1);
reading2 = digitalRead(inPin2);
if (reading0 == HIGH && previous0 == LOW && millis() - time > debounce) {
if (state0 == HIGH)
state0 = LOW;
else
state0 = HIGH;
long time0 = millis();
}
if (reading1 == HIGH && previous1 == LOW && millis() - time > debounce) {
if (state1 == HIGH)
state1 = LOW;
else
state1 = HIGH;
long time1 = millis();
}
if (reading2 == HIGH && previous2 == LOW && millis() - time > debounce) {
if (state2 == HIGH)
state2 = LOW;
else
state2 = HIGH;
long time2 = millis();
}
digitalWrite(outPin0, state0);
digitalWrite(outPin1, state1);
digitalWrite(outPin2, state2);
delay(400);
}
int time0 = 0; är en deklarering av en variabel.ochkl0620 skrev:Deklarera?
OK, det är mycket möjligt att det duger som det är för dig nu. Problemet är att du inte har någon avstudsning av knapparna nu, men din delay på slutet gör att det inte blir något problem. Tar du bort delayen (delayer är inte bra om du ska ha processorn att göra andra saker samtidigt) så kommer du sannolikt att märka av kontaktstudsarna och ha problem.ochkl0620 skrev:Okej ska testa igen men vad är egentligen anledningen?
Jag tycket att funktionen är helt OK nu, men är det instabilt på nåt sätt?
Kod: Markera allt
int inPin0 = 2;
int inPin1 = 3;
int inPin2 = 4;
int outPin0 = 5;
int outPin1 = 6;
int outPin2 = 7;
int state0 = HIGH;
int reading0;
int previous0 = LOW;
int state1 = HIGH;
int reading1;
int previous1 = LOW;
int state2 = HIGH;
int reading2;
int previous2 = LOW;
long time0 = 0;
long debounce = 200;
void setup()
{
pinMode(inPin0, INPUT);
pinMode(inPin1, INPUT);
pinMode(inPin2, INPUT);
pinMode(outPin0, OUTPUT);
pinMode(outPin1, OUTPUT);
pinMode(outPin2, OUTPUT);
}
void loop()
{
reading0 = digitalRead(inPin0);
reading1 = digitalRead(inPin1);
reading2 = digitalRead(inPin2);
if (reading0 == HIGH && previous0 == LOW && millis() - time0 > debounce) {
if (state0 == HIGH)
state0 = LOW;
else
state0 = HIGH;
}
if (reading1 == HIGH && previous1 == LOW && millis() - time0 > debounce) {
if (state1 == HIGH)
state1 = LOW;
else
state1 = HIGH;
}
if (reading2 == HIGH && previous2 == LOW && millis() - time0 > debounce) {
if (state2 == HIGH)
state2 = LOW;
else
state2 = HIGH;
}
time0 = millis();
digitalWrite(outPin0, state0);
digitalWrite(outPin1, state1);
digitalWrite(outPin2, state2);
delay(600);
}