was ist hier falsch?

“int poti” ist ein Potentiometer

angeschlossen ist alles an einem arduino uno 3


#include <Servo.h>


int poti = 0;


Servo servo_4;


void setup()
{
  servo_4.attach(4, 500, 2500);
  pinMode(A1, INPUT);


  servo_4.write(poti);
  delay(10); // Wait for 50 millisecond(s)
}


void loop()
{
  poti = analogRead(A1);
  delay(10); // Wait for 50 millisecond(s)
}
(1 votes)
Loading...

Similar Posts

Subscribe
Notify of
4 Answers
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
RareDevil
1 year ago

Vlt erzählst Du auch, was Du vom Code erwartest… Der Servo wird zumindest nur einmal im Setup angesteuert. Und zwar auf Pos 0, wie “poti” zuvor initialisiert wurde… Danach wird erst der analoge Eingang im Loop eingelesen. Aber kein Befehl mehr an den Servo gesendet, da Setup nur ein einziges mal durchlaufen wird… Analogeingänge müssen auch nicht als Eingang deklariert werden…

Ergänzend: Delay(10) sind keine 50ms, wie im Text dahinter, sondern 10ms…

RareDevil
1 year ago
Reply to  RareDevil

Noch was… Den Servo kannst Du nur von 0-180 ansteuern, AnalogRead liest aber 0-1023 ein.. Also nur ein Bruchteil deines Poti wird wirklich als Servoposition ausgewertet. Der Rest ist einfach Endanschlag.. Du müsstest evt die Poti-Position noch mappen, damit der volle Poti-Weg auch den Servo exakt steuern kann…

Minihawk
1 year ago

a.) Der Analoge EIngang muss nicht per pinMode gesetzt werden (darf nicht)

b.) Hier wird nur ein einziges Mal das Poti gelesen (in setup() ) Danach wird poti stets gelesen, aber nicht mehr auf Servo ausgegeben (in loop() )