huhu
gieb den Motor mal 5 ms als delay. bei 100ms sieht man ka kaum das sich da was bewegt.
tut sich dann immer noch nichts sieht es nach falsch angeschlossenem Motorwiklingen aus.
haste ein ossy da?
Gruß
Andreas
Edit: du willst doch auf die taste drücken und er soll los laufen oder?
Hmmm
ich habe alles so wie in diesem Thread beschrieben aufgebaut und bei mir geht es.
Hast du alles richtig angeschlossen?
ich werde in ner std mal posten wie ich es verdarhtet habe, vllt. habe ich ja was falsch gemacht.
ich wollte, dass mit tasterdruck die drehrichtung solange geändert wird, bis wieder gedrückt wird.
wiegesagt, der sketch in meinem Beitrag von 21:01 Uhr funktioniert aber. insofern müssten doch die wicklungen richtig angeschlossen sein?
richtig schreib mal vor das im loop
eine if schleife die den Taster abfragt und bei high bin d1 high setzt und im else d1 low setzt, dann sollte die Drehrichtung schon mal ändern können.
edit1:
void setup() {
// setzen der Digitalpins 1 und 2 als Ausgang.
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, INPUT);
}
void loop() {
Taste = digitalRead(3);
if (Taste == HIGH) {
digitalWrite(1, HIGH); // +5V an Pin D1
digitalWrite(2, HIGH); // +5V an Pin D2
delay(100); // warte eine zehntel Sekunde
digitalWrite(2, LOW); // Gnd an Pin D2
delay(100); // warte eine zehntel Sekunde
}else {
digitalWrite(1, LOW); // +5V an Pin D1
digitalWrite(2, HIGH); // +5V an Pin D2
delay(100); // warte eine zehntel Sekunde
digitalWrite(2, LOW); // Gnd an Pin D2
delay(100); // warte eine zehntel Sekunde
}
}
so müsste das ungefähr aussehe programmiere die Dinger normal im avr-studio in c da ist der code etwas andert
edit2: hoffe das mit der schleife vor dem loop wird was klare durch edit1 war etwas unglücklich ausgedrückt sorry dafür.
Geändert von nasenbär1 (12.01.2014 um 13:31 Uhr)
Das mit der IF Verknüpfung vor der loop Schleife verstehe ich nicht ganz.
hallo,
mit den Tatern ist das wegen des "Prellens" etwas kritisch, daher einen debounce einbauen , z.B. aus
http://forum.arduino.cc/index.php?topic=170643.0
void loop()
{
reading = digitalRead(inPin);
// Beim Wechsel des Eingangs von LOW zu HIGH und nach der Entprellzeit:
if (reading == HIGH && previous == LOW && millis() - time > debounce) {
time = millis();
Tue irgendwas
}
// Beim Wechsel des Eingangs von HIGH zu LOW und nach der Entprellzeit:
if (reading == LOW && previous == HIGH && millis() - time > debounce) {
time = millis();
Tue irgendwas anderes
}
previous = reading;
}
Lesezeichen