Servo mit 3 Taster

Nabend,

Ich habe schon einige Servos mit einem Poti ans laufen bekommen doch nun möchte ich gerne das Servo mittels 3 Taster bewegen.
1 für rechtsrum 1 für links um und der dritte soll den Servo wieder in 0-Stellungen bringen.

Wie wäre das am einfachsten zu realisieren?

Danke und Gruß

Jens

-> Arduino Basic bitte durcharbeiten.

  1. Delays vermeinten, anstatt dessen mit millis() arbeiten -> blinkWithoutDelay
  2. Taster software entprellen

Diablo:
1 für rechtsrum 1 für links um und der dritte soll den Servo wieder in 0-Stellungen bringen.

Wie wäre das am einfachsten zu realisieren?

Zum Beispiel (Code ungetestet und ohne Garantie):

#include <Servo.h> 
 
Servo myservo;  // create servo object to control a servo 

#define LEFTBUTTON 2
#define RIGHTBUTTON 3
#define MIDDLEBUTTON 4
 
void setup() 
{ 
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object 
  pinMode(LEFTBUTTON,INPUT_PULLUP); 
  pinMode(RIGHTBUTTON,INPUT_PULLUP); 
  pinMode(MIDDLEBUTTON,INPUT_PULLUP); 
} 
 
void loop() 
{ 
  if (digitalRead(LEFTBUTTON)==LOW) myservo.write(30);
  if (digitalRead(RIGHTBUTTON)==LOW) myservo.write(90);
  if (digitalRead(MIDDLEBUTTON)==LOW) myservo.write(150);
  delay(50);
}

Wenn Du in Deiner Schaltung lieber externe PullDown-Widerstände an den Buttons verwendest, ändere den pinMode auf INPUT und die Buttonabfrage auf HIGH.

Besten Dank schonmal.
Ich glaube ich hatte mich falsch ausgedrückt, sry für die Verwirrung.

Also wenn ich Button L betätige soll der Servo sich solange drehen bis ich aufhöre zu drücken.

Wenn Button R betätigt wird das Ganze in die andere Richtung.

Wenn ich Button "0-Stellung" betätige soll der Servo in seine Grundstellung fahren.

Danke und Gruß

Jens

Wie wäre es mal mit Eigeninitiative? Tutorials dazu sind im Netz haufenweise.

Hier eine Möglichkeit, wie du es machen kannst. Code unvollständig!!

		static unsigned long last_millis;
		static byte pos_servo;
		byte val_button_left = 0;
		byte val_button_center = 0;
		byte val_button_right= 0;
		
		
		if(millis() - last_millis > 100)
		{
			last_millis = millis();

			val_button_left = digitalRead(BUTTON_LEFT);
			val_button_center = digitalRead(BUTTON_CENTER);
			val_button_right = digitalRead(BUTTON_RIGHT);
			
			
			// Servo links
			if((val_button_left && pos_servo > 0) || val_button_center && pos_servo > 90)
			{
				pos_servo--;
			}
			// Servo rechts
			else if((val_button_right && pos_servo < 179) || val_button_right && pos_servo < 90)
			{
				pos_servo++;
			}
			else
			{
				// nothing to do
			}
			
			// Servo anfahren
		}