BITTE hilfe für Servo

Liebe Arduinos ,
da ich schon fast am Verzweifeln bin erhoffe ich mir auf diesem Weg Hilfe !
Seid geraumer Zeit versuche ich krampfhaft einen Servo mittels Taster dazu zu überreden zu tun was er soll , aber der denkt garnicht dran :cry:
Will mittels Taster einfach nur einen Punkt A anfahren und dann mit dem 2. Taster wieder zurück .
Als Sketch habe ich den hier versucht :

#include<Servo.h>

Servo myservo;

int pos = 0; 
int posA = 90; 

int Speed = 15; 
int tastUp = 12; 
int tastDown =13; 

void setup()
{
myservo.attach(3); 

pinMode(tastUp,INPUT);
pinMode(tastDown,INPUT); 


}


void loop()
{
if (digitalRead(tastUp)==LOW)

for(int pos = posA; pos<posA; pos+=1) 
{
myservo.write(pos); 
delay(Speed);
}

if (digitalRead(tastDown)==LOW)
for(int pos =  posA;pos > posA; pos-=1) 

{
myservo.write(pos); 
delay(Speed);

}
}

Angeschlossen wie folgt :
Servo + an +
Servo - an GND
Servosteuerung an 3
Taster an 12 und Steuerung
Taster 2 an 13 und Steuerung

Bitte nicht lachen ich bin blutigrt Laie und mehr der Mechaniker als der Elektroniker , brauche die Schaltung aber für die Steuerung auf der MOBA Anlage meiner Enkelchen .
Wäre für jede Hilfe Dankbar .
LG
Carsten

Du machst mit der Abfrage der Taster nichts!

if (digitalRead(tastUp)==LOW)
for(int pos = posA; pos<posA; pos+=1) 
{
myservo.write(pos); 
delay(Speed);
}

Soll der Servo nur zurückfahren wenn du die Taste gedrückt hast? Wenn ja, dann
einfach eine weitere Klammer

if (digitalRead(tastUp)==LOW)
{
  for(int pos = posA; pos<posA; pos+=1) 
  {
  myservo.write(pos); 
  delay(Speed);
  }
}

carsten15:
pinMode(tastUp,INPUT);
pinMode(tastDown,INPUT);

Bist Du sicher, dass Du Deine Taster zusammen mit externen PullDown-Widerständen beschalten möchtest?

Bei kurzen Leitungslängen würde ich es eher bevorzugen, nur die Taster zu verbauen, die Pull-Widerstände in der Schaltung wegzulassen und stattdessen die internen PullUp-Widerstände des Atmegas zu aktivieren (pinMode INPUT_PULLUP).

Dein Code korrigiert und auf Verwendung von internen PullUps umgeschrieben:

#include<Servo.h>
Servo myservo;

int pos=90;
int Speed = 50; 
int tastUp = 12; 
int tastDown =13; 

void setup()
{
  myservo.attach(3); 
  pinMode(tastUp,INPUT_PULLUP);
  pinMode(tastDown,INPUT_PULLUP); 
}


void loop()
{
  if (digitalRead(tastUp)==LOW) pos++;
  if (pos>180) pos=180;
  if (digitalRead(tastDown)==LOW) pos--;
  if (pos<0) pos=0;
  myservo.write(pos); 
  delay(Speed);
}

Falls Du lieber externe PullDown-Widerstände verbaust, ändere den pinMode zurück auf INPUT und teste beim Abfragen auf HIGH anstelle von LOW, ob der Button gedrückt wurde.

carsten15:
int pos = 0;

-->8-- snip --8<--

for(int pos = posA; pos<posA; pos+=1)

Mal abgesehen davon, dass die Variable 2x initialisiert wird, kann das nicht funktionieren:

"Setze pos auf den Wert posA und führe aus, solange pos kleiner als posA ist".
Du initialisierst pos mit dem Wert von posA, die Bedingung, dass pos kleiner posA ist, wird niemals eintreten.

Nachtrag @Jurs: der max Wert soll 90 sein, wenn ich das richtig lese im Eingangsbeitrag, nicht 180?

Danke an Euch alle , es hat mit tatsächlich weiter geholfen ;D
An jurs , ja die ekternen wiederstände muss ich beibehalten da ich das ganze dann auf einen Attiny brennen will :grinning:

carsten15:
An jurs , ja die ekternen wiederstände muss ich beibehalten da ich das ganze dann auf einen Attiny brennen will

Also auch im Datenblatt der Attiny http://www.atmel.com/images/atmel-2586-avr-8-bit-microcontroller-attiny25-attiny45-attiny85_datasheet.pdf lese ich, dass diese interne PullUps haben:

10.2 Ports as General Digital I/O
The ports are bi-directional I/O ports with optional internal pull-ups.

Aber wenn die Leitungen zu den Schaltern lang sind, nimmst Du wahrscheinlich sowieso besser "starke" Pull-Widerstände mit z.B. 3.9K oder 4.7K statt die "schwachen" internen PullUps (ca. 20...50K) zu verwenden, um die Störanfälligkeit der Signale gering zu halten.

Hallo nochmal , dachte schon ich habe es geschafft , klappt auf dem Arduino Uno auch wie gewollt , aber wenn ich das ganze auf den Attiny brennen will kommt immer

pleace define PAGEL... was man ja ignorieren kann ?
undYikes! Invalid device signature.Double check connections and try again, or use -F to override this check .
Da der Timer in Servo .h schwirigkeiten machen soll habe ich auch mal auf Servo8Bit.h umgeschrieben was eigendlich gehen soll . Aber macht es nicht . Verwende einen Attiny 85 mit 20 Hz.
Was mache ich falsch ?
LG
Carsten

#include <Servo8Bit.h>

Servo8Bit myServo;

int pos=0;
int Speed = 40;
int tastUp = 2;
int tastDown =3;

void setup()
{
myServo.attach(1);
pinMode(tastUp,INPUT_PULLUP);
pinMode(tastDown,INPUT_PULLUP);
}

void loop()
{
if (digitalRead(tastUp)==LOW) pos++;
if (pos>100) pos=100;
if (digitalRead(tastDown)==LOW) pos--;
if (pos<0) pos=0;
myServo.write(pos);
delay(Speed);
}