Hier (nicht wundern wegen denn ganzen // Zeugs ist aus einem Adventskalender)
//------------------------------------------------------------------------------------------------------------------
/**
* Tag11.ino
* Version 1.0
* Version der Firmware: V1.2b
* Aktualisierungen finden Sie unter http://www.buch.cd
*
* Sketch basiert auf der Firmware und ist eine Erweiterung der Vorlage im Verzeichnis Vorlage.
*/
//------------------------------------------------------------------------------------------------------------------
String Name="Bluething";
String Text=""; //In diesem String werden Texte zwischengespeichert
char Zeichen; //In dieser Variable werden Zeichen zwischengespeichert
#define rxPin 11 //virtueller RX-Pin des Moduls zur Kommunikation mit dem HC-05
#define txPin 12 //virtueller TX-Pin des Moduls zur Kommunikation mit dem HC-05
#define LedPin 13 //an diesem Pin hängt die gelbe LED unten links
int led = 4;
int led2 = 5
//Initialisieren der virtuellen seriellen Schnittstelle
#include <SoftwareSerial.h>
SoftwareSerial HC05(txPin, rxPin);
//------------------------------------------------------------------------------------------------------------------
/**
* HC05 initialisieren
* Seriellen Monitor mit 57600 Baud ansprechen
* HC05 wird mit 38400 Baud angesprochen
*/
void setup() {
pinMode(LedPin, OUTPUT); //Pin13 als Ausgang setzen
pinMode(led, OUTPUT);
digitalWrite(led,LOW);
pinMode(led2, OUTPUT);
digitalWrite(led2,LOW);
initModule();
}
//------------------------------------------------------------------------------------------------------------------
void loop() {
//Empfange zeichen vom HC-05 Modul
while(HC05.available() > 0){ // So lange etwas empfangen wird, durchlaufe die Schleife.
Zeichen = HC05.read(); // Speichere das empfangene Zeichen in der Variablen "Zeichen".
Text.concat(Zeichen); // Füge das Zeichen an den String an, damit wir den kompletten Text erhalten.
if (Zeichen == '\n') { // War das letzte Zeichen ein NL (NewLine)?
Serial.println(Text); // Sende den empfangenen Text an das Modul (samt "\n")
//Reagiere auf "Led an" bzw. "Led aus"
if (Text.startsWith("licht an ") || Text.startsWith("an")|| Text.startsWith("Licht an")){
digitalWrite(led,HIGH);
} else if (Text.startsWith("licht aus") || Text.startsWith("AUS") || Text.startsWith("aus")){
digitalWrite(led,LOW);
}else if (Text.startsWith("led an")){
digitalWrite(led2,HIGH);
}else if (Text.startsWith("led aus")){
digitalWrite(led2,LOW);
}
Text="";
}
}
}
//------------------------------------------------------------------------------------------------------------------
String auslesen(String Befehl){
char Zeichen; // Jedes empfangene Zeichen kommt kurzzeitig in diese Variable.
String result="";
Serial.println(Befehl); // Schreibe den übergebenen String auf den seriellen Monitor
HC05.println(Befehl); // Sende den übergebenen String an das Modul
delay(500);
while(HC05.available() > 0){ // So lange etwas empfangen wird, durchlaufe die Schleife.
Zeichen = HC05.read(); // Speichere das empfangene Zeichen in der Variablen "Zeichen".
result.concat(Zeichen); // Speichere die Antwort des Moduls
}
return result; // Übergebe die Rückantwort des Moduls
}
//------------------------------------------------------------------------------------------------------------------
const int wartezeit = 500;
//------
void initModule() {
Serial.begin(57600); //Baudrate für die Kommunikation mit dem seriellen Monitor
Serial.println("Initialisiere...");
Serial.println();
Serial.println("Konfiguriere HC-05 Modul:");
Serial.println();
HC05.begin(38400);
//Reset HC-05 -> Slave mode, Baudrate 38400, Passwort:1234, Device-Name: "hc01.com HC-05"
Text = auslesen("AT+ORGL");
Serial.println(Text);
if (!Text.startsWith("OK")) {
Serial.println("Fehler!");
Serial.println("Steht der Jumper auf AT?");
Serial.println("Sind alle Bluetooth-Verbindungen zum Modul getrennt?");
Serial.println("Wechsle in den COM-Modus...");
Serial.println();
return;
//while(1);
}
//Lösche alle Devices aus der Pair-Liste
Text = auslesen("AT+RMAAD");
Serial.println(Text);
if (!Text.startsWith("OK")) {
Serial.println("Fehler!");
while(1);
}
//Lese die MAC-Adresse aus und bilde daraus den Bluetoothnamen
Text = auslesen("AT+ADDR?");
Serial.println(Text);
Name.concat(Text.substring(Text.lastIndexOf(":")+1,Text.lastIndexOf(":")+4));
Serial.println(Name);
//Setze Bluetooth-Name auf "BluethingXXX"
Text = auslesen("AT+NAME="+Name);
Serial.println(Text);
if (!Text.startsWith("OK")) {
Serial.println("Fehler!");
while(1);
}
//Checke ob die Bautrate auf 38400 gesetzt wurde
Text = auslesen("AT+UART?");
Serial.println(Text);
if (!Text.startsWith("+UART:38400,0,0")) {
Serial.println("Fehler!");
while(1);
}
//Versionsnummer des Moduls auslesen - Keine überprüfung falls sich mal die Versionsnummer ändert...
Text = auslesen("AT+VERSION?");
Serial.println(Text);
//Modul neustarten und eventuelle Verbindungen resetten
Text = auslesen("AT+RESET");
Serial.println(Text);
if (!Text.startsWith("OK")) {
Serial.println("Fehler!");
while(1);
}
delay(1000); //So ein Reset dauert seine Zeit...
//Bricht alle Verbindungen ab und macht das Modul in der Bluetoothumgebung sichtbar
Text = auslesen("AT+INIT");
Serial.println(Text);
Text = auslesen("AT+DISC");
Serial.println(Text);
//Gibt den Status des Moduls an
Text = auslesen("AT+STATE?");
Serial.println(Text);
Text="";
digitalWrite(LedPin, HIGH);
Serial.println();
Serial.println("Konfiguration erfolgreich!");
Serial.println("Die gelbe Led an Pin13 sollte jetzt konstant leuchten.");
Serial.println("Es koennen ueber die Konsole AT-Befehle an das Modul gesendet werden.");
Serial.println("Der Bluetoothname des Moduls lautet: \""+Name+"\" , das Passwort lautet:\"1234\"");
Serial.println("Das Modul kann jetzt auch mit einem Handy gekoppelt werden, alle empfangenen Texte werden angezeigt, alle gesendeten Befehle gehen dann direkt ans Handy (wie im COM Modus).");
Serial.println("Sollte der String \"Led an\" oder \"Led aus\" empfangen werden, reagiert die Led an Pin13 entsprechend (egal ob vom seriellen Monitor, oder vom Handy).");
Serial.println();
}
Vergebene Liebesmüh' ... denke, viel mehr Posts werden kaum kommen, so nachsichtig, wie reagiert wurde.
... lasse mich aber gerne eines Besseren belehren ...
MfG
PS: Die Fehlermeldung besagt ja nur, daß ein ; erwartet wurde, statt Dessen kommt ein 'class' - wenn das class nicht ;class heißen muß, fehlt das ; in der Programm-Zeile genau davor.
Unterm Strich hat der Compiler also schon recht mit Seiner Meldung.
Include Direktiven sollte man ganz nach oben setzten (da die nur den Inhalt des Headers direkt an der Stelle einfügen). Dann hat man nicht solche unleserlichen Fehlermeldungen die auf die falsche Stelle zeigen