Anfänger Fehlermeldung

Guten Abend,
ich habe mich heute an mein erstes Projekt mit Arduino gesetzt und versucht die Ampelschaltung nach dem video nachzubauen: https://www.youtube.com/watch?v=jlq2f7Qbeao. Jetzt habe ich das so nachgebaut und den Code kopiert:

int schalter = 0; //Anlegen der Variable Schalter

void setup() {
  // put your setup code here, to run once:

pinMode(10,OUTPUT); //Digitalpin 10 wird als Output festgelegt
pinMode(11,OUTPUT); //Digitalpin 11 wird als Ouptut festgelegt
pinMode(12,OUTPUT); //Digitalpin 12 wird als Output festgelegt
pinMode(3,INPUT); //Digitalpin wird als Input festgelegt

}

void loop() {
  // put your main code here, to run repeatedly:

schalter=digitalRead(3); //Der Wert, der an Pin 3 eingelesen wird, wird in schalter geschrieben

if(schalter==LOW)( //Abfrge der Bedingung, ob an Pin ein LOW Signal vorliegt => Taster nicht gedrückt

//Ampel rot
digitalWrite(12,HIGH); //Pin 12 gibt HIGH aus => rote LED leuchtet
digitalWrite(11,LOW); //Pin 11 gibt LOW aus => gelbe LED leuchtet
digitalWrite(10,LOW); //Pin10 gibt LOW aus => rote LED leichtet
delay(250); //Verzögerung von 250ms
)


else( //=> Taster ist gedrückt, es liegt HIGH ans Pin 3 vor

  //Ampel rot
digitalWrite(12,HIGH); //Pin 12 gibt HIGH aus => rote LED leuchtet
digitalWrite(11,LOW); //Pin 11 gibt LOW aus => gelbe LED leuchtet
digitalWrite(10,LOW); //Pin10 gibt LOW aus => rote LED leichtet
delay(250); //Verzögerung von 250ms


  //Ampel gelb
digitalWrite(12,LOW); 
digitalWrite(11,HIGH); 
digitalWrite(10,LOW);
delay(4000); //Verzögerung von 4000ms


 //Ampel grün
digitalWrite(12,LOW); 
digitalWrite(11,LOW); 
digitalWrite(10,HIGH); 
delay(10000); //Verzögerung von 10000ms

)

}

Nun bekomme ich aber die ganzen Zeit diesen Fehlercode:

/private/var/folders/80/43nqp1bx1ws8k7k75t14rqlr0000gn/T/.arduinoIDE-unsaved202519-2859-1a4sbs2.qhao/sketch_feb9c/sketch_feb9c.ino: In function 'void loop()':
/private/var/folders/80/43nqp1bx1ws8k7k75t14rqlr0000gn/T/.arduinoIDE-unsaved202519-2859-1a4sbs2.qhao/sketch_feb9c/sketch_feb9c.ino:21:22: error: expected ')' before ';' token
 digitalWrite(12,HIGH); //Pin 12 gibt HIGH aus => rote LED leuchtet
                      ^
/private/var/folders/80/43nqp1bx1ws8k7k75t14rqlr0000gn/T/.arduinoIDE-unsaved202519-2859-1a4sbs2.qhao/sketch_feb9c/sketch_feb9c.ino:25:1: error: expected primary-expression before ')' token
 )
 ^
/private/var/folders/80/43nqp1bx1ws8k7k75t14rqlr0000gn/T/.arduinoIDE-unsaved202519-2859-1a4sbs2.qhao/sketch_feb9c/sketch_feb9c.ino:49:1: error: expected primary-expression before ')' token
 )
 ^

exit status 1

Compilation error: expected ')' before ';' token.

Bin ziemlich überfordert und finde den Fehler nicht. Ich würde mich über jede Hilfe freuen.
Mit freundlichen Grüßen,
Julian

Auch der if Anweisungsblock möchte geschweifte statt runde Klammern um sich herum haben.

Tipp:
Nicht Video schauen, sondern Buch lesen.

Es muss wie folgt aussehen:

int schalter = 0; //Anlegen der Variable Schalter

void setup() {
  // put your setup code here, to run once:

  pinMode(10, OUTPUT); //Digitalpin 10 wird als Output festgelegt
  pinMode(11, OUTPUT); //Digitalpin 11 wird als Ouptut festgelegt
  pinMode(12, OUTPUT); //Digitalpin 12 wird als Output festgelegt
  pinMode(3, INPUT); //Digitalpin wird als Input festgelegt

}

