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
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...
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.