Hy,
nachdem ich mir jetzt den ganzen Tag einen abgebrochen hab ohne den Fehler zu finden, hoffe ich mal das ihr mir weiterhelfen könnt.
Mein Vorhaben: Ich will 4 dc motoren an meinem duemilanove betreiben, dafür hab ich bereits 2 L293 passend mit dem Arduino verkabelt und zusätzlich am Digital Pin 1 noch einen Taster angehangen. Der Taster hängt weiterhin über einen Widerstand am GND vom Arduino und mit der anderen Seite an 5V Plus.
Wollte dafür folgenden Code verwenden:
int enableA = 6; // Motor A, PWM-Pin - L293D, Pin 9
int enableB = 5; // Motor B, PWM-Pin - L293D, Pin 1
int enableC = 9; // Motor A, PWM-Pin - L293D, Pin 9
int enableD = 10; // Motor B, PWM-Pin - L293D, Pin 1
int out1A = 7; // Motor A, Steuerleitung 1 - L293D, Pin 15
int out2A = 2; // Motor A, Steuerleitung 2 - L293D, Pin 10
int out1B = 3; // Motor B, Steuerleitung 1 - L293D, Pin 7
int out2B = 4; // Motor B, Steuerleitung 2 - L293D, Pin 2
int out1C = 8; // Motor A, Steuerleitung 1 - L293D, Pin 15
int out2C = 11; // Motor A, Steuerleitung 2 - L293D, Pin 10
int out1D = 12; // Motor A, Steuerleitung 1 - L293D, Pin 15
int out2D = 13; // Motor A, Steuerleitung 2 - L293D, Pin 10
int buttonPin = digitalRead(1);
int buttonState = 0;
int buttonPushCounter = 0; // counter for the number of button presses
int lastButtonState = 0; // previous state of the button
void setup() {
Serial.begin(9600);
pinMode(enableA, OUTPUT);
pinMode(enableB, OUTPUT);
pinMode(enableC, OUTPUT);
pinMode(enableD, OUTPUT);
pinMode (out1A, OUTPUT);
pinMode (out2A, OUTPUT);
pinMode (out1B, OUTPUT);
pinMode (out2B, OUTPUT);
pinMode (out1C, OUTPUT);
pinMode (out2C, OUTPUT);
pinMode (out1D, OUTPUT);
pinMode (out2D, OUTPUT);
pinMode(buttonPin,INPUT);
int buttonPin = digitalRead(1);
digitalWrite(buttonPin, HIGH);
pinMode(buttonPin, INPUT);
digitalWrite(enableA, HIGH);
digitalWrite(enableB, HIGH);
digitalWrite(enableC, HIGH);
digitalWrite(enableD, HIGH);
}
void loop()
{
buttonState = digitalRead(buttonPin); // read the pushbutton input pin
if (buttonState != lastButtonState) { // compare buttonState to previous state
if (buttonState == 1) { // if the current state is 1 then the button
// went from off to on:
buttonPushCounter++;
Serial.println("on");
Serial.print(" ");
Serial.println(buttonPushCounter, DEC);
switch (buttonPushCounter) {
case 1:
Serial.println("1");
digitalWrite(out1A, LOW);
digitalWrite(out2A, HIGH);
digitalWrite(out1B, LOW);
digitalWrite(out2B, HIGH);
digitalWrite(out1C, LOW);
digitalWrite(out2C, HIGH);
digitalWrite(out1D, LOW);
digitalWrite(out2D, HIGH);
delay (2000);
digitalWrite(out1A, LOW);
digitalWrite(out2A, LOW);
digitalWrite(out1B, LOW);
digitalWrite(out2B, LOW);
digitalWrite(out1C, LOW);
digitalWrite(out2C, LOW);
digitalWrite(out1D, LOW);
digitalWrite(out2D, LOW);
break;
case 2:
Serial.println("2");
digitalWrite(out1A, HIGH);
digitalWrite(out2A, LOW);
delay (2000);
digitalWrite(out1A, LOW);
digitalWrite(out2A, LOW);
break;
}
}
}
}
Ziel von dem ganzen ist es halt, das ich durch drücken des Tasters verschiedene Positionen der Motoren ansprechen möchte. Zur Kontrolle sollte über SERIAL ein signal an den Rechner gehen und mitzählen so das man mitverfolgen kann bei welchem tasterstand man angekommen ist.
Das Problem, sobald ich den Arduino mit strom versorge spult der das Programm einmal ab, im kompletten, ohne das ich dafür den taster drücken würde, zusätzlich zählt er rasend schnell über serial hoch ohne das dafür der taster gedrückt würde, jetzt teste ich schon den ganzen tag hin und her, finde aber den Fehler einfach nicht ....