Hallo
Ich heiße Stefan und habe ein Problem mit meinen Arduino Duemilanove Bord.
Wie kann ich 4 Sensoren ansteuern um damit 2 Elektromotoren vor und zurück fahren zu lassen. Je 2 Sensoren für Links ( 1 Motor) und 2 Sensoren für Rechts ( 1 Motor). Ich habe schon mit Leds rumgespielt und das hat Super gut geklappt. Habe auch schon mit einen Sensor probiert das hat auch geklappt, aber mit 2 Sensoren nicht mehr. Die Sensoren sind Arduino Infrared Reflectance Sensor. Und dann habe ich noch ein Arduino Sensor Shield V4 digital analog gekauft. Der code den ich für einen Sensor habe sieht so aus.
int ledPin = 13; // choose pin for the LED
int inputPin = 2; // choose input pin (for Infrared sensor)
int val = 0; // variable for reading the pin status
void setup()
{
pinMode(ledPin, OUTPUT); // declare LED as output
pinMode(inputPin, INPUT); // declare Infrared sensor as input
}
void loop()
{
val = digitalRead(inputPin); // read input value
if (val == HIGH) { // check if the input is HIGH
digitalWrite(ledPin, LOW); // turn LED OFF
} else {
digitalWrite(ledPin, HIGH); // turn LED ON
}
Kann mir jemand Helfen
Stefan
Wenn du deine Anwendung mit mehr als einem Sensor betreiben willst, muss du im Code die entsprechenden Erweiterungen machen.
Ich empfehle dir, basierend auf deinem Beispielprogramm, die Erweiterungen Schritt für Schritt zu machen. Wenn es mit 2 Sensoren funktioniert, ist der Schritt zur fertigen Lösung nicht mehr so weit.
Das Ansteuern und Einlesen des Infrarot-Sensors hat ja scheinbar funktioniert.
Alles zusammenbauen, also alle Sensoren und Motoren, und dann zu testen ist meist aufwändig, da zuviele Probleme auftauchen können. Besster Step für Step.
Hallo Joghurt
Ich habe es nur mit 1 Sensor geschaft. Der Code lautet
int ledPin = 13; // choose pin for the LED
int inputPin = 2; // choose input pin (for Infrared sensor)
int val = 0; // variable for reading the pin status
void setup()
{
pinMode(ledPin, OUTPUT); // declare LED as output
pinMode(inputPin, INPUT); // declare Infrared sensor as input
}
void loop()
{
val = digitalRead(inputPin); // read input value
if (val == HIGH) { // check if the input is HIGH
digitalWrite(ledPin, LOW); // turn LED OFF
} else {
digitalWrite(ledPin, HIGH); // turn LED ON
}
Als ich es mit 2 Sensoren probiert habe hat es nicht mehr geklappt.
int ledPin1 = 12; // choose pin for the LED
int ledPin2 = 11; //
int inputPin1 = 2; // choose input pin (for Infrared sensor)
int inputPin2 = 3;
int val = 0; // variable for reading the pin status
void setup() {
pinMode(ledPin1, OUTPUT); // declare LED as output
pinMode(ledPin2, OUTPUT);
pinMode(inputPin1, INPUT); // declare Infrared sensor as input
pinMode(inputPin2, INPUT);
}
void loop(){
val = digitalRead(inputPin1); // read input value
val = digitalRead(inputPin2); // read input value
if (val == HIGH) { // check if the input is HIGH
digitalWrite(ledPin1, LOW); // turn LED OFF
digitalWrite(ledPin2, HIGH); // turn LED OFF
} else {
digitalWrite(ledPin1, HIGH); // turn LED ON
digitalWrite(ledPin2, LOW); // turn LED ON
}
}
val = digitalRead(inputPin1); // read input value
val = digitalRead(inputPin2); // read input value
überschreibst du den Wert des ersten Sensors mit dem des Zweiten. Du musst also noch eine weitere Variable (val2) für den Sensor 2 verwenden, und somit auch deinen Code entsprechend mit einer weiteren Bedingung für val2 ergänzen.
void loop(){
int val1 = digitalRead(inputPin1); // read input value
if (val1 == HIGH) { // check if the input is HIGH
digitalWrite(ledPin1, LOW); // turn LED OFF
} else {
digitalWrite(ledPin1, HIGH); // turn LED ON
}
int val2 = digitalRead(inputPin2); // read input value
if (val2 == HIGH) { // check if the input is HIGH
digitalWrite(ledPin2, HIGH); // turn LED OFF
} else {
digitalWrite(ledPin2, LOW); // turn LED ON
}
}
HALLO
Habes es mal zu erweitern versucht klappt aber nicht ganz.
Warum
nt ledPin1 = 12; // choose pin for the LED
int ledPin2 = 11; //choose pin for the LED
int ledPin3 = 10; //choose pin for the LED
int ledPin4 = 9; //choose pin for the LED
int inputSensor1 = 2; // choose input pin (for Infrared sensor)
int inputSensor2 = 3; // choose input pin (for Infrared sensor)
int val_1= 0; // variable for reading the pin status
int val_2= 1; // variable for reading the pin status
void setup()
{
pinMode(ledPin1, OUTPUT); // declare LED as output
pinMode(ledPin2, OUTPUT); // declare LED as output
pinMode(ledPin3, OUTPUT); // declare LED as output
pinMode(ledPin4, OUTPUT); // declare LED as output
pinMode(inputSensor1, INPUT);
pinMode(inputSensor2, INPUT);
}
void loop()
{
int val_1 = digitalRead(inputSensor1); // read input value
int val_2 = digitalRead(inputSensor2); // read input value
if (val_1 == HIGH) // check if the input is HIGH
if (val_2 == HIGH) // check if the input is HIGH
{
digitalWrite(ledPin1, LOW); // turn LED OFF
digitalWrite(ledPin2, HIGH); // turn LED ON
digitalWrite(ledPin3, LOW); // turn LED OFF
digitalWrite(ledPin4, HIGH); // turn LED ON
} else
{
digitalWrite(ledPin1, HIGH); // turn LED ON
digitalWrite(ledPin2, LOW); // turn LED OFF
digitalWrite(ledPin3, HIGH); // turn LED OFF
digitalWrite(ledPin4, LOW); // turn LED ON
Hallo
Der Rasenmäherroboter hat 4 Motoren, und jeder Sensor soll einen Motor bedienen.
Das mit den Pausen bzw Start Stop ist auch interesant.
Ps :Der Rasenmäherroboter hat Kettenantrieb.