Hjälp med kod för Arduino Uno

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
emilrowland
Inlägg: 145
Blev medlem: 20 april 2011, 19:14:44
Ort: Gnesta

Hjälp med kod för Arduino Uno

Inlägg av emilrowland »

Hej jag behöver hjälp med den här koden för när jag ska bygga den och föra över den till min Arduino Uno så får jag massvis med felmedelanden. Så jag undrar om någon kan se vad jag saknar i min kod.

Koden

Kod: Markera allt

Const int button = 2;
Const int motor = 4;

int buttonState = 0;
int presed = 0;
  
void setup(){
  pinMode(motor, OUTPUT);
  pinMode(button, INPUT);
}

void loop(){
  int notpresed = 0;
  buttonState = digitalRead(button);

  if(buttonState == HIGH){
    presed = 1;
    notpresed = 1;
  }
  else{
    notpresed = 0;
  }

  if(presed == 1){
    digitalWrite(motor, HIGH);
  }
  else(){
    digitalWrite(motor, LOW);
  }
  if(buttonstate == HIGH && presed = 1 && notpresed = 0){
    presed = 0;
  }

}
Felmedelanden

Kod: Markera allt

motor:1: error: expected constructor, destructor, or type conversion before 'int'
motor:2: error: expected constructor, destructor, or type conversion before 'int'
motor.cpp: In function 'void setup()':
motor:8: error: 'motor' was not declared in this scope
motor:9: error: 'button' was not declared in this scope
motor.cpp: In function 'void loop()':
motor:14: error: 'button' was not declared in this scope
motor:25: error: 'motor' was not declared in this scope
motor:27: error: expected primary-expression before ')' token
motor:27: error: expected `;' before '{' token
motor:30: error: 'buttonstate' was not declared in this scope
motor:30: error: lvalue required as left operand of assignment
Edit: Tänkte bara säga att det här är mitt första projekt i Arduino.
Senast redigerad av emilrowland 1 mars 2012, 22:54:58, redigerad totalt 1 gång.
snigelen
Inlägg: 815
Blev medlem: 8 maj 2009, 11:02:14
Ort: Lund

Re: Hjälp med kod för Arduino Uno

Inlägg av snigelen »

Prova med const i stället för Const.

Kod: Markera allt

if(buttonstate == HIGH && presed = 1 && notpresed = 0)
Var noggran med == (lika med) och = (tilldelning). Det blir konstiga resultat annars. :)
Senast redigerad av snigelen 1 mars 2012, 22:53:48, redigerad totalt 1 gång.
emilrowland
Inlägg: 145
Blev medlem: 20 april 2011, 19:14:44
Ort: Gnesta

Re: Hjälp med kod för Arduino Uno

Inlägg av emilrowland »

Tack men jag har fortfarande de här medelandena kvar.

Kod: Markera allt

motor.cpp: In function 'void loop()':
motor:27: error: expected primary-expression before ')' token
motor:27: error: expected `;' before '{' token
motor:30: error: 'buttonstate' was not declared in this scope
motor:30: error: lvalue required as left operand of assignment
Användarvisningsbild
ElectricMan
Inlägg: 4874
Blev medlem: 21 februari 2007, 20:22:48
Skype: ElectricManSwe
Ort: Luleå
Kontakt:

Re: Hjälp med kod för Arduino Uno

Inlägg av ElectricMan »

Du måste skriva const, med litet c.
Sen hade du glömt en slutparentes för void loop.

Kod: Markera allt

const int button = 2;
const int motor = 4;

int buttonState = 0;
int presed = 0;
  
void setup(){
  pinMode(motor, OUTPUT);
  pinMode(button, INPUT);
}

void loop(){
  int notpresed = 0;
  buttonState = digitalRead(button);

  if(buttonState == HIGH){
    presed = 1;
    notpresed = 1;
  }
  else{
    notpresed = 0;
  }
}
snigelen
Inlägg: 815
Blev medlem: 8 maj 2009, 11:02:14
Ort: Lund

Re: Hjälp med kod för Arduino Uno

Inlägg av snigelen »

else är ingen funktion, dvs else() är fel och else är rätt. Läs om mitt förra svar. Jag ändrade lite medans du svarade.
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Hjälp med kod för Arduino Uno

Inlägg av sodjan »

> else {
...
> else() {

Ska det inte vara enbart på det ena eller det andra sättet ?

Det där som står efter "motor:nn", är det radnummer ?
Varför inte klippa in de aktuella raderna som felmeddelandeet syftar på också?
Och när du kollade dessa rader, var det inget som "stack ut" ?
emilrowland
Inlägg: 145
Blev medlem: 20 april 2011, 19:14:44
Ort: Gnesta

Re: Hjälp med kod för Arduino Uno

Inlägg av emilrowland »

Edit: Jag har inte en så länge förståt hur programt fungerar så jag vet faktiskt inte vad felmedelanderna betyder.

Tack så mycket för all hjälp jag har fått av er.
Senast redigerad av emilrowland 1 mars 2012, 23:01:53, redigerad totalt 1 gång.
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Hjälp med kod för Arduino Uno

Inlägg av sodjan »

Jaha !? Och?
Fungerar det nu?
emilrowland
Inlägg: 145
Blev medlem: 20 april 2011, 19:14:44
Ort: Gnesta

Re: Hjälp med kod för Arduino Uno

Inlägg av emilrowland »

ja det funkar nu.
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Hjälp med kod för Arduino Uno

Inlägg av sodjan »

> Edit: Jag har inte en så länge förståt hur programt fungerar så jag vet faktiskt inte vad felmedelanderna betyder.

Och vad felmeddelanderna betyder framgick inte av dokumentationen?
Var det något speciellt i dokumentationen som var otydligt?

Ja, jag utgick ju från att en pryl som Arduino har en komplett dokumentation, men nu när
jag letar så kan jag faktiskt inte hitta något vettigt på arduno.cc, så jag vet inte riktigt.
Glöm det hela bara... :-)
snigelen
Inlägg: 815
Blev medlem: 8 maj 2009, 11:02:14
Ort: Lund

Re: Hjälp med kod för Arduino Uno

Inlägg av snigelen »

Troll.
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Hjälp med kod för Arduino Uno

Inlägg av sodjan »

Inte alls. Det är helt avgörande att kunna slå upp felmeddelanden!
Användarvisningsbild
Bosen
Inlägg: 1753
Blev medlem: 18 juli 2005, 10:56:31
Ort: Karl Gustav, Varberg
Kontakt:

Re: Hjälp med kod för Arduino Uno

Inlägg av Bosen »

Sodjan har rätt. Arduino är väldigt svårt att slå upp felkoder till. Jag hoppas det blir bättring på det i framtiden.
Vad du, emilrowland, bör tänka på annars är att alltid börja uppifrån i felmeddelande-listan, det är mycket lättare att hitta felen då.

[quote="sodjan
Det där som står efter "motor:nn", är det radnummer ?
quote]
Ja det är det, men det finns ingen dokumetntation som talar om det. Men det kan vara bra för dig, emilrowland, att veta att det är radnummer, för då är det lättare för dig att hitta felen.
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: Hjälp med kod för Arduino Uno

Inlägg av jesse »

Vad jag tycker man ska göra, om man är osäker på att koda, eller rent generellt, är att man inte skriver hela sidor med kod åt gången utan att provkompilera med jämna mellanrum.

Problemet med stora mängder kod är att det kan fattas ett tecken på ett ställe som ger upphov till massor av fel i resten av koden som verkar väldigt konstiga och som till synes inte alls har att göra med det ursprungliga felet.

Och bygg koden 'utifrån och in' , inte uppifrån och ner, dvs. ...

Kod: Markera allt

void main (void) {
    // todo: mitt program
}
och sedan

Kod: Markera allt

void main (void) {
    // mitt program
    // init
    init();
    while(1) {
        // main loop
        if (A) {
            // todo A

        }
        else {
            // todo !A

        }
    }
}
Då går det alltid att kompilera även om man inte är färdig med programmet.
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Hjälp med kod för Arduino Uno

Inlägg av sodjan »

> Och bygg koden 'utifrån och in' ,

Ja, när det gäller den övergripande *designen* på applikationen
så är det ju lämpligt att göra så.

När det gäller *tester* så gör man med fördel precis tvärtom. D.v.s
att man börjar med att testa detaljerna, för att sedan sätta in
dessa delar i det hela när de fungerar. De flesta applikationer har
någon liten del som är ny eller som man inte har gjort tidigare. Se
till att man behärskar dom innan det vävs in i en större helhet.

Att ha en stor applikation där man har problem på detaljnivå är inte
speciellt lyckat och det är svårt att felsöka. Om man nu ändå har gjort
så, så får man börja plocka detaljerna ur helheten och fixa test-case...
Skriv svar