Moin,
ich verstehe diese Code Zeile nicht, bzw. was mir die Fehlermeldung sagen will.. grrr
Die Codezeile wird Makiert:
//alle timer auswerten
for(int t=0; t<NUMTIMER;t++) {
Also, t=0; heißt doch es soll mit 0 beginnen, oder ?
Aber wo steht das t=0 ist ? :~
Und "t < NUMTIMER;" bis dahin soll gezählt werden
( #define NUMTIMER = 3; // wieviele timer es gibt (15,30,60 min) <-- Oder falsch verstanden ?
Fehlermeldung:
Mario_1.cpp: In function 'void loop()':
Mario_1:47: error: expected primary-expression before '[' token
Mario_1:47: error: expected primary-expression before ']' token
Mario_1:47: error: expected primary-expression before ';' token
Mario_1:47: error: expected `)' before ';' token
Mario_1:47: error: name lookup of 't' changed for new ISO 'for' scoping
Mario_1:47: error: using obsolete binding at 't'
Mario_1:47: error: expected `;' before ')' token
Mario_1:125: error: expected `}' at end of input
Mario_1:125: error: expected `}' at end of input
Mario_1:125: error: expected `}' at end of input
Vor dem "setup()" habe ich folgendes festgelegt:
unsigned long previousMillis = 0; // speichert wie viele Sekunden seit derletzten aenderung vergangen sind
#define NUMTIMER[] = 3; // wieviele timer es gibt (15,30,60 min)
int timerpin;
int timerlength;
Und im "loop()" steht das (hoffe ich habe dich da richtig verstanden (4. byte):
char command =client.read();
byte pinnumber =client.read();
byte pinvalue =client.read();
byte timerlength = client.read(); // zeit für ventil öffnung
byte returnvalue = 0;
Hier nochmal der ganze Code:
#include <SPI.h>
#include <Ethernet.h>
// MAC und IP Konfiguration
byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0xEE, 0xF3 };
IPAddress ip(192,168,178,216);
IPAddress gateway(192,168,178,1);
IPAddress subnet(255, 255, 255, 0);
// warten auf port 23
EthernetServer server(23);
unsigned long previousMillis = 0; // speichert wie viele Sekunden seit derletzten aenderung vergangen sind
#define NUMTIMER = 3; // wieviele timer es gibt (15,30,60 min)
int timerpin;
int timerlength;
void setup() {
//Ethernet initialisieren
Ethernet.begin(mac, ip, gateway, subnet);
// Server starten
server.begin();
// serielle konsole öffnen (debug)
Serial.begin(9600);
}
void loop() {
// auf eine eingehende Verbindung warten
EthernetClient client = server.available();
//wenn verbindung, dann 3 bytes lesen;
if (client) {
char command =client.read();
byte pinnumber =client.read();
byte pinvalue =client.read();
byte timerlength = client.read(); // zeit für ventil öffnung
byte returnvalue = 0;
//prüfen ob eine Sekunde vergangen ist
if(millis()-previousMillis >= 1000) {
//aktuelle Zeit merken
previousMillis = millis();
//alle timer auswerten
for(int t=0; t<NUMTIMER;t++) {
//nur timer beachten, die auch verwendet werden sollen (positive PIN nummer)
if(timerpin[t] > 0 ){
//bei aktuellem timer eine sekunde abziehen, wenn "0", dann abgelaufen
if( --timerlength[t] == 0) {
//Ausgang umschalten ( HIGH -> LOW oder LOW -> HIGH)
digitalWrite(timerpin[t],!digitalRead(timerpin[t]));
//timer deaktivieren ( timer mit pin "-1" sind inaktiv)
timerpin[t] = -1;
//debug
Serial.print("Timer ");
Serial.print(t);
Serial.println(" abeglaufen.");
}
}
}
}
//Kommando auswerten
switch(command) {
case 'S':
Serial.print("S Kommando empfangen, setze Pin ");
Serial.print(pinnumber);
Serial.print(" auf ");
Serial.println(pinvalue);
pinMode(pinnumber,OUTPUT);
digitalWrite(pinnumber,pinvalue);
//gesetzten wert auch zurückliefern
returnvalue=pinvalue;
break;
case 'R':
returnvalue = digitalRead(pinnumber);
Serial.print("R Kommando empfangen, lese Pin ");
Serial.print(pinnumber);
Serial.print(". Wert = ");
Serial.println(returnvalue);
break;
case 'T':
Serial.print("T Kommando empfangen, setze Pin ");
Serial.print(pinnumber);
Serial.print(" auf ");
Serial.println(pinvalue);
pinMode(pinnumber,OUTPUT);
digitalWrite(pinnumber,pinvalue);
Serial.print(" für ");
Serial.print(timerlength);
Serial.print(" min");
//gesetzten wert auch zurückliefern
returnvalue=pinvalue;
break;
default:
Serial.println("Fehler, unbekanntes Kommando");
break;
}
// rückantwort senden (1 byte) die "+48" sorgen dafür das der Wert 0 oder 1 als Zeichen "0" oder "1" übertragen werden.
//das vereinfacht die verarbeitung in php.
client.write(returnvalue+48);
//übertragung erzwingen
client.flush();
//10ms delay damit daten sicher gesendet werden.
delay(10);
//wichtg! client verbindung beenden
client.stop();
}
}
Irgendwie habe ich wohl was falsch deklariert oderso, kann aber nichts mit den Fehlermeldungen Anfangen