INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Programmreihenfolge
21.10.2014, 13:44
Beitrag #1
Programmreihenfolge
Hallo,

ich hab folgendes Problem:

ich hab ein Programm geschrieben in dem ich je nach Eingangssignal den einen Motor rechts oder links laufen lassen will.

void loop() {
Sensor1State = digitalRead(Sensor1Pin);
Sensor2State = digitalRead(Sensor2Pin);
ch1 = pulseIn( 9,HIGH); // Read the pulse width of

if((ch1<1200)&&(Sensor2State == HIGH)){digitalWrite(Motor1Pin, LOW);
digitalWrite(Motor2Pin, HIGH);}

else {
digitalWrite(Motor1Pin, LOW);
digitalWrite(Motor2Pin, LOW);
}

if((ch1>1200)&&(Sensor1State == HIGH)){digitalWrite(Motor1Pin, HIGH);
digitalWrite(Motor2Pin, LOW);}

else {
digitalWrite(Motor1Pin, LOW);
digitalWrite(Motor2Pin, LOW);
}

so wie ich es jetzt ist funktioniert aber immer nur die zweite if/else anweisung, sprich wenn ch1>1200 ist. vertausche ich sie in der Reihenfolge, so ist es genau andersrum.

Bitte um Hilfe

Gruß Johannes
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.10.2014, 01:40
Beitrag #2
RE: Programmreihenfolge
Hallo,
etwas zum lesen...
http://arduino.cc/de/pmwiki.php?n=Reference/PulseIn
Gruß und Spaß
Andreas
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.10.2014, 11:39
Beitrag #3
RE: Programmreihenfolge
sind denn die ganzen Variablen überhaupt irgendwo deklariert?
(als byte, char, int oder was auch immer ?)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.10.2014, 12:24 (Dieser Beitrag wurde zuletzt bearbeitet: 22.10.2014 12:26 von johe91.)
Beitrag #4
RE: Programmreihenfolge
#include <Servo.h>
Servo myservo; // Servo-Objekt zur Steuerung des Servos erzeugen
int angle =120;
const int Motor1Pin = 7;
const int Motor2Pin = 8;
const int Sensor1Pin = 2;
const int Sensor2Pin = 3;
int Sensor1State = 0;
int Sensor2State = 0;
unsigned long duration;
int ch1;
int pin = 9;
void setup() {
myservo.attach(9); // Verbindet den Servo an Pin 9 mit dem Servo-Objekt
myservo.write(angle);
pinMode(Sensor1Pin, INPUT);
pinMode(Sensor2Pin, INPUT);
pinMode(9, OUTPUT); // Set our input pins as such
pinMode(Motor1Pin, OUTPUT);
pinMode(Motor2Pin, OUTPUT);
Serial.begin(9600); // Pour a bowl of Serial

}

void loop() {
Sensor1State = digitalRead(Sensor1Pin);
Sensor2State = digitalRead(Sensor2Pin);
ch1 = pulseIn( 9,HIGH); // Read the pulse width of

if((ch1<1200)&&(Sensor2State == HIGH)){digitalWrite(Motor1Pin, LOW);
digitalWrite(Motor2Pin, HIGH);}
if((ch1>1200)&&(Sensor1State == HIGH)){digitalWrite(Motor1Pin, HIGH);
digitalWrite(Motor2Pin, LOW);}

else {
digitalWrite(Motor1Pin, LOW);
digitalWrite(Motor2Pin, LOW);
}




Serial.println(); //make some room
delay(100);// I put this here just to make the terminal
// window happier
}






Hier ist das ganze Programm. Mein Problem ist, dass immer nur die 2te if-Anweisung funktioniert, wenn ich einmal einen Puls kleiner 1200 und einmal einen Puls größer 1200 einstelle. Dies liegt denke ich nicht an der pulsin()-Funktion. Vertauscht man die if-Anweisungen in der Reihenfolge, so funktioniert wieder nur die 2te.

Edit: Wenn ich das "else" weglasse funktionieren beide if-Anweisungen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.10.2014, 15:09
Beitrag #5
RE: Programmreihenfolge
Hi,
ueberleg Dir mal, was jeweils die Negation der Bedingungen im if ist. Dann siehst Du wahrscheinlich, dass praktisch immer einer der beiden else-Zweige durchlaufen wird.
Gruss,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.10.2014, 16:34
Beitrag #6
RE: Programmreihenfolge
Da lag der FehlerConfused
vielen Dank!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste