Ich bräuchte Hilfe! Vor kurzem habe ich mir disen Sketch für einen Morsecode Temperatursender gedownloadet,da ich einfach nicht Programmieren kann.(bitte nicht haten) Sketch: #include <SFE_BMP180.h> /*====================================================================== ========== Programm zur Ausgabe der Temperatur, der Luftfeuchtigkeit und des Luftdruckes in Morsetegrafie mit einem kleinen ISM-Sender auf 433 MHz. Als Sensoren werden ein DHT11 für die Temperatur und die Luftfeuchtigkeit und ein BMP180 zu Messung des Luftdruckes eingesetzt. ======================================================================== =========*/ #include <Wire.h> // Library für den I2C Bus #include <string.h> // Library für die String-Bearbeitung #include <stdio.h> // Library für die Stndardfunktinen #include <DHT.h> // Library für den DHT11/22 Feuchtesensor // Library von Sparkfun für den BMP180 Luftdrucksensor #define DHTPIN 2 // Digitaler Pin an dem der DHT angeschlossen ist #define DHTTYPE DHT11 // Type des Sensors der angeschlossen ist hier: DHT11 DHT dht(DHTPIN, DHTTYPE); // Instanz des DHT-Sensors erzeugen SFE_BMP180 barometer; // Instanz des BMP180-Sensors erzeugen int laenge; int laenge1; int i; int x; int y; String h_text; String t_text; String l_text; char temp[1]; char charzeichen[1]; String temp1; String zeichen; String temp2; int SenderPin = 12; // Pin an dem der Sender angeschlossen ist int tempo = 100; // Zeichengeschwindigkeit float seaLevelPressure = 101325; // Aktueller Luftdruck bezogen auf NN am aktuellen Stndort String text = "t 13,2 f 85 d 1024 dl0mes"; // So wird der Text später beispielhaft aussehen char* woerterbuch[] = {"a", ".-", "b", "-...", "c", "-.-.", "d", "-..", "e", ".", "f", "..-.", "g", "--.", "h", "....", "i", "..", "j", ".---", "k", "-.-", "l", ".-..", "m", "--", "n", "-.", "o", "---", "p", ".--.", "q", "--.-", "r", ".-.", "s", "...", "t", "-", "u", "..-", "v", "...-", "w", ".--", "x", "-..-", "y", "-.--", "z", "--..", ".", ".-.-.-", ",", "--..--", "/", "-..-.", "-", "-....-", "0", "-----", "1", ".----", "2", "..---", "3", "...--", "4", "....-", "5", ".....", "6", "-....", "7", "--...", "8", "---..", "9", "----."}; void setup() { pinMode(1, OUTPUT); Serial.begin(9600); // Seriellen Port öffen um Ausgaben zu ermöglichen mit 9600 bps: dht.begin(); // initialisieren des DHT Wire.begin(); // initialisieren des I2C Busses für die Kommunikation mit BMP 180 SFE_BMP180 Initialize(); // initialisieren des BMP 180 Sensors } void loop() { float h = dht.readHumidity(); // Einlesen der relativen Luftfeuchtigkeit in % float t = dht.readTemperature(); // Einlesen der Außen-Temperatur in °C float Luftdruck = SFE_BMP180 for GetPressure()/100; // aktuellen Luftdruck einlesen (Mess wert in Pa; /100 macht daraus hPa } float Innentemp = barometer.GetTemperature(); // aktuelle Innentemperatur einlesen t_text = String(t, 1); // String(float, Nachkommastellen) Wandelt Meßwert in String um h_text = String(h, 0); l_text = String(Luftdruck, 0); text = "t " + t_text + " f " + h_text + " l " + l_text + " dl0mes"; // Messwerte werden zu einer Zeichenkette für Morseausgabe zusammengestellt laenge = text.length(); // Anzahl der Zeichen des auszugebdneden Textes char chartext[laenge + 1]; text.toCharArray(chartext, laenge+1); // Aus dem auszugebenden Text eine Array of Char erzeugen for (i=0; i<laenge+1; i++){ // Text Zeichen für Zeichen aufschlüsseln temp[1]= chartext[i]; // Aktuelles Zeichen aus dem Text der ausgegeben werden soll for (x=0; x<=80; x=x+2){ // Aktuelles Zeichen im Wörterbuch suchen temp2=woerterbuch[x]; // Das x-te Zeichen einer Zwischenvariablen zuweisen die ein String ist temp2.toCharArray(charzeichen, 2); // Aus der Zwischenvaiablen ein char machen if (chartext[i] == char(32)) // bei Leerzeichen eine Wortpause ausgeben { wortende(); break; } else { if (charzeichen[0] == chartext[i]){ // Wenn Zeichen im Wörterbuch gefunden temp1 = woerterbuch[x+1]; // dann ist nächster Eintrag das zugehörende Morsezeichen laenge1 = temp1.length(); // Zeichenlänge des Morsezeichens ermitteln char chartemp1[laenge1+1]; temp1.toCharArray(chartemp1, laenge1+1); // Aus dem Morsezeichen ein Array of Char erzeugen for(y=0; y<laenge1; y++){ switch (chartemp1[y]) { // Für jeden Punkt ein "dit" ausgeben case '.': // Für jeden Strich ein "dah" ausgeben dit(); break; case '-': dah(); break; } } zeichenende(); //Wenn das Zeichen ausgegeben wurde, dann eine Pause der Länge "dah" } } } } } void dit() { // einen Punkt (dit) ausgeben digitalWrite(SenderPin, HIGH); delay(tempo); digitalWrite(SenderPin, LOW); delay(tempo); } void dah() { // einen Strich (dah) ausgeben digitalWrite(SenderPin, HIGH); delay(3*tempo); digitalWrite(SenderPin, LOW); delay(tempo); } void wortende() { // Pause für Wortende digitalWrite(SenderPin, LOW); delay(6*tempo); digitalWrite(SenderPin, LOW); } void zeichenende() { // Pause für Zeichenende digitalWrite(SenderPin, LOW); delay(2*tempo); digitalWrite(SenderPin, LOW); } Nun immer wenn ich den sketch hochladen will kommt diese Fehlermdeldung: error: 'i' does not name a type for (i=0; i<laenge+1; i++){ // Text Zeichen für Zeichen aufschlüsseln ^ Arduino_ism_wetterballon:74: error: 'i' does not name a type for (i=0; i<laenge+1; i++){ // Text Zeichen für Zeichen aufschlüsseln ^ Arduino_ism_wetterballon:107: error: expected declaration before '}' token } ^ exit status 1 expected primary-expression before 'for' Und da ich nicht programmieren kann sagt mir das ganze wenig. Darum würde ich um eure Hilfe bitten. Bitte hatet mich wegen meiner Programmierkentnisse nicht.Ich kenn mich halt besser mit Hardware und so aus. Thx
:
Verschoben durch Moderator
Du musst das umändern zu
1 | for (int i=0; i<laenge+1; i++) { |
Bei "x" übrigens genauso (also durch "int x" in der Schleifeninitialisierung ersetzen).
Sorry für die dumme Frage aber wo muss ich das einfügen? Dankeschön für die nette und schnelle Antwort. Thx
Auch wenn du nicht programmieren kannst, aber so ein wenig solltest du dich dennoch damit beschäftigen. Deine Ausgabe zeigt unten die Fehlermeldungen. Da steht, in welchen Zeilen das Problem wo auftritt. Ich kann dir keine Zeilennummer geben, weil dein Code kaputtformatiert ist. Es sollten aber wahrscheinlich die Zeilen 74 (für i) und 76 (für x) sein.
Arno K. schrieb: > Ich bräuchte Hilfe! Du solltest einfach die *.ino Datei hier anhängen, so wie es in der Bedienungsanleitung über jeder Eingabebox steht:
1 | Längeren Sourcecode nicht im Text einfügen, |
2 | sondern als Dateianhang |
Und dann sagen, auf welche Zeile sich die Fehlermeldung bezieht...
:
Bearbeitet durch Moderator
Oder, noch besser, nenne die Quelle des Programms. Der oben gepostete Code scheint jedenfalls kaputtformatiert worden zu sein (loop() soll sicher nicht nach drei Zeilen enden).
Kompiliert doch... Das i muss auch nicht in der Schleife deklariert werden. Steht oben global. Sehr sinnvoll...
Der code der Seite und dein Code stimmen nicht überein. Was alles anders ist weiß ich nicht, aber so kann man dir nicht helfen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.