void loop() {
  schalter = digitalRead(3); //Der Wert, der an Pin 3 eingelesen wird, wird in schalter geschrieben

  if (schalter == LOW) { //Abfrge der Bedingung, ob an Pin ein LOW Signal vorliegt => Taster nicht gedrückt
    //Ampel rot
    digitalWrite(12, HIGH); //Pin 12 gibt HIGH aus => rote LED leuchtet
    digitalWrite(11, LOW); //Pin 11 gibt LOW aus => gelbe LED leuchtet
    digitalWrite(10, LOW); //Pin10 gibt LOW aus => rote LED leichtet
    delay(250); //Verzögerung von 250ms
  } else {  //=> Taster ist gedrückt, es liegt HIGH ans Pin 3 vor
    //Ampel rot
    digitalWrite(12, HIGH); //Pin 12 gibt HIGH aus => rote LED leuchtet
    digitalWrite(11, LOW); //Pin 11 gibt LOW aus => gelbe LED leuchtet
    digitalWrite(10, LOW); //Pin10 gibt LOW aus => rote LED leichtet
    delay(250); //Verzögerung von 250ms

    //Ampel gelb
    digitalWrite(12, LOW);
    digitalWrite(11, HIGH);
    digitalWrite(10, LOW);
    delay(4000); //Verzögerung von 4000ms

    //Ampel grün
    digitalWrite(12, LOW);
    digitalWrite(11, LOW);
    digitalWrite(10, HIGH);
    delay(10000); //Verzögerung von 10000ms
  }
}

Wie schon geschrieben, Du hast die "falsche" Art von Klammern für die Anweisungsblöcke der IF-ELSE Anweisung verwendet.

Hallo meter12

Hertzlich Willkommen im besten Arduinoforum der Welt :slight_smile:

Deine I/O Pins haben gerne aussagekräftige Namen, damit das Programm lesbarer wird.

@meter12

wenn du dir angewöhnst Pins gemäß ihrer Verwendung zu benennen wird der Code lesbarer.
Außerdem ersparst du dir Tipparbeit für die (teilweise falschen) Kommentare. Solltest du mal einen anderen Pin benötigen, machst du die Änderung an einer Stelle im Code.

int schalter = 0; // Variable die den Status des tasterPin aufnimmmt

// Pindefinitionen die während dem Programmablauf konstant bleiben
const uint8_t rotPin = 10;  // Pins für die Ampel festlegen
const uint8_t gelbPin = 11;
const uint8_t gruenPin = 12;
const uint8_t tasterPin = 3; // Pin an dem der Taster angeschlossen ist

void setup() {
  //Pins als Ausgänge definieren
  pinMode(rotPin, OUTPUT); 
  pinMode(gelbPin, OUTPUT); 
  pinMode(gruenPin, OUTPUT); 
  // optional: Pin als Eingang definieren
  pinMode(tasterPin, INPUT); 
}

void loop() {
  schalter = digitalRead(tasterPin); //Der Wert, der am Pin eingelesen wird, wird in Variable übernehmen

  if (schalter == LOW) { //Abfrge der Bedingung, ob an Pin ein LOW Signal vorliegt => Taster nicht gedrückt
    //Ampel rot
    digitalWrite(rotPin, HIGH); 
    digitalWrite(gelbPin, LOW); 
    digitalWrite(gruenPin, LOW); 
    delay(250); //Verzögerung in millisekuden
  } else {  //=> Taster ist gedrückt, es liegt HIGH am TasterPin vor
    //Ampel rot
    digitalWrite(rotPin, HIGH); 
    digitalWrite(gelbPin, LOW); 
    digitalWrite(gruenPin, LOW); 
    delay(250); 
    //Ampel gelb
    digitalWrite(rotPin, LOW);
    digitalWrite(gelbPin, HIGH);
    digitalWrite(gruenPin, LOW);
    delay(4000); 
    //Ampel grün
    digitalWrite(rotPin, LOW);
    digitalWrite(gelbPin, LOW);
    digitalWrite(gruenPin, HIGH);
    delay(10000); 
  }
}

P.S.: meiner Meinung nach fehlt die Phase mit ROT-GELB :wink:

1 Like

Wenn die Ampel in Italien steht dann nicht. Da schaltet Rot nach Grün.

Grüße Uwe

Die Ampel in Italien sind nur zur Dekoration da :slight_smile:

