Code Arduino

Quelqu’un peut-il me renseigné sur un problème avec mon code Arduino:
j’explique , j’ai une ligne rouge lors de la vérification du code, il me dit que le dois redirectionner le void setup().
Merci de votre réponse.
Cordialement

Bonsoir,

Peux-tu poster ici le code que tu essaye de compiler ? notamment les lignes autour de ton setup() ?

#include <SPI.h>
#include <MFRC522.h>
#include <Wire.h> // Wire Bibliothek einbinden
#include <LiquidCrystal_I2C.h> // Vorher hinzugefügte LiquidCrystal_I2C Bibliothek einbinden
LiquidCrystal_I2C lcd(0x3F, 20, 4);
void setup()
{
pinMode(1, OUTPUT);//hoch
pinMode(2,OUTPUT);//runter
pinMode(3,OUTPUT); //rechts
pinMode(4,OUTPUT); //links
pinMode(5,OUTPUT); // Magnet
}
void loop()
{
digitalWrite(1, HIGH); //hoch
digitalWrite(2, HIGH); //runter
digitalWrite(3, HIGH); //rechts
digitalWrite(4, HIGH); //links
digitalWrite(5,HIGH); // Magnet
lcd.init(); //Im Setup wird der LCD gestartet
lcd.backlight(); //Hintergrundbeleuchtung
lcd.setCursor(0, 0);//Hier wird die Position des ersten Zeichens festgelegt. In diesem Fall bedeutet (0,0) das erste Zeichen in der ersten Zeile.
lcd.print(" Maerklin 7051");
lcd.setCursor(0, 1);
lcd.print(" mit ARDUINO");
delay(2000);
delay(4000);//…4 Sekunden warten
digitalWrite(1, LOW); //Und wieder ausschalten
lcd.clear();
lcd.setCursor(3, 1);
lcd.print(" HOCH");
delay(4000); //…und eine Sekunde warten.
digitalWrite(1, HIGH);
//…
delay(2000);
//…
digitalWrite(3, LOW); //rechts
lcd.clear();
lcd.setCursor(3, 1);
lcd.print(" RECHTS");
delay(4000);//…eine Sekunde warten
digitalWrite(3, HIGH); //Und wieder ausschalten
//…
delay(2000);
//…
digitalWrite(2, LOW); //Und wieder ausschalten
lcd.clear();
lcd.setCursor(3, 1);
lcd.print(" RUNTER");
delay(4000); //…und eine Sekunde warten.
digitalWrite(2, HIGH);
//…
delay(2000);
//…
digitalWrite(4, LOW); //links
lcd.clear();
lcd.setCursor(3, 1);
lcd.print(" LINKS");
delay(4000);//…eine Sekunde warten
digitalWrite(4, HIGH); //Und wieder ausschalten
//…
delay(2000);
//…
digitalWrite(5, LOW); //links
lcd.clear();
lcd.setCursor(3, 1);
lcd.print(" MAGNET");
delay(4000);//…eine Sekunde warten
digitalWrite(5, HIGH); //Und wieder ausschalten
//…
lcd.clear();
lcd.setCursor(1, 0);
lcd.print(" Wiederholung “);
lcd.setCursor(0, 1);
lcd.print(” in 5 SEC. ");
delay(5000);

}

Geschwindigkeitsmessung mit Arduino

// Modell - Bahn - Agenda
// Präsentiert
// Geschwindigkeit messen mit dem Arduino Nano
// Arduino 3.0 ATmeg 168
// …
// Masstab = 1:87 fest im Programm hinterlegt
// Abstand der Lichtschranken zueinander = 30 mm fest imm Programm hinterlegt
// Empfindlichkeit der Lichtschranken ca. 30 mm
// 2 IR HV 201 Lichtschranken an DIGITAL PORT D6 und D7
// 4 blaue LED mit je 330 Ohm Vorwiderstand DIGITAL PORT 9 ==> 12
// I2C LCD 16/2 an I2C SDA = A4 +++ SCL = A5 ANALOG PORT
// Lochrasterplatine, Drähte, Lötkolben, Lötzinn, div. Kleinteile
// …
// geschrieben am 01.07.2021
// Hardware am 02.07.2021 erstellt
// …
#define SENSOR_L 7 // DIGITAL PORT
#define SENSOR_R 6 // DIGITAL PORT
#include <LiquidCrystal_I2C.h>
#include <Wire.h> // Wire Bibliothek einbinden
#include <LiquidCrystal_I2C.h> // Vorher hinzugefügte LiquidCrystal_I2C Bibliothek einbinden
LiquidCrystal_I2C lcd(0x27, 16, 2); //Hier wird festgelegt um was für einen Display es sich handelt.
int LEDBereit = 12; //DIGITAL LED Bereit an D12
int LEDStart = 11; //DIGITAL
int LEDStop = 10; //DIGITAL
int LEDEnde = 9; //DIGITAL
// …
//Abstand Sensoren Links nach Rechts in mm
const double distance = 30.0;
//Spurweite 1/xx in dem Fall 1:87
int scale = 87;
// …
//Name der Variable für Zeit und Geschwindigkeitsmessung
int deltatime, starttime, Geschwindigkeit;
// …
void setup()
{
lcd.init(); //Im Setup wird das LCD gestartet
lcd.backlight(); // Hintergrundbeleuchtung einschalten
//Sensor Eingang // LED Ausgänge
pinMode(SENSOR_L, INPUT_PULLUP);
pinMode(SENSOR_R, INPUT_PULLUP);
pinMode(LEDBereit, OUTPUT);
pinMode(LEDStop, OUTPUT);
pinMode(LEDStart, OUTPUT);
pinMode(LEDEnde, OUTPUT);
// …
}
void loop()
{
// Hier startet die Schleife
lcd.setCursor(4, 0);// erste Zahl die Stelle, zweite Zahl die Zeile
lcd.print(“M - B - A”);
lcd.setCursor(2, 1);
lcd.print(“Ehrenkirchen”);
delay (3000);
lcd.clear();
digitalWrite(LEDBereit, HIGH);
// …
lcd.setCursor(0, 0);
lcd.print(“+++ Bereit +++”);
lcd.setCursor(2,1 );
lcd.print(“Masstab 1:”);lcd.print(scale);
//Warten auf Signal von Lichtschranke1
while (digitalRead (SENSOR_L) == true) {
}
lcd.clear();
digitalWrite(LEDBereit, LOW);
digitalWrite(LEDStart, HIGH);
lcd.setCursor(1, 0);
lcd.print(“Start ===>”);
starttime = millis(); //Lichtschranke 1 wurde betätigt, Startzeit = aktuelle Systemzeit
while (digitalRead(SENSOR_R) == true) { //warten auf Signal von Lichtschranke2
}
lcd.setCursor(5, 1);
digitalWrite(LEDStop, HIGH);
lcd.print(“<===Stop”);
deltatime = (millis() - starttime); //Deltazeit = zeit, die für die Strecke benötigt wurde
// …
delay (2000); //Zwei Sekunden warten.
lcd.clear(); //Display löschen.
// Anzeige Ergebnis
//…
lcd.clear();
lcd.setCursor(0,0);
lcd.print(“Geschwindigkeit=”);
// Formel zu Berechnung
// …
Geschwindigkeit = ((distance/deltatime)*3.6)*scale;
// …
digitalWrite(LEDStart, LOW);
digitalWrite(LEDStop, LOW);
lcd.setCursor(3,1);
lcd.print(Geschwindigkeit);
lcd.setCursor(7,1);
lcd.print(“Km/h”);
digitalWrite(LEDEnde, HIGH);
// …
delay (10000); //zehn Sekunden warten.
lcd.clear(); //Display löschen ++ LED Ende aus.
digitalWrite(LEDEnde, LOW);
}

Bahnhofsanzeige mit OLED

/*

Project: SSD1306 OLED Display

Author: Thomas Edlinger for www.edistechlab.com

Date: Created 06.06.2020

Version: V1.0

  • Used Aduino IDE V1.8.13

Required libraries (sketch → include library → manage libraries)

  • Adafruit SSD1306 V2.2.1

  • Adafruit GFX Library V1.8.3

Required Board (Tools → Board → Boards Manager…)

  • Board: esp8266 by ESP8266 Community V2.7.4

  • Board: ESP32 by Espressif Systems V1.0.2

Wirering for the Display:

SSD1306 ESP8266/MCU ESP32 Arduino UNO Arduino Mega

VCC 3.3V 3.3V 3.3V 3.3V

GND GND GND GND GND

SCL D1 / GPIO 5 GPIO 22 GPIO 9 GPIO 5

SDA D2 / GPIO 4 GPIO 21 GPIO 10 GPIO 53

*/

#include <Adafruit_SSD1306.h>

#include <Adafruit_GFX.h>

#include <DS3232RTC.h> // GitHub - JChristensen/DS3232RTC: Arduino Library for Maxim Integrated DS3232 and DS3231 Real-Time Clocks

#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)

#define SCREEN_WIDTH 128 // OLED display Breite, in pixels

#define SCREEN_HEIGHT 64 // OLED display Höhe, in pixels

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

void setup() {

Serial.begin(115200);

display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // I2C address = 0x3C

setSyncProvider(RTC.get); // the function to get the time from the RTC

}

void loop() {

//delay(3000);

display.clearDisplay();

//delay(3000);

display.setTextSize(1);

display.setTextColor(WHITE);

display.setCursor(15, 0);

display.print(“Ehrenkirchen Hbf”);

display.drawLine(0,10,127,10, WHITE);

//…

// UHRZEIT

//…

display.setCursor(5, 16);

display.print(“Sie haben Anschluss:”);

display.setCursor(0, 27);

display.print(“Freiburg Hbf Gleis 1”);

display.setCursor(0, 37);

display.print(“Berlin Hbf Gleis 2”);

display.setCursor(0, 47);

display.print(“Bonn Hbf Gleis 3”);

display.setCursor(0, 57);

display.print(“Dresden Hbf Gleis 4”);

display.display();

delay (15000);

//…

// Steuerung

//…

display.clearDisplay();

display.setTextSize(1); // Draw 2X-scale text

display.setTextColor(SSD1306_WHITE);

display.setCursor(10, 0);

display.println(F("Achtung am Gleis 1 "));

display.display(); // Show initial text

delay(100);

display.startscrollleft(0x00, 0x07);// ??? Keine Ahnung was das macht

delay(15000);

display.stopscroll();

delay(100);

//…

//display.clearDisplay();

display.setTextSize(1); // Draw 2X-scale text

display.setTextColor(SSD1306_WHITE);

display.setCursor(0, 30);

display.println(F("Ein Zug faehrt ein "));

display.display(); // Show initial text

delay(100);

display.startscrollleft(0x00, 0x07);// ??? Keine Ahnung was es macht

delay(15000);

display.stopscroll();

display.clearDisplay();

// …

// Steuerung

// …

delay(5000);

display.clearDisplay();

display.setCursor(15, 0);

display.print(“Ehrenkirchen Hbf”);

display.drawLine(0,10,127,10, WHITE);

display.setCursor(5, 16);

display.print(“sie haben Anschluss:”);

display.setCursor(0, 40);

display.print(“Alle Zuege”);

display.display();

delay(15000);

display.clearDisplay();

//delay(1000);

display.setTextSize(1);

display.setTextColor(WHITE);

display.setCursor(0, 5);

display.print(“Abfahrt am Gleis 1”);

display.setCursor(0, 20);

display.print(“11:11 Uhr nach:”);

display.setCursor(0, 40);

display.print(“Freiburg Hbf”);

display.display();

delay (10000);

//…

// Steuerung

// …

delay(5000);

display.clearDisplay();

display.setCursor(40, 0);

display.print("Vorsicht ");

display.setCursor(20, 20);

display.print(“bei der Abfahrt”);

display.setCursor(0, 35);

display.print(“Gute Reise wuenscht:”);

display.setCursor(0, 45);

display.print(" Modell Bahn Agenda");

display.display();

delay(10000);

// …

// .Steuerung.

// …

display.clearDisplay();

delay(2000);

display.setTextSize(1); // Draw 2X-scale text

display.setTextColor(SSD1306_WHITE);

display.setCursor(0, 35);

display.print(“Modell Bahn Agenda”);

display.setCursor(0, 0);

display.println(F(" M - B - A "));

display.display(); // Show initial text

delay(100);

display.startscrollleft(0x00, 0x07);// ??? Keine Ahnung was es macht

delay(45000);

display.stopscroll();

display.clearDisplay();

// …

// .Steuerung

// …

}

Ton code définit deux fois la fonction void setup(), un symbole (nom de fonction) ne peut être définit qu’une seule fois.

Merci de votre réponse, mais que fait on pour corriger.
Merci de ta réponse.
Cordialement

Il semblerait que tu ai plusieurs programmes à la suite les uns des autres dans le même fichier ! J’en compte trois si je ne me trompe pas.

Chaque programme commence par des includes pour définir des périphériques, un setup() et fini par le loop().

Ou as tu trouver ce fichier ?

modell-bahn-agenda: le programme est mit en jaune en bas de page

Ok j’ai retrouvé la page

Bon ce sont plusieurs programmes, chaque programme est séparé par un titre en rouge ! Que je me suis amusée à traduire (je ne parle pas allemand).

Donc déjà prendre seulement le premier programme et ça devrait compiler.

Ensuite il faudrait quand même savoir ce que vous souhaitez en faire.

Le premier programme par exemple c’est pour piloter la grue Märklin.

Il faut aussi un afficheur I2C et brancher les sorties 0-5v numérotées 1 à 5 de l’arduino à la grue via probablement des relais …

Il doit y avoir un schéma sur le site ?

Le second programme est une mesure de vitesse … la aussi, schéma électronique et cie doivent se trouver quelque part.

le troisième programme est un affichage en station qui utilise des OLED. Même remarque : schéma, liste des composants, etc ?

Le mieux est de contacter l’auteur du site.

Bonne suite

1 « J'aime »

Bonjour Julaye

Je vous remercie pour votre amabilité et de votre temps, je comprend mieux le programme, il me faut du temps pour remettre les neurones en place suite à un accident cérébrale .
Merci pour tout, bonne journée.
Cordialement

1 « J'aime »

Bonjour Bard,

Bon rétablissement si tout comme moi tu as été victime d’un AVC. Suivant la gravité de celui-ci, cela peut être plus ou moins long pour que tout rentre en place.