Arduino kann nicht rechnen?!?!?

Hallo,
ich spiele gerade ein bisschen mit meinem Arduino Mega rum und versuche das Ding zu verstehen.
Habe einen Poti und einen Servo angeschlossen. (Siehe Bild)
Ich lese den Wert vom A15 aus, normiere ihn auf 180° und steuere mit dem Wert den Servo an.
Klappt aber nicht
Die Umrechnung des Sensorwerts in einen Winkel klappt nicht. Was mache ich falsch????

 #include <Servo.h>  

Servo servoblau; 
int eingang= A0;
int sensorwert = 0; 
int winkel;


void setup()

{
servoblau.attach(8); 
Serial.begin(9600);
}

 

void loop()

{ 
sensorwert =analogRead(eingang);
winkel = (sensorwert/1023*180);
Serial.println(winkel);
Serial.println(sensorwert);
servoblau.write(winkel);
delay(500);
}

Der serielle Monitor Zeigt für den Wert winkel immer "0" an!?!?
sensorwert zeigt je nach Potistellung zwischen 0 und 1023 an.
Was stimmt an meiner Rechnung nicht? :thinking:

Vorab schonmal Danke.

Vermutlich wird sensorwert/1023 Null. Probiere es nochmal mit 1023.0 damit die Division mit Gleitkomma gerechnet wird.

Der Arduino kann schon richtig rechnen, nur Du verstehst nicht, wie er das macht.
Wenn nichts anderes gefordert ist, rechnet er mit int und von links nach rechts.
Und da ist

gleich 0, wenn der Sensorwert nicht gerade 1023 ist und 0 * irgendwas bleibt 0.

Wenn Du sensorwert*180 / 1023 rechnest, sieht das schon anders aus.

Gruß Tommy

Edit: Besser: sensorwert*180UL / 1023
Danke combie für die Korrektur

Hallo
Schaue dir mal die map() Funktion an.
Ich wünsche einen geschmeidigen Abend und viel Spass beim Programmieren in C++.

Danke für die Hinweise.
Macht alles Sinn wenn man drüber nachdenkt.
Der Informatik Grundkurs für Maschinenbauer ist nun auch schon über 20 Jahre her :s :sob:, da vergisst man ein paar Feinheiten.
Von map() habe ich auch schon mal was gehört. Lese ich nochmal.

jaaaa.....
sensorwert*180UL / 1023
Würde es noch etwas besser machen.

Vom Servo? :sunglasses:
Pin A15 und 8 im Schaltbild vertauscht!?!!

Lese natürlich von A15...

Was heißt den UL??

Nö.

Unsigned Long.

Wo Du Recht hast, hast Du Recht. Ich korrigiere es.

Gruß Tommy

Laut Programm nicht.
Sondern von A0
Zudem hast du den Servo an A15 im Plan und das Poti an 8.

Siehe: "C++ reference integer literal"

Ich bin wohl schon zu müde.
Schaltplan anders gemalt als zusammengesteckt.
Poti ist aus A0 und wird gelesen.
Der Servo hängt an Pin 8.

So sieht der Schaltplan aus.

Ich nenne sowas gerne "Fantasie Bilder" oder "Fantasie Code", wenn die Realität und das gezeigte keine Übereinstimmung hat. Nicht zusammen passt.

Gut, hier war das kein Drama.

Aber in vielen Fällen zieht sowas einen Thread wie ein Kaugummi in die Länge und ist fürchterlich frustrierend. Für alle Beteiligten.

Für die Hilfesuchenden gibt es nur ein Mittel dagegen: Sorgfalt!
Für die Leser/Helfer heißt das Mittel: Misstrauen und Wachsamkeit.
Es stellt die Logik und Diagnosefähigkeiten auf eine ganz harte Probe.

Du hast hier Programm und Bild geliefert. Das macht längst nicht jeder. So konnte man schon sehen, dass sich da was "verirrt" hat. Das hat es deutlich entschärft.

Ich möchte dem TO mal gratulieren weil er ohne Nachfragen alle relevanten Infos im ersten Post gegeben hast.

Ja, das Schaltbild sollte mit dem Sketch zusammenpassen. Das verwirrt.
Aber im Endeffekt ist der Fehler für einen etwas geübten Arduino-Fan leicht zu finden.

Grüße Uwe