Go Down

Topic: Sektch Problem Schalterstellungen (Read 105 times) previous topic - next topic

serviette

Apr 29, 2016, 11:24 am Last Edit: Apr 29, 2016, 06:38 pm by serviette
Hallo allerseits  :)

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  :)
hier der Sketch:


Code: [Select]
#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);
}
 
}

Klaus_ww

Ich tippe auf fehlenden Pull-up bei Deinen Schaltern.
Wie sind die verschaltet mit dem arduino?
Wenn ich hier sehr knapp antworte dann wegen der elenden Tipperei auf dem Tablet.

Whandall

Aus reinem Interesse, wozu dient in deiner URL das führende doppelte '&'?
Code: [Select]
   client.print("&&");
Ist das nicht überflüssig bzw. syntaktisch grenzwertig?
Ah, this is obviously some strange usage of the word 'safe' that I wasn't previously aware of. (D.Adams)

serviette

Aus reinem Interesse, wozu dient in deiner URL das führende doppelte '&'?
Code: [Select]
   client.print("&&");
Ist das nicht überflüssig bzw. syntaktisch grenzwertig?
Das ist noch ein Überbleibsel welches tatsächlich mal raus sollte. danke !



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.

HotSystems

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.
I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

nix_mehr_frei

Code: [Select]
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  ;)
rot ist blau und Plus ist Minus

serviette

#6
Apr 29, 2016, 07:42 pm Last Edit: Apr 30, 2016, 08:19 pm by serviette
Code: [Select]
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 :( 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

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy