Koennte ein Internet Meme werden.
Hallo Leute,
mein erster Plan war zwei Servos an einem PWM Signal laufen zu lassen. Das klappt auch grundsaetzlich. Leider musste ich feststellen das die Servos Bauraum bedingt nur gespiegelt eingebaut werden koennen, was heisst die Servos muessen gegenlaeufig drehen (und gleichzeitig) . Also komme ich wohl nicht an millis() vorbei
Und jetzt probiere ich hier rum und bin der Meinung das muesste doch so klappen, also jetzt ernsthaft, ich beacker das Thema ja schon eine weile. Aber mein Nano Clon hat Schwierigkeiten dabei meinen Code umzusetzen. Vielleicht ist er damit einfach ueberfordert?
Der Serial Monitor ist recht aktiv, aber das Ergebnis laesst mich raetseln.
So wie ich es hier probiert habe, bin ich der Meinung das die for-Schleife 2 Sekunden warten muss bis millis() durchgelaufen ist. (Ich habe millis() auch schon in der for-Schleife platziert) Aber ist halt nicht. Der Monitor rattert einfach durch, die for-Schleife rennt so schnell wie es der Ausgabe moeglich ist.
#include <Servo.h>
int Tor1 = 1;
int Tor2 = 1;
Servo Serv;
unsigned long currentMillis = 0;
unsigned long previousMillis = 0;
unsigned long previousMillis_b = 0;
void setup() {
Serial.begin(9600);
}
int schalten (int PIN, int soll, int ist, long pause ){
Serv.attach(PIN);
if (soll>ist){
if (currentMillis - previousMillis >= pause) {
previousMillis = currentMillis;
for(ist; ist<=soll; ist++){
Serv.write(ist);
Serial.print("Ist geht plus: ");
Serial.println(ist);
Serial.print("Was ist soll: ");
Serial.println(soll);
}
}
}
if (soll<ist){
if (currentMillis - previousMillis >= pause) {
previousMillis_b = currentMillis;
for(ist; ist>=soll; ist--){
Serv.write(ist);
Serial.print("Ist geht minus: ");
Serial.println(ist);
Serial.print("Was ist soll: ");
Serial.println(soll);
}
}
Serv.detach();
return soll;
}
}
void loop() {
currentMillis = millis();
if ((digitalRead(A0)) == HIGH){
Tor1 = schalten(9, 20, Tor1, 2000);
}
else{
Tor1 = schalten(9, 0, Tor1, 2000);
}
// if ((digitalRead(A0)) == HIGH){
// Tor2 = schalten(7, 20, Tor2, 1000);
// }
// else{
// Tor2 = schalten(7, 0, Tor2, 1000);
// }
}
Und wer mir jetzt aufs Brot schmieren will, er haette es vorher gewusst. Nur zu, und ruhig dick. Das passt schon.
Und schon mal Danke fuer die Hilfe im Voraus.
Gruesse,
gutschy
P.S.
ich hab mir ueberlegt die delay() Variante meines Servo Treibers auf zwei Servos umzuschreiben, also zur Not. Aber das muss jetzt oben trotzdem fertig werden, ich mein, das gibts doch nicht.