Letzthin bekam ich einen Brief "einer Feststellung einer Übertretung der Straßenverkehrsordnung wegen Nichtbeachtung der dort angebrachten Verkehrsampel ... ohne anzuhalten die Fahrt fortsetzte obwohl die dort angebrachte Ampel .. rotes Licht zeigte", mit einer Zahlungsaufforderung von 135,78€, 185,88€ bzw 351,38€ ( Summe variert je nach Zahlungsfrist; man zahlt weniger wenn man innerhalb 5 bzw 60 Tage oder danach zahlt.
Dazu noch Abzug von 6 Punkten (In Italien werden Die Führerscheinpunkte von 20 abgezogen) dazu bei Wiederholung der Übertretung innerhalb 2 Jahren ein Führerscheinentzug von 1 bis 3 Monaten.
Der Brief kam einige Monate nach der Übertretung, weil die besagte Ampel Videoüberwacht ist, und die Aufzeichnung erst nach 25 Tagen ausgewertet wurde.
In Italien ist es auch egal ob die Ordnungshüter den Fahrer feststellen können oder nicht oder Dich nicht sofort aufgehalten haben. Wenn der Fahrzeugshalter nicht selbst gefahren ist, muß er den Fahrer benennen und dieser bekommt den Punkteabzug. Geldstrafe bleibt.

Grüße Uwe

Danke für die Hilfe, ich habe das Problem gelöst bekommen.
Habe jetzt die Anleitung von funduino entdeckt mit der ich ein wenig experimentiere, habt ihr vielleicht noch andere Seiten, Bücher, die ihr empfehlen würdet?

LG Julian

Arduino-Referenz hier und hier.

Gruß Tommy

1 Like

dann hätte ich die Farben auch rosso giallo und verde genannt...

Diese Ordnung hat in DE-Land als ersten und wichtigsten §1:

  1. Die Teilnahme am Straßenverkehr erfordert ständige Vorsicht und gegenseitige Rücksicht.
  2. Wer am Verkehr teilnimmt hat sich so zu verhalten, dass kein Anderer geschädigt, gefährdet oder mehr, als nach den Umständen unvermeidbar, behindert oder belästigt wird.

Meine Hoffnung ist, dass das in Italien ähnlich aussieht. Obwohl meine Erfahrung sagt, dass die "Auslegung" sich zwischen DE und IT "etwas" unterscheidet, bzw. gelebt wird. In IT etwas lockerer, mehr Abenteuer.

Das ist ein uraltes Vorurteil. ( Auch Franzosen -- hier in Südwestdeutschland auf der A5 -- erkennt man am Nummernschild, nicht an der Fahrweise )

Generell sind die Unterschiede zwischen Individuen erheblich größer als zwischen Angehörigen verschiedener Nationen. Mein herzliches Beileid an @uwefed, übrigens.

Vorurteil hin oder her, das Leben ist in IT schon etwas anders.

Ein berliner Fahrlehrer im Italienurlaub:

Eine Folge 2 gibts auch noch

Wißt Ihr was das lustigste am Video ist:
bei 6:28 sagt der Sprecher "und wir waren erst in Südtirol".

Er fährt viel zwischen Bozen und Kaltern, auf der Schnellstraße nach Meran und am Ende ins Nonberg und Val Sugana.

Ich bin gewohnt wie Italiener fahren. Wenn da ein Bundesdeutscher kommt weiß ich nicht wie der fährt.
Italiener sind generell tolleranter und wenig rechthaberisch. Ich habe Verkehrsteilnehmer auf deutschen Autobahnen als für mich ungewohnt agressiv erlebt.

Andererseits wenn Ordnungshüter Dich erwischen, dann sind die Strafen sehr drakonischer als in Deutschland. In Italien müssen sie dich nicht aufhalten. Du bekommt einen Brief.
zB Pisa Einfahrt in Verkehrberuhigte Zohne . Hab das Schild nicht gesehen; Autos standen am Strasenrand wie überall. Bekam Brief mit Foto meines Numernschildes und Zahlungsaufforderung. Auf Streedview nachgeschaut. Da steht wirklich das Schild.

Die Motorradfahrer im Video haben auch für mich eine nicht nachvolziebare Verhaltensweise.

Grüße Uwe

Wieso?
Ich wohne in Italien und die deutsche Sprache ist hier (neben anderen) Amtssprache. Da gibt es sehr wohl rote Ampeln und nicht nur semafori rossi.

Grüße Uwe

In §1 der italienischen STvO steht:

  1. Die Sicherheit und der Schutz der Gesundheit des Menschen sowie der Umweltschutz fallen im Bereich Straßenverkehr unter die primären sozialen und wirtschaftlichen Ziele des Staates.
  2. Die Teilnahme von Fahrzeugen, Fußgängern und Tieren am Straßenverkehr wird, unter Beachtung der einschlägigen internationalen und Gemeinschaftsvorschriften, von den Bestimmungen dieser Straßenverkehrsordnung und von den entsprechenden Durchführungsmaßnahmen geregelt. Die Bestimmungen und Durchführungsmaßnahmen orientieren sich an den Grundsätzen der Verkehrssicherheit und der nachhaltigen
    Mobilität und haben zum Ziel, die durch den Fahrzeugverkehr verursachten wirtschaftlichen, sozialen und Umweltkosten zu reduzieren, die Lebensqualität der Bürger unter anderem durch eine rationelle Flächennutzung zu steigern, die Verkehrsflüssigkeit zu verbessern und die Nutzung von Fahrrädern zu fördern.

Quelle: (welche in einigen Punkten veraltet ist)

Ich antworte mir mal selbst. Das C++programmieren ist derzeit im Angebot für 16,99€.

Gruß Tommy

Aber das typische Problem für mich, daß nur nach A und CH verschickt wird oder die Versandkosten nach A und CH gleich denen in D und nach I sauteuer.
Grüße Uwe

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.