Hallo,
Kan eens iemand kijken naar volgende sketch?
Arduino mega wordt via serial gestuurd door arduino uno met ethernetkaart.
Alle serial.print commando's(ter controle) blijken te werken.
De sturing van de uitgangen werkt echter helemaal niet.
Iemand die ziet wat ik verkeerd doe of vergeten ben ?
Alvast bedankt
/*
Seriële sturing rolluiken dmv arduino uno met ethernetkaart.
*/
const int rolluik[7] = {40, 42, 44, 46, 48, 50, 52};
const int rolluikrichting[7] = {41, 43, 45, 47, 49, 51, 53};
unsigned long start[7] = {1, 2, 3, 4, 5, 6, 7};
unsigned long nu;
int inbeweging[8]= {0,0,0,0,0,0,0,0};
void setup() {
// initialize both serial ports:
Serial.begin(9600);
//Serial1.begin(9600);
}
void loop() {
if (Serial.available()) {
Serial.println("Serial beschikbaar");
String uitlezing =Serial.readString(); //vb: GET /2o HTTP/1.1 21
Serial.print(uitlezing);
char eerstedigit= uitlezing.charAt(18); // 1-7: nummer rolluik
char tweededigit = uitlezing.charAt(19); //0 = stop,1 = naar boven of 2 = naar onder
int i=eerstedigit-'0'; // omzetten naar int
int j=i-1; // array arduino start bij 0 ! dus rolluik 1 wordt 0 in de array
int kant = tweededigit-'0'; // omzetten naar int
Serial.println(i); //ok
Serial.println(kant); //ok
switch(kant){
case 0:
Serial.print("Rolluik "); //serial print functies werken
Serial.print(i);
Serial.print(" Is manueel gestopt");
Serial.println(kant);
digitalWrite(rolluik[j],HIGH); //digitalwrite werkt niet (HIGH nodig om relais uit te schakelen . Waarom?
inbeweging[j]=0; //rolluik gestopt
break;
case 1:
Serial.print("Rolluik "); //serial print functies werken
Serial.print(i);
Serial.print(" gaat naar boven");
Serial.println(kant);
digitalWrite(rolluik[j],HIGH); //digitalwrite werkt niet
digitalWrite(rolluikrichting[j],HIGH); //digitalwrite werkt niet
delay(20);
digitalWrite(rolluik[j],LOW); //digitalwrite werkt niet
start[j]=millis(); //ok
Serial.print("Starttijd rolluik ");
Serial.print(i);
Serial.print(" is ");
Serial.println(start[j]);
inbeweging[j]=1; //rolluik in beweging
break;
case 2:
Serial.print("Rolluik "); //idem, print functie werkt,
Serial.print(i);
Serial.print(" gaat naar beneden");
Serial.println(kant);
digitalWrite(rolluik[j],HIGH); // sturen uitgangen werkt niet
digitalWrite(rolluikrichting[j],LOW); // idem
delay(20);
digitalWrite(rolluik[j],LOW); //idem
start[j]=millis();
Serial.print("Starttijd rolluik "); //ok
Serial.print(i); //ok
Serial.print(" is "); //ok
Serial.println(start[j]); //ok
inbeweging[j]=1;
break;
}
}
else
{
for(int j=0;j<7;j++){
nu = millis(); //ok
if (nu < start[j]) // indien millis in overflow (na enkele dagen ?)
{
start[j] = nu;
}
if(inbeweging[j]>0){ //als rolluik in beweging is
if (nu > start[j] + 60000) // als er meer dan 60 seconden verstreken zijn sinds het starten
{
Serial.print("rolluik "); //ok
int i = j+1;
Serial.print(i); //ok
Serial.println (" wordt nu uitgeschakeld"); //ok
digitalWrite(rolluik[j], HIGH); // werkt niet
delay(50);
digitalWrite(rolluikrichting[j], HIGH); //werkt niet
inbeweging[j]=0; // rolluik staat stil
}}
}
}
}