Lade delay 20 på slutet, det vart bättre
Lite Arduinobekymmer...
- Klas-Kenny
- Inlägg: 11933
- Blev medlem: 17 maj 2010, 19:06:14
- Ort: Växjö/Alvesta
Re: Lite Arduinobekymmer...
Du har lagt lite lustiga måsvingar hit och dit. 
Följer man den första if-satsen så börjar det bra, men sedan så avslutar du den med en {
Borde väl vara } där, just för att avsluta if-satsen och inte öppna ett nytt block. Just nu så ligger liksom resten utav koden inom den första if-satsen.
Sen så ser den andra if-satsen bra ut.
Sen före den sista if-satsen, så har du en ny {
Det enda den gör där är att öppna ett nytt block, vilket det inte finns någon anledning till där. Dock påverkar det inte precis funktionen något som den ligger, men den är fullkomligt verkningslös.
Sen så gissar jag på att du fyllt på med } i slutet tills kompilatorn blivit nöjd?
Ta bort/ändra de två jag nämnde, så kan du ta bort två av dem på slutet.
Följer man den första if-satsen så börjar det bra, men sedan så avslutar du den med en {
Borde väl vara } där, just för att avsluta if-satsen och inte öppna ett nytt block. Just nu så ligger liksom resten utav koden inom den första if-satsen.
Sen så ser den andra if-satsen bra ut.
Sen före den sista if-satsen, så har du en ny {
Sen så gissar jag på att du fyllt på med } i slutet tills kompilatorn blivit nöjd?
Ta bort/ändra de två jag nämnde, så kan du ta bort två av dem på slutet.
- ochkl0620
- Inlägg: 4854
- Blev medlem: 9 maj 2010, 23:34:56
- Skype: challe.claesson
- Ort: Näsåker Västernorrland
- Kontakt:
Re: Lite Arduinobekymmer...
Hmm, ja jag vet ifan vad jag gör 
Jag ändrade lite och då vägrar den kompilera
Om det inte är någon större ansträngning så får du väldigt gärna rätta till det
Jag börjar dö litegranna nu 
Jag ändrade lite och då vägrar den kompilera
Om det inte är någon större ansträngning så får du väldigt gärna rätta till det
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);- ochkl0620
- Inlägg: 4854
- Blev medlem: 9 maj 2010, 23:34:56
- Skype: challe.claesson
- Ort: Näsåker Västernorrland
- Kontakt:
Re: Lite Arduinobekymmer...
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
Jag dör lite mer .....
- Klas-Kenny
- Inlägg: 11933
- Blev medlem: 17 maj 2010, 19:06:14
- Ort: Växjö/Alvesta
Re: Lite Arduinobekymmer...
Det här borde kompilera i alla fall. Tog bort en } efter time = millis(); och lade till en allra sist.
Såg dock nu när jag kollade vad koden faktiskt gör att du har en liten miss, gällande just time, du kan ju klura lite på vad jag menar innan jag bjuder på svaret..
Såg dock nu när jag kollade vad koden faktiskt gör att du har en liten miss, gällande just time, du kan ju klura lite på vad jag menar innan jag bjuder på svaret..
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);
}- ochkl0620
- Inlägg: 4854
- Blev medlem: 9 maj 2010, 23:34:56
- Skype: challe.claesson
- Ort: Näsåker Västernorrland
- Kontakt:
Re: Lite Arduinobekymmer...
Tack!
Nu ser det vettigare ut och funkar vettigare!
Hmm time....
Nu ser det vettigare ut och funkar vettigare!
Hmm time....
Kod: Markera allt
long time = 0;
long debounce = 200; - ochkl0620
- Inlägg: 4854
- Blev medlem: 9 maj 2010, 23:34:56
- Skype: challe.claesson
- Ort: Näsåker Västernorrland
- Kontakt:
Re: Lite Arduinobekymmer...
Ska det vara såhär?
Edit. Nej då kompilerar den ju inte...
Kod: Markera allt
long time0 = 0;
long debounce0 = 200;
long time1 = 0;
long debounce1 = 200;
long time2 = 0;
long debounce2 = 200;- Klas-Kenny
- Inlägg: 11933
- Blev medlem: 17 maj 2010, 19:06:14
- Ort: Växjö/Alvesta
Re: Lite Arduinobekymmer...
Nu är du på rätt spår!
Anledningen till att den inte kompilerar misstänker jag är för att du inte längre har en variabel som heter time, men du har kvar just den variabeln senare i koden.
Det du vill göra är att i varje if-sats, så sätter du motsvarande time-variabel (time0, time1 eller time2) till millis(). Och så tar du bort den nuvarande.
Edit; dock så behöver du inte ha tre olika debounce, eftersom att du aldrig ändrar på den och den kan få vara samma för alla.
Anledningen till att den inte kompilerar misstänker jag är för att du inte längre har en variabel som heter time, men du har kvar just den variabeln senare i koden.
Det du vill göra är att i varje if-sats, så sätter du motsvarande time-variabel (time0, time1 eller time2) till millis(). Och så tar du bort den nuvarande.
Edit; dock så behöver du inte ha tre olika debounce, eftersom att du aldrig ändrar på den och den kan få vara samma för alla.
- ochkl0620
- Inlägg: 4854
- Blev medlem: 9 maj 2010, 23:34:56
- Skype: challe.claesson
- Ort: Näsåker Västernorrland
- Kontakt:
Re: Lite Arduinobekymmer...
Naah, jag är lite trögfattad o nu har jag sabbat koden igen
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);
}- Klas-Kenny
- Inlägg: 11933
- Blev medlem: 17 maj 2010, 19:06:14
- Ort: Växjö/Alvesta
Re: Lite Arduinobekymmer...
Till att börja med så glömmer du deklarera variablerna i början.. 
Sen så i argumenten för if-satserna så måste du även kolla "rätt" time-variabel.
så tex.
if (reading0 == HIGH && previous0 == LOW && millis() - time > debounce)
måste bli
if (reading0 == HIGH && previous0 == LOW && millis() - time0 > debounce)
Sen så i argumenten för if-satserna så måste du även kolla "rätt" time-variabel.
så tex.
if (reading0 == HIGH && previous0 == LOW && millis() - time > debounce)
måste bli
if (reading0 == HIGH && previous0 == LOW && millis() - time0 > debounce)
- ochkl0620
- Inlägg: 4854
- Blev medlem: 9 maj 2010, 23:34:56
- Skype: challe.claesson
- Ort: Näsåker Västernorrland
- Kontakt:
Re: Lite Arduinobekymmer...
Deklarera?
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?
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?
Re: Lite Arduinobekymmer...
> Till att börja med så glömmer du deklarera variablerna i början..
Får man inget felmeddelande som säger "Undeclared variable..." eller liknande?
Och rent generellt, vad *blir* det för felmeddelanden då det inte kompilerar?
> ...o nu har jag sabbat koden igen
Hur vet du att du har gjort det?
Klagar kompilatorn? Eller fungerar det inte?
Får man inget felmeddelande som säger "Undeclared variable..." eller liknande?
Och rent generellt, vad *blir* det för felmeddelanden då det inte kompilerar?
> ...o nu har jag sabbat koden igen
Hur vet du att du har gjort det?
Klagar kompilatorn? Eller fungerar det inte?
- Klas-Kenny
- Inlägg: 11933
- Blev medlem: 17 maj 2010, 19:06:14
- Ort: Växjö/Alvesta
Re: Lite Arduinobekymmer...
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?
- ochkl0620
- Inlägg: 4854
- Blev medlem: 9 maj 2010, 23:34:56
- Skype: challe.claesson
- Ort: Näsåker Västernorrland
- Kontakt:
Re: Lite Arduinobekymmer...
Nu kompilerar den,
Nu nästa problem, när arduinon startar så lyser det, det ska det inte så jag ändrade något HIGH/LOW men då bara blinkar det. Det gör det även när den tänds automatiskt om man håller in en knapp. Sorry jävla luddiga svar jag ska sova
Nu nästa problem, när arduinon startar så lyser det, det ska det inte så jag ändrade något HIGH/LOW men då bara blinkar det. Det gör det även när den tänds automatiskt om man håller in en knapp. Sorry jävla luddiga svar jag ska sova
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);
}Re: Lite Arduinobekymmer...
roligt problem, nu fick jag lov att ta fram arduino lådan och ska börja koppla lite.
Men när jag sitter och letar på grejjor kom jag att tänka på, hur har du kopplat hårdvaran?
Men när jag sitter och letar på grejjor kom jag att tänka på, hur har du kopplat hårdvaran?
