Lite Arduinobekymmer...

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
svanted
Inlägg: 5280
Blev medlem: 30 augusti 2010, 21:20:38
Ort: Umeå

Re: Lite Arduinobekymmer...

Inlägg av svanted »

lägg till startvärden på utgångarna sist i setup

digitalWrite(outPin1, HIGH);


eller hur du nu har kopplat?
Användarvisningsbild
ochkl0620
Inlägg: 4852
Blev medlem: 9 maj 2010, 23:34:56
Skype: challe.claesson
Ort: Näsåker Västernorrland
Kontakt:

Re: Lite Arduinobekymmer...

Inlägg av ochkl0620 »

Kopplat leddarna från GND till 5,6,7 och knapparna med 10K pulldown till 2,3,4.
Miramithe
Inlägg: 1423
Blev medlem: 21 januari 2013, 17:45:10
Ort: Borlänge

Re: Lite Arduinobekymmer...

Inlägg av Miramithe »

Har testat själv nu med en annan kod som togglar led på eller av, men det var inte det du ville? utan att de ska lysa när man håller in?

iaf så kolla jag på din kod innan och en sak jag funderade på var

if (reading0 == HIGH && previous0 == LOW && millis() - time > debounce)

Den skulle jag vilja skriva

if ((reading0 == HIGH && previous0 == LOW && millis() - time) > debounce)

men det kanske bara är jag.

Kod: Markera allt

const int button1 = 8;
const int button2 = 9;
const int button3 = 10;
const int led1 = 2;
const int led2 = 3; 
const int led3 = 4;

int led1State = HIGH;         
int button1State;             
int lastButton1State = LOW;   
int led2State = HIGH;         
int button2State;             
int lastButton2State = LOW;   
int led3State = HIGH;         
int button3State;             
int lastButton3State = LOW;   

long lastDebounceTime = 0;
long debounceDelay = 50;

void setup() {
  
  pinMode(button1, INPUT);
  pinMode(button2, INPUT);
  pinMode(button3, INPUT);
  
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  
  digitalWrite(led1, led1State);
  digitalWrite(led2, led2State);
  digitalWrite(led3, led3State);
}

void loop() {
  int reading1 = digitalRead(button1);
  int reading2 = digitalRead(button2);
  int reading3 = digitalRead(button3);
  
  if (reading1 != lastButton1State) {
    lastDebounceTime = millis();
  }if (reading2 != lastButton2State) {
    lastDebounceTime = millis();
  }if (reading3 != lastButton3State) {
    lastDebounceTime = millis();
  }

if ((millis() - lastDebounceTime)  > debounceDelay) {
  
  if (reading1 != button1State) {
    button1State = reading1;
    
  if (button1State == HIGH) {
    led1State = !led1State;
  }
  }
  if (reading2 != button2State) {
    button2State = reading2;
    
  if (button2State == HIGH) {
    led2State = !led2State;
  }
  }
  if (reading3 != button3State) {
    button3State = reading3;
    
  if (button3State == HIGH) {
    led3State = !led3State;
  }}}
  
  digitalWrite(led1, led1State);
  digitalWrite(led2, led2State);
  digitalWrite(led3, led3State);
  
  lastButton1State = reading1;
  lastButton2State = reading2;
  lastButton3State = reading3;
  
}

Denna skrev jag, kanske inte helt rätt men den funkar.
Kan tilllägga att jag är nog lika ny på detta med Arduino som du är om inte nyare.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Lite Arduinobekymmer...

Inlägg av sodjan »

> Kopplat leddarna från GND till 5,6,7...

Med lämpliga motstånd?

> och knapparna med 10K pulldown till 2,3,4.

Det fungerar helt säkert OK. Men det vanliga är att ha pull-up.
Det finns en del elektriska orsaker till att det i vissa fall är bättre
med pull-up, men låt oss bara säga att det är vanligare. :-)

Det betyrder så klart också att det aktiva ("tryckta") läget är
"0" eller "låg" på pinnen. Man får vända på testerna i koden.

Men som sagt, pull-down fungerar antagligen helt OK i detta fall. :-)
Användarvisningsbild
SeniorLemuren
Inlägg: 8427
Blev medlem: 26 maj 2009, 12:20:37
Ort: Kristinehamn

Re: Lite Arduinobekymmer...

Inlägg av SeniorLemuren »

ochkl0620 skrev:För övrigt... nu efter lite tester osv så är allt pannkaka. När jag körde med bara en knapp o en led i taget så funkade det men nu när jag kopplat 3st så får den fnatt. knappen på pin 2 tänder alla led o håller man in den blir det disco jävlar i havet :P Jag dör lite mer .....
Jag ser att klockan gått lite sedan Carlsberg. Om den råkar innehålla alkohol så kanske du passerat Ballmer peak. Då är det färdigprogrammerat för i dag. :D
ballmer_peak.jpg
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
ochkl0620
Inlägg: 4852
Blev medlem: 9 maj 2010, 23:34:56
Skype: challe.claesson
Ort: Näsåker Västernorrland
Kontakt:

Re: Lite Arduinobekymmer...

Inlägg av ochkl0620 »

Givetvis med motstånd, trodde det togs för givet :)
Hm osäker på pull-down eller up, det är alltså kopplat följande...

Miramithe: Jodå! De ska lysa när jag släppt knappen.
EDIT: SeniorLemuren Haha! :D
EDIT2: men bilden då.....
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
ochkl0620
Inlägg: 4852
Blev medlem: 9 maj 2010, 23:34:56
Skype: challe.claesson
Ort: Näsåker Västernorrland
Kontakt:

Re: Lite Arduinobekymmer...

Inlägg av ochkl0620 »

Miramithe: Jag testade din kod och den funkar PRECIS som jag vill :D Vände bara på HIGH/LOW så att den är släckt när den startas.
Jag vill tacka alla väldigt mycket för all hjälp! Nu kommer nästa del... men det får nog bli en egen projekttråd :)
Leddarna ska i vart fall inte vara leddar utan reläer! spänningsregulatorer ska in, PCB ska designas och sen vet i fasen :P
En sak är säker, jag har allt lärt mig en hel del av detta och jag kommer fortsätta med programmering.
Miramithe
Inlägg: 1423
Blev medlem: 21 januari 2013, 17:45:10
Ort: Borlänge

Re: Lite Arduinobekymmer...

Inlägg av Miramithe »

*Thumbs up*


Kod: Markera allt

int inPin0 = 8;        
int inPin1 = 9;  
int inPin2 = 10;  
 
int outPin0 = 2;      
int outPin1 = 3;    
int outPin2 = 4;    
 
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 = 50;   
 
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(50);
}
Så tog jag din kod och gjorde om den iaf, den funkar. Så du var inte så långt borta. Flyttade bara en måsvinge och ändrade delay och debounce tiden så funka den smidigare. Håller man in en knapp så togglar den dock.

Men den funkar.
Användarvisningsbild
ochkl0620
Inlägg: 4852
Blev medlem: 9 maj 2010, 23:34:56
Skype: challe.claesson
Ort: Näsåker Västernorrland
Kontakt:

Re: Lite Arduinobekymmer...

Inlägg av ochkl0620 »

Tack! Jag tänkte köra på din kod men nu helt plötsligt skulle jag ha 6 kanaler istf 3 :P
Så jag tog o kopierade lite men då vill den inte kompilera längre.

Kod: Markera allt

sketch_may18b.ino:1:8: error: expected constructor, destructor, or type conversion before ‘(’ token
sketch_may18b.ino:2:10: error: expected constructor, destructor, or type conversion before ‘(’ token
sketch_may18b.ino:3:10: error: expected constructor, destructor, or type conversion before ‘(’ token
sketch_may18b.ino:4:10: error: expected constructor, destructor, or type conversion before ‘(’ token
sketch_may18b.ino:5:10: error: expected constructor, destructor, or type conversion before ‘(’ token
sketch_may18b.ino:6:10: error: expected constructor, destructor, or type conversion before ‘(’ token
sketch_may18b.ino:8:10: error: expected constructor, destructor, or type conversion before ‘(’ token
sketch_may18b.ino:9:10: error: expected constructor, destructor, or type conversion before ‘(’ token
sketch_may18b.ino:10:10: error: expected constructor, destructor, or type conversion before ‘(’ token
sketch_may18b.ino:11:10: error: expected constructor, destructor, or type conversion before ‘(’ token
sketch_may18b.ino:12:10: error: expected constructor, destructor, or type conversion before ‘(’ token
sketch_may18b.ino:13:10: error: expected constructor, destructor, or type conversion before ‘(’ token
sketch_may18b.ino:15:15: error: expected constructor, destructor, or type conversion before ‘(’ token
sketch_may18b.ino:16:15: error: expected constructor, destructor, or type conversion before ‘(’ token
sketch_may18b.ino:17:15: error: expected constructor, destructor, or type conversion before ‘(’ token
sketch_may18b.ino:18:15: error: expected constructor, destructor, or type conversion before ‘(’ token
sketch_may18b.ino:19:15: error: expected constructor, destructor, or type conversion before ‘(’ token
sketch_may18b.ino:20:15: error: expected constructor, destructor, or type conversion before ‘(’ token
sketch_may18b.ino:21:1: error: expected declaration before ‘}’ token
Koden i sig,,,

Kod: Markera allt

  pinMode(button1, INPUT);
  pinMode(button2, INPUT);
  pinMode(button3, INPUT);
  pinMode(button4, INPUT);
  pinMode(button5, INPUT);
  pinMode(button6, INPUT);
  
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  pinMode(led6, OUTPUT);
  
  digitalWrite(led1, led1State);
  digitalWrite(led2, led2State);
  digitalWrite(led3, led3State);
  digitalWrite(led4, led4State);
  digitalWrite(led5, led5State);
  digitalWrite(led6, led6State);
}

void loop() {
  int reading1 = digitalRead(button1);
  int reading2 = digitalRead(button2);
  int reading3 = digitalRead(button3);
  int reading4 = digitalRead(button4);
  int reading5 = digitalRead(button5);
  int reading6 = digitalRead(button6);
  
  if (reading1 != lastButton1State) {
    lastDebounceTime = millis();
  }if (reading2 != lastButton2State) {
    lastDebounceTime = millis();
  }if (reading3 != lastButton3State) {
    lastDebounceTime = millis();
  }if (reading4 != lastButton4State) {
    lastDebounceTime = millis();
  }if (reading5 != lastButton5State) {
    lastDebounceTime = millis();
  }if (reading6 != lastButton6State) {
    lastDebounceTime = millis();
  }

if ((millis() - lastDebounceTime)  > debounceDelay) {
  
  if (reading1 != button1State) {
    button1State = reading1;
    
  if (button1State == HIGH) {
    led1State = !led1State;
  }
  }
  if (reading2 != button2State) {
    button2State = reading2;
    
  if (button2State == HIGH) {
    led2State = !led2State;
  }
  }
  if (reading3 != button3State) {
    button3State = reading3;
    
  if (button3State == HIGH) {
    led3State = !led3State;
  }
  }
  if (reading4 != button4State) {
    button4State = reading4;
    
  if (button4State == HIGH) {
    led4State = !led4State;
  }
  }
  if (reading5 != button5State) {
    button5State = reading5;
    
  if (button5State == HIGH) {
    led5State = !led5State;
  }
  }
  if (reading6 != button6State) {
    button6State = reading6;
    
  if (button6State == HIGH) {
    led6State = !led6State;
  }

  }}}
  
  digitalWrite(led1, led1State);
  digitalWrite(led2, led2State);
  digitalWrite(led3, led3State);
  digitalWrite(led4, led4State);
  digitalWrite(led5, led5State);
  digitalWrite(led6, led6State);
  
  lastButton1State = reading1;
  lastButton2State = reading2;
  lastButton3State = reading3;
  lastButton4State = reading4;
  lastButton5State = reading5;
  lastButton6State = reading6;
  
}
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Lite Arduinobekymmer...

Inlägg av sodjan »

Lite svårt att läsa koden då den inte är indragen på ett
konsekvent sätt, men ska det vara "}}}" där på slutet?
Användarvisningsbild
ochkl0620
Inlägg: 4852
Blev medlem: 9 maj 2010, 23:34:56
Skype: challe.claesson
Ort: Näsåker Västernorrland
Kontakt:

Re: Lite Arduinobekymmer...

Inlägg av ochkl0620 »

Jag satte }}} på slutet men det blev ingen skillnad.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Lite Arduinobekymmer...

Inlägg av sodjan »

Har du räknat { och } ??
Stämmer antalen överens?
De måste alltid väga jämt, så att säga.

Som jag ser det så ska din loop() se ut ungefär så här:

Kod: Markera allt

void loop() {
  int reading1 = digitalRead(button1);
  int reading2 = digitalRead(button2);
  int reading3 = digitalRead(button3);
  int reading4 = digitalRead(button4);
  int reading5 = digitalRead(button5);
  int reading6 = digitalRead(button6);
 
  if (reading1 != lastButton1State) {
    lastDebounceTime = millis();
  }

  if (reading2 != lastButton2State) {
    lastDebounceTime = millis();
  }

  if (reading3 != lastButton3State) {
    lastDebounceTime = millis();
  }

  if (reading4 != lastButton4State) {
    lastDebounceTime = millis();
  }

  if (reading5 != lastButton5State) {
    lastDebounceTime = millis();
  }

  if (reading6 != lastButton6State) {
    lastDebounceTime = millis();
  }


  if ((millis() - lastDebounceTime)  > debounceDelay) {
 
    if (reading1 != button1State) {
      button1State = reading1;
   
      if (button1State == HIGH) {
        led1State = !led1State;
      }
    }

    if (reading2 != button2State) {
      button2State = reading2;
   
      if (button2State == HIGH) {
        led2State = !led2State;
      }
    }

    if (reading3 != button3State) {
      button3State = reading3;
      if (button3State == HIGH) {
        led3State = !led3State;
      }
    }

    if (reading4 != button4State) {
      button4State = reading4;
      if (button4State == HIGH) {
        led4State = !led4State;
      }
    }

    if (reading5 != button5State) {
      button5State = reading5;
      if (button5State == HIGH) {
        led5State = !led5State;
      }
    }

    if (reading6 != button6State) {
      button6State = reading6;
      if (button6State == HIGH) {
        led6State = !led6State;
      }
    }
 

    digitalWrite(led1, led1State);
    digitalWrite(led2, led2State);
    digitalWrite(led3, led3State);
    digitalWrite(led4, led4State);
    digitalWrite(led5, led5State);
    digitalWrite(led6, led6State);
 
    lastButton1State = reading1;
    lastButton2State = reading2;
    lastButton3State = reading3;
    lastButton4State = reading4;
    lastButton5State = reading5;
    lastButton6State = reading6;
 
  }
}
Användarvisningsbild
ochkl0620
Inlägg: 4852
Blev medlem: 9 maj 2010, 23:34:56
Skype: challe.claesson
Ort: Näsåker Västernorrland
Kontakt:

Re: Lite Arduinobekymmer...

Inlägg av ochkl0620 »

Vänta nu.. Jag har ju missat halva koden :bravo:
Användarvisningsbild
ochkl0620
Inlägg: 4852
Blev medlem: 9 maj 2010, 23:34:56
Skype: challe.claesson
Ort: Näsåker Västernorrland
Kontakt:

Re: Lite Arduinobekymmer...

Inlägg av ochkl0620 »

Nuså är den komplett men kompilerar likförbannat inte. Kan inte begripa varför när jag bara kopierat ursprungsblocken och döpt om med andra siffror!

Kod: Markera allt

const int button1 = 8;
const int button2 = 9;
const int button3 = 10;
const int button4 = 11;
const int button5 = 12;
const int button6 = 13;
const int led1 = 2;
const int led2 = 3; 
const int led3 = 4;
const int led4 = 5;
const int led5 = 6; 
const int led6 = 7;

int led1State = LOW;         
int button1State;             
int lastButton1State = HIGH;   
int led2State = LOW;         
int button2State;             
int lastButton2State = HIGH;   
int led3State = LOW;         
int button3State;             
int lastButton3State = HIGH;   
int led4State = LOW;         
int button4State;             
int lastButton4State = HIGH;
int led5State = LOW;         
int button5State;             
int lastButton5State = HIGH;
int led6State = LOW;         
int button6State;             
int lastButton6State = HIGH;

long lastDebounceTime = 0;
long debounceDelay = 50;

void setup() {
  
  pinMode(button1, INPUT);
  pinMode(button2, INPUT);
  pinMode(button3, INPUT);
  pinMode(button4, INPUT);
  pinMode(button5, INPUT);
  pinMode(button6, INPUT);
  
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  pinMode(led6, OUTPUT);
  
  digitalWrite(led1, led1State);
  digitalWrite(led2, led2State);
  digitalWrite(led3, led3State);
  digitalWrite(led4, led4State);
  digitalWrite(led5, led5State);
  digitalWrite(led6, led6State);
}

void loop() {
  int reading1 = digitalRead(button1);
  int reading2 = digitalRead(button2);
  int reading3 = digitalRead(button3);
  int reading4 = digitalRead(button4);
  int reading5 = digitalRead(button5);
  int reading6 = digitalRead(button6);
  
  if (reading1 != lastButton1State) {
    lastDebounceTime = millis();
  }if (reading2 != lastButton2State) {
    lastDebounceTime = millis();
  }if (reading3 != lastButton3State) {
    lastDebounceTime = millis();
  }if (reading4 != lastButton4State) {
    lastDebounceTime = millis();
  }if (reading5 != lastButton5State) {
    lastDebounceTime = millis();
  }if (reading6 != lastButton6State) {
    lastDebounceTime = millis();
  }
 

if ((millis() - lastDebounceTime)  > debounceDelay) {
  
  if (reading1 != button1State) {
    button1State = reading1;
    
  if (button1State == HIGH) {
    led1State = !led1State;
  }
  }
  if (reading2 != button2State) {
    button2State = reading2;
    
  if (button2State == HIGH) {
    led2State = !led2State;
  }
  }
  if (reading3 != button3State) {
    button3State = reading3;
    
  if (button3State == HIGH) {
    led3State = !led3State;
  }
  }
  if (reading4 != button4State) {
    button4State = reading4;
    
  if (button4State == HIGH) {
    led4State = !led4State;
  }
  }
  if (reading5 != button5State) {
    button5State = reading5;
    
  if (button5State == HIGH) {
    led5State = !led5State;
  }
  }
  if (reading6 != button6State) {
    button6State = reading6;
    
  if (button6State == HIGH) {
    led6State = !led6State;
  }

  }}}
  
  digitalWrite(led1, led1State);
  digitalWrite(led2, led2State);
  digitalWrite(led3, led3State);
  digitalWrite(led4, led4State);
  digitalWrite(led5, led5State);
  digitalWrite(led6, led6State);
  
  lastButton1State = reading1;
  lastButton2State = reading2;
  lastButton3State = reading3;
  lastButton4State = reading4;
  lastButton5State = reading5;
  lastButton6State = reading6;
  
}

Kod: Markera allt



sketch_may18b.ino:129:15: error: expected constructor, destructor, or type conversion before ‘(’ token
sketch_may18b.ino:130:15: error: expected constructor, destructor, or type conversion before ‘(’ token
sketch_may18b.ino:131:15: error: expected constructor, destructor, or type conversion before ‘(’ token
sketch_may18b.ino:132:15: error: expected constructor, destructor, or type conversion before ‘(’ token
sketch_may18b.ino:133:15: error: expected constructor, destructor, or type conversion before ‘(’ token
sketch_may18b.ino:134:15: error: expected constructor, destructor, or type conversion before ‘(’ token
sketch_may18b.ino:136:3: error: ‘lastButton1State’ does not name a type
sketch_may18b.ino:137:3: error: ‘lastButton2State’ does not name a type
sketch_may18b.ino:138:3: error: ‘lastButton3State’ does not name a type
sketch_may18b.ino:139:3: error: ‘lastButton4State’ does not name a type
sketch_may18b.ino:140:3: error: ‘lastButton5State’ does not name a type
sketch_may18b.ino:141:3: error: ‘lastButton6State’ does not name a type
sketch_may18b.ino:143:1: error: expected declaration before ‘}’ token
Miramithe
Inlägg: 1423
Blev medlem: 21 januari 2013, 17:45:10
Ort: Borlänge

Re: Lite Arduinobekymmer...

Inlägg av Miramithe »

Ja skulle precis säga att det var ju inte hela koden, men iaf satte upp det som förut räkna alla{}() och hitta ett fel ändrade och fick fram den här koden.

Kod: Markera allt

const int button1 = 8;
const int button2 = 9;
const int button3 = 10;
const int button4 = 11;
const int button5 = 12;
const int button6 = 13;
const int led1 = 2;
const int led2 = 3; 
const int led3 = 4;
const int led4 = 5;
const int led5 = 6;
const int led6 = 7;

int led1State = HIGH;         
int button1State;             
int lastButton1State = LOW;   
int led2State = HIGH;         
int button2State;             
int lastButton2State = LOW;   
int led3State = HIGH;         
int button3State;             
int lastButton3State = LOW;   
int led4State = HIGH;         
int button4State;             
int lastButton4State = LOW;  
int led5State = HIGH;         
int button5State;             
int lastButton5State = LOW;  
int led6State = HIGH;         
int button6State;             
int lastButton6State = LOW;  

long lastDebounceTime = 0;
long debounceDelay = 50;

void setup() {
  
  pinMode(button1, INPUT);
  pinMode(button2, INPUT);
  pinMode(button3, INPUT);
  pinMode(button4, INPUT);
  pinMode(button5, INPUT);
  pinMode(button6, INPUT);
  
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  pinMode(led6, OUTPUT);
  
  digitalWrite(led1, led1State);
  digitalWrite(led2, led2State);
  digitalWrite(led3, led3State);
  digitalWrite(led4, led4State);
  digitalWrite(led5, led5State);
  digitalWrite(led6, led6State);
}

void loop() {
  int reading1 = digitalRead(button1);
  int reading2 = digitalRead(button2);
  int reading3 = digitalRead(button3);
  int reading4 = digitalRead(button4);
  int reading5 = digitalRead(button5);
  int reading6 = digitalRead(button6);
  
  if (reading1 != lastButton1State) {
    lastDebounceTime = millis();
  }if (reading2 != lastButton2State) {
    lastDebounceTime = millis();
  }if (reading3 != lastButton3State) {
    lastDebounceTime = millis();
  }if (reading4 != lastButton4State) {
    lastDebounceTime = millis();
  }if (reading5 != lastButton5State) {
    lastDebounceTime = millis();
  }if (reading6 != lastButton6State) {
    lastDebounceTime = millis();
  }

if ((millis() - lastDebounceTime)  > debounceDelay) {
  
  if (reading1 != button1State) {
    button1State = reading1;
    
  if (button1State == HIGH) {
    led1State = !led1State;
  }
  }
  if (reading2 != button2State) {
    button2State = reading2;
    
  if (button2State == HIGH) {
    led2State = !led2State;
  }
  }
  if (reading3 != button3State) {
    button3State = reading3;
    
  if (button3State == HIGH) {
    led3State = !led3State;
  }
  }
  if (reading4 != button4State) {
    button4State = reading4;
    
  if (button4State == HIGH) {
    led4State = !led4State;
  }
  }
  if (reading5 != button5State) {
    button5State = reading5;
    
  if (button5State == HIGH) {
    led5State = !led5State;
  }
  }
  if (reading6 != button6State) {
    button6State = reading6;
    
  if (button6State == HIGH) {
    led6State = !led6State;
  }

  }}
  
  digitalWrite(led1, led1State);
  digitalWrite(led2, led2State);
  digitalWrite(led3, led3State);
  digitalWrite(led4, led4State);
  digitalWrite(led5, led5State);
  digitalWrite(led6, led6State);
  
  lastButton1State = reading1;
  lastButton2State = reading2;
  lastButton3State = reading3;
  lastButton4State = reading4;
  lastButton5State = reading5;
  lastButton6State = reading6;
  
}
Den funkar för mig, testa och se, ska snygga till den oxå, för nu är den typ oläslig.
Men det är mitt fel och inte TS!

EDIT:

Här är den lite mer lättläst.

Kod: Markera allt

const int button1 = 8;
const int button2 = 9;
const int button3 = 10;
const int button4 = 11;
const int button5 = 12;
const int button6 = 13; //Alla knapparna numererade 1-6 och vilka pinnar dom går till på arduinon.

const int led1 = 2;
const int led2 = 3; 
const int led3 = 4;
const int led4 = 5;
const int led5 = 6;
const int led6 = 7; //Alla LED numrerade 1-6 och vilka pinnar dom går till på arduinon.

int led1State = HIGH;         
int button1State;             
int lastButton1State = LOW;   
int led2State = HIGH;         
int button2State;             
int lastButton2State = LOW;   
int led3State = HIGH;         
int button3State;             
int lastButton3State = LOW;   
int led4State = HIGH;         
int button4State;             
int lastButton4State = LOW;  
int led5State = HIGH;         
int button5State;             
int lastButton5State = LOW;  
int led6State = HIGH;         
int button6State;             
int lastButton6State = LOW; //variabler som sparas och läses vid varje loop. 

long lastDebounceTime = 0;
long debounceDelay = 50; //debounce så inte den blinkar när man tycker på en knapp, då studsar signalen mellan High och low snabbt.

void setup() {
  
  pinMode(button1, INPUT);
  pinMode(button2, INPUT);
  pinMode(button3, INPUT);
  pinMode(button4, INPUT);
  pinMode(button5, INPUT);
  pinMode(button6, INPUT); //sätter alla knappar till ingångar
  
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  pinMode(led6, OUTPUT); //sätter alla LED till utgångar
  
  digitalWrite(led1, led1State);
  digitalWrite(led2, led2State);
  digitalWrite(led3, led3State);
  digitalWrite(led4, led4State);
  digitalWrite(led5, led5State);
  digitalWrite(led6, led6State); // sätter LED high or low i början beroende på ledstate, i denna börjar dom HIGH alltså på. 
}

void loop() {
  int reading1 = digitalRead(button1);
  int reading2 = digitalRead(button2);
  int reading3 = digitalRead(button3);
  int reading4 = digitalRead(button4);
  int reading5 = digitalRead(button5);
  int reading6 = digitalRead(button6); 
  
  if (reading1 != lastButton1State) {
    lastDebounceTime = millis();
  }if (reading2 != lastButton2State) {
    lastDebounceTime = millis();
  }if (reading3 != lastButton3State) {
    lastDebounceTime = millis();
  }if (reading4 != lastButton4State) {
    lastDebounceTime = millis();
  }if (reading5 != lastButton5State) {
    lastDebounceTime = millis();
  }if (reading6 != lastButton6State) {
    lastDebounceTime = millis(); 
  }

if ((millis() - lastDebounceTime)  > debounceDelay) {
  
  
  if (reading1 != button1State) {
    button1State = reading1;
    
  if (button1State == HIGH) {
    led1State = !led1State;
  }
 }
 
  if (reading2 != button2State) {
    button2State = reading2;
    
  if (button2State == HIGH) {
    led2State = !led2State;
  }
 }
 
  if (reading3 != button3State) {
    button3State = reading3;
    
  if (button3State == HIGH) {
    led3State = !led3State;
  }
 }
 
  if (reading4 != button4State) {
    button4State = reading4;
    
  if (button4State == HIGH) {
    led4State = !led4State;
  }
 }
 
  if (reading5 != button5State) {
    button5State = reading5;
    
  if (button5State == HIGH) {
    led5State = !led5State;
  }
 }
 
  if (reading6 != button6State) {
    button6State = reading6;
    
  if (button6State == HIGH) {
    led6State = !led6State;
  }
 }
 
}                                      //kortfattat läser den av om en knapp trycks ned och den är neddtyckt under debounce tiden, då ändrar den så om LED är på stängs den av och vice versa. 
  
  digitalWrite(led1, led1State);
  digitalWrite(led2, led2State);
  digitalWrite(led3, led3State);
  digitalWrite(led4, led4State);
  digitalWrite(led5, led5State);
  digitalWrite(led6, led6State); //tänder eller släcker LED beroende på vad ledstate är. (high or low)
  
  lastButton1State = reading1;
  lastButton2State = reading2;
  lastButton3State = reading3;
  lastButton4State = reading4;
  lastButton5State = reading5;
  lastButton6State = reading6;
  
}
Senast redigerad av Miramithe 18 maj 2014, 13:43:50, redigerad totalt 1 gång.
Skriv svar