Arduino Mega kompiliert net

hey irgendwas stimmt net und ich finde den fehler einfach nicht... komischer weiße wird folgendes Progrram für den Uno kompiliert, für den Mega nicht..

char CMD = 0;
boolean LED = false;
boolean STAT = false;
void Setup () {
  pinMode (2,INPUT);
  pinMode (13,OUTPUT);
  pinMode (12,OUTPUT);
  Serial1.begin (9600);
}
void loop (){
    CMD = Serial.read ();
  STAT = digitalRead (2);
   digitalWrite (12,LED);
  if ( STAT == HIGH){
    digitalWrite (13,HIGH);
  }
  else {
    digitalWrite (13,LOW);
  }
  if (CMD == "ein"){
    LED = HIGH;
  }
  if (CMD == "aus"){
    LED = LOW;
    }
  }

Welche Fehlermeldung? Aktiviere die Meldungen.

Du vergleichst da Äpfel mit Birnen.

komischer weiße wird folgendes Progrram für den Uno kompiliert, für den Mega nicht..

Es ist umgekehrt!

Denn der UNO kennt kein Serial1

Da gibt es sicher eine Fehlermeldung, die du uns posten solltest.

du musst setup() klein schreiben.

Dann gehts

(zumindest für den Mega)

Du initialisierst Serial1 und willst von Serial lesen.

Gruß Tommy

guntherb: du musst setup() klein schreiben.

Dann gehts

(zumindest für den Mega)

Ach schon wieder eine defekte Tastatur.

Selbst wenn das kompiliert wird es nicht funktionieren

char CMD = 0;

...

CMD = Serial.read ();

...

if (CMD == "ein")

Ein char ist ein Zeichen. Wie willst du da mit String Literalen vergleichen? Du kannst 'a' und 'e' als Kommandos verwenden. Oder '0' und '1'

P.S:: Großbuchstaben sind normal für Konstanten. Nicht für Variablen

Wer will, kriegt:

warning: ISO C++ forbids comparison between pointer and integer [-fpermissive]

Serial.read() liefert auch niemals den Wert "ein", sondern einen Wert zwischen -1 und 255.

ich habe ja nicht gesagt, dass es funktioniert. Nur dass es dann kompiliert.

vielleicht kann der TO ja ein paar fehler selbst finden.

michael_x: Serial.read() liefert auch niemals den Wert "ein", sondern einen Wert zwischen -1 und 255.

Glaube ich Dir wirklich nicht !! Grüße Uwe

Aber ich glaube es.

Nein! Ich bin mir sogar sicher, dass michael_x recht hat.

einen Wert zwischen -1 und 255. Inklusive der -1 und der 255, Ja!

Wie kommt ihr auf -1? Der Wertebereich eines Byte ist 0 bis 255.

Weil Serial.read() kein Byte liefert, sondern einen int!

-1 sagt: "War nix zum lesen da"

Also das C-übliche -1 Fehlermeldung einer Funktion?. Grüße Uwe

Genau das.

Uwe, anderen hätte ich den Tip gegeben: Guckst du Doku zu Serial.read !

Da steht neuerdings sogar der Datentyp des Rückgabewerts ( int ) drin.
Gar nicht so schlecht, dieses Arduino-Zeug. :wink: