Go Down

Topic: Arduino Serial.read Problem (Read 272 times) previous topic - next topic

danny385

Hallo Community. Ich bin neu hier. Heiße Daniel und bin 23 Jahre alt.

Ich habe bereits in der vergangenheit mit AVR 8bit Mikros gearbeitet und diese immer in Assembler programmiert. Nun habe ich mir einen Arduino besorgt(UNO) dar es sehr viele Libs gibt und vieles einfach zu lösen zu sein scheint.

Nun habe ich einmal begonnen und wollte folgendes realisieren:

Der Arduino empfängt über die serielle Schnittstelle werte (1-5) und soll dem endsprechend Motoren schalten... Der Grundsatz scheint leicht, auch wäre es in ASM keine große Problemstellung, doch falle ich mit den Sketch jetzt schon das erste mal auf die F*****:

Der Arduino sendet über die serielle andauernd den Wert 297, und reagiert auf keines meiner Commandos.

Hier der Code

Code: [Select]
#include <AFMotor.h>

AF_DCMotor links(1,MOTOR12_8KHZ);
AF_DCMotor rechts(2,MOTOR12_8KHZ);
int command="1";
void setup() {
Serial.begin(9600);
Serial.println("Test");

}
void loop() {
if (Serial.available() > 0) {
  command = Serial.read();
  Serial.print("Kommando: ");
  Serial.println(command);
}
if(command=="1") {
  Serial.println(command);
  links.run(RELEASE);
  rechts.run(RELEASE);
  delay(100);
  links.run(FORWARD);
  rechts.run(FORWARD);
}
if(command=="2") {
  Serial.println(command);
  links.run(RELEASE);
  rechts.run(RELEASE);
  delay(100);
  links.run(BACKWARD);
  rechts.run(BACKWARD);
}

if(command=="3") {
  Serial.println(command);
  links.run(RELEASE);
  rechts.run(RELEASE);
}
if(command=="4") {
  Serial.println(command);
  links.run(RELEASE);
  rechts.run(RELEASE);
  delay(100);
  links.run(BACKWARD);
  rechts.run(FORWARD);
}
if(command=="5") {
  Serial.println(command);
  links.run(RELEASE);
  rechts.run(RELEASE);
  delay(100);
  links.run(FORWARD);
  rechts.run(BACKWARD);
}
}



Tommy56

Code: [Select]
command=="1" --> command=='1'

Mach Dich mal schlau was der Unterschied zwischen '1' und "1" ist.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

uxomm

Ich glaube, da ist eine geschwungene Klammer nicht an der richtigen Stelle:
Code: [Select]
void loop() {
  if (Serial.available() > 0) {
    command = Serial.read();
    Serial.print("Kommando: ");
    Serial.println(command);
//  }        //  <<-------- ich glaube, diese Klammer gehört hier nicht hin .....                         
    if (command == '1') {
      Serial.println(command);
      links.run(RELEASE);
      rechts.run(RELEASE);
      delay(100);
      links.run(FORWARD);
      rechts.run(FORWARD);
    }
    if (command == '2') {
      Serial.println(command);
      links.run(RELEASE);
      rechts.run(RELEASE);
      delay(100);
      links.run(BACKWARD);
      rechts.run(BACKWARD);
    }

    if (command == '3') {
      Serial.println(command);
      links.run(RELEASE);
      rechts.run(RELEASE);
    }
    if (command == '4') {
      Serial.println(command);
      links.run(RELEASE);
      rechts.run(RELEASE);
      delay(100);
      links.run(BACKWARD);
      rechts.run(FORWARD);
    }
    if (command == '5') {
      Serial.println(command);
      links.run(RELEASE);
      rechts.run(RELEASE);
      delay(100);
      links.run(FORWARD);
      rechts.run(BACKWARD);
    }
  }       // <<------  sondern erst hier gehört sie hin
}
Always decouple electronic circuitry.

Go Up