Sida 1 av 2

Hjälp med kod för Arduino Uno

Postat: 1 mars 2012, 22:46:16
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.

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

Postat: 1 mars 2012, 22:50:03
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. :)

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

Postat: 1 mars 2012, 22:52:31
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

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

Postat: 1 mars 2012, 22:56:27
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;
  }
}

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

Postat: 1 mars 2012, 22:56:42
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.

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

Postat: 1 mars 2012, 22:57:26
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" ?

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

Postat: 1 mars 2012, 23:00:03
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.

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

Postat: 1 mars 2012, 23:00:40
av sodjan
Jaha !? Och?
Fungerar det nu?

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

Postat: 1 mars 2012, 23:02:09
av emilrowland
ja det funkar nu.

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

Postat: 1 mars 2012, 23:20:28
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... :-)

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

Postat: 1 mars 2012, 23:25:55
av snigelen
Troll.

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

Postat: 1 mars 2012, 23:29:37
av sodjan
Inte alls. Det är helt avgörande att kunna slå upp felmeddelanden!

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

Postat: 2 mars 2012, 05:43:44
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.

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

Postat: 2 mars 2012, 17:28:08
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.

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

Postat: 2 mars 2012, 17:36:19
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...