Sektch Problem Schalterstellungen

Hallo allerseits :slight_smile:

Ich habe ein kleines Projekt erstellt bei dem ich mit zwei Flexsensoren über den Arduino zwei Leds und einen Vibrationsmotor ansteuere und zusätzlich noch die Funktion eingebaut hab dies alles über PHP in eine Datenbank einzutragen.
Die Teilfunktionen gehen auch alle aber als gesamter Sketch ist irgendwo der Wurm drin.
Ich habe einen Schalter mit eingebaut mit dem ich zwischen zwei Werten und der PC Übertragen schalten kann und dies funktioniert recht unregelmäßig. Mal schaltet er schnell um, mal sehr langsam und meistens einfach gar nicht.

Hab ich einen Fehler in den Schleifen? Vielleicht eine Pause irgendwo zu wenig?
Vielleicht kann mir ein Adlerauge helfen :slight_smile:
hier der Sketch:

#include <Ethernet.h>


byte mac[] = { 0x54, 0x34, 0x41, 0x30, 0x30, 0x31 };                                       

EthernetClient client;
char server[] = "192.168.0.11";
int  interval = 5000; 


int LEDG=2;
int LEDR=4;
int vibra=7;

int hebel1=12;
int hebel2=13;

int hebelstatus1;
int hebelstatus2;


int sensorPin=0;
int sensorPin1=1;
int sensorPin2=2;
int sensorPin3=3;

int sensorReading;
int sensorReading1;
int sensorReading2;
int sensorReading3;




void setup() 
{

  Serial.begin(9600);
  
  pinMode(LEDG,OUTPUT);
  pinMode(LEDR,OUTPUT);
  pinMode(vibra,OUTPUT);

  pinMode(hebel1,INPUT);
  pinMode(hebel2,INPUT);

   
  Ethernet.begin(mac);


  Serial.println("Projekt Rückenbeugung");
  Serial.println("-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n");
  Serial.print("IP Address        : ");
  Serial.println(Ethernet.localIP());
  Serial.print("Subnet Mask       : ");
  Serial.println(Ethernet.subnetMask());
  Serial.print("Default Gateway IP: ");
  Serial.println(Ethernet.gatewayIP());
  Serial.print("DNS Server IP     : ");
  Serial.println(Ethernet.dnsServerIP());
}

void loop() {

  
  sensorReading=analogRead(sensorPin);
  sensorReading1=analogRead(sensorPin1);
  sensorReading2=analogRead(sensorPin2);
  sensorReading3=analogRead(sensorPin3);


  hebelstatus1=digitalRead(hebel1);
  hebelstatus2=digitalRead(hebel2);

  int gesamt=((sensorReading-sensorReading1)+(sensorReading2-sensorReading3));

  //int oben=(sensorReading-sensorReading1);
  //int unten=(sensorReading2-sensorReading3);

  //Serial.println(gesamt);
  //delay(100);

  if (hebelstatus2==LOW && gesamt>250)

{
  digitalWrite(LEDR,HIGH);
  digitalWrite(LEDG,LOW);
  digitalWrite(vibra,HIGH);
}

  else if (hebelstatus1==LOW && hebelstatus2==LOW && gesamt>270)

{
  digitalWrite(LEDR,HIGH);
  digitalWrite(LEDG,LOW);
  digitalWrite(vibra,HIGH);
}

  else if (hebelstatus1==HIGH)

{
  digitalWrite(LEDR,LOW);
  digitalWrite(LEDG,LOW);
  digitalWrite(vibra,LOW);

if (client.connect(server, 80)) 
  {
   Serial.println("-> Connected");
   client.print( "GET /add_data.php?");
   client.print("&&");
   client.print("wert=");
   client.print( gesamt );
   client.println( " HTTP/1.1");
   client.print( "Host: " );
   client.println(server);
   client.println( "Connection: close" );
   client.println();
   client.println();
   client.stop();
  }
  else 
  {
  Serial.println("--> connection failed/n");
  }

  delay(interval);

}


else 

{
  digitalWrite(LEDR,LOW);
  digitalWrite(LEDG,HIGH);
  digitalWrite(vibra,LOW);
}
 
}

Ich tippe auf fehlenden Pull-up bei Deinen Schaltern.
Wie sind die verschaltet mit dem arduino?

Aus reinem Interesse, wozu dient in deiner URL das führende doppelte '&'?

   client.print("&&");

Ist das nicht überflüssig bzw. syntaktisch grenzwertig?

Whandall:
Aus reinem Interesse, wozu dient in deiner URL das führende doppelte '&'?

   client.print("&&");

Ist das nicht überflüssig bzw. syntaktisch grenzwertig?

Das ist noch ein Überbleibsel welches tatsächlich mal raus sollte. danke !

Klaus_ww:
Ich tippe auf fehlenden Pull-up bei Deinen Schaltern.
Wie sind die verschaltet mit dem arduino?

Also ich hab dort 10kohm Pull-Down Widerstände verbaut. Das eigenartige ist aber dass wenn ich den Netzwerkanteil auskommentiere dass es einwandfrei funktioniert.

serviette:
Also ich hab dort 10kohm Pull-Down Widerstände verbaut. Das eigenartige ist aber dass wenn ich den Netzwerkanteil auskommentiere dass es einwandfrei funktioniert.

Deine erste if-Anweisung frag auf LOW ab, also solltest du einen Pullup drin haben.

Im übrigen ist dein Sketch schlecht zu lesen, du solltest besser Code-Tags nehmen und nicht Quote-Tags.

Du kannst das aber noch direkt ändern.

int  interval = 5000;
...

delay(interval);

wärend dieser 5s pennt der Arduino, d.h. er reagiert auf keinerlei Eingaben!
delay rauswerfen und millis nehmen.
Stichwort: blink without delay :wink:

nix_mehr_frei:

int  interval = 5000;

...

delay(interval);




wärend dieser 5s pennt der Arduino, d.h. er reagiert auf keinerlei Eingaben!
delay rauswerfen und millis nehmen.
Stichwort: blink without delay ;)

das hab ich schon gemacht :frowning: und die schaltvorgänge dauern auch immer unterschiedlich lang .. langsam glaub ich das board hat n schuss

/edit: alles klar, hab gefunden was du meintest