Hallo, zusammen,
angeregt durch "Herbert's belebtes Haus" habe ich meine ersten Gehversuche mit Arduino und ATtiny gestartet. Bei der Gelegenheit ein großes Dankeschön an all diejenigen, die einem Laien wie mir mit ihren Kommentaren und Sketches den Einstieg in die sehr interessante Thematik möglich machen.
Ich möchte u.a. künftig meine Weichen mittels Servos steuern und habe mir in dem Zusammenhang das nachstehende Programm unter Zuhilfenahme von Sketches aus dem Stummi-Forum u.a. zusammengeschrieben, wobei meine Einfügungen minimal sind (um mich nicht mit fremden Federn zu schmücken):
#include <WProgram.h>
int myservo;
int KippschalterPin = 0;
int Servo_Pin = 2;
int Stellung1 = 28;//ServoStellung 1 (Einstellbar zwischen 0° bis max. 180°)
int Stellung2 = 0;//ServoStellung 2 (Einstellbar zwischen 0° bis 180°)
int Stellung_bisher;//Für Vergleich
const int Warten = 19;//19 MilliSekunden Warten nach Stellschritt. Nicht verändern!
void Servo_move(int servo,int Stellung_neu);
void setup()
{
pinMode(KippschalterPin, INPUT);
digitalWrite(KippschalterPin, HIGH);
pinMode(Servo_Pin, OUTPUT);
Stellung_bisher=Stellung1;//Ruhestellung
}
void loop()
{
if(digitalRead(KippschalterPin)==HIGH)
Servo_move(Servo_Pin, Stellung1);
if(digitalRead(KippschalterPin)==LOW)
Servo_move(Servo_Pin, Stellung2);
delay(20);
}
void Servo_move(int servo,int Stellung_neu){
int Schritt;
if(Stellung_neu==Stellung_bisher)return;
Schritt=(Stellung_neu>Stellung_bisher)?1:-1;
while(Stellung_bisher!=Stellung_neu){
Stellung_bisher+=Schritt;
digitalWrite(servo, HIGH);
delayMicroseconds((Stellung_bisher*8)+500);
digitalWrite(servo, LOW);
delay(Warten);
}
}
Kurze Anmerkung: "KippschalterPin = 0" und "Servo_Pin = 2" ist schon für den ATttiny eingestellt
Ergänzende Bemerkung:
Nach diversen Versuchen war der o.g. Sketch bisher der einzige, den ich sowohl auf dem Arduino als auch auf dem ATttiny erfolgreich speichern konnte.
Das o.g. Programm selbst läuft einwandfrei. Die Servos werden problemlos geschaltet.
Es gibt im Betrieb keinerlei Zuckungen bei den Servos, weder in Ruhestellung, noch bei der Bewegung.
Nun zu meinem Problem:
Einzig beim Einschalten der Stromversorgung schalten die Servos jeweils um, und zwar - soweit ich das beobachten kann - in die
"Stellung 1" bzw. "Stellung_bisher", egal, in welcher Stellung die Servos beim Ausschalten der Stromversorgung gestanden haben.
Ich habe schon versucht, den Sketch abzuändern, jedoch aufgrund meiner beschränkten Kenntnisse ohne Erfolg.
Meine Frage bzw. Bitte:
Kann man den Sketch so modifizieren, dass die Servos beim Einschalten der Stromversorgung stillhalten?
Im Voraus ein kräftiges Dankeschön für Eure Hilfe.
Einen schönen Abend wünscht
Bierrudl