Ja, denn delay(500); reduziert eine Bewegung auf einen Schritt ja 500 ms.
Du machst es Dir m. E. schwerer, als es sein müßte, aber jeder Mensch muß halt seinen eigenen Weg finden ![]()
Ja, denn delay(500); reduziert eine Bewegung auf einen Schritt ja 500 ms.
Du machst es Dir m. E. schwerer, als es sein müßte, aber jeder Mensch muß halt seinen eigenen Weg finden ![]()
Hach mensch, ich probier und probier, aber es läuft einfach nicht.
Das Problem ist dieser Codebereich:
void loop() {
float vout = (analogRead(SENSOR) * MAX_VIN) / 1024.0f;
float vin = vout / (R2/(R1+R2));
Serial.println(vin);
delay(500);
Ohne delay(500); brummt der Motor laut und dreht gaaaaaaanz langsam...
Was stört den Motor denn an float?
Hallo Linda89
eigentlich ist Dir nicht mehr zu helfen , sorry . Dir wurde bereits mehrfach empfohlen eine Lib für den Motor zu verwenden die nicht blokiert und selbstständig die Impulse für den Motor erzeugt.
Mit einem delay , oder Serial.print in Deinem loop machst Du das gesamte Timing für Impulse kaputt. Die Art und Weise wie Du derzeit die Pulse erzeugst dient eigentlich nur dazu um zu verstehen wie das im Prinzip funktioniert. Nutzbar für eine reale Anwendung ist das so nichts, weil man nichts zusätzliches in den loop einbauen kann, ohne das es mehr oder weniger Auswirkung auf die Geschwindigkeit des Motors hätte.
Heinz
Doch doch ![]()
Kleiner Flüchtigkeitsfehler:
if ( setdir == 0) pd = highSpeed;
Ein µC ohne Fließkommarecheneinheit ist kein Taschenrechner, daher sind Fließkommarechnungen relativ langsam und die Textausgabe mittels 9600 Baud benötigt auch Zeit, aber der Motor sollte schon drehen, bei mir mit 160 Hz bei einer Impulslänge von ca. 0,3 ms:

Dieser Codebereich hat mit deinem Motor höchstens wegen delay(500); etwas zu tun.
Aber, wie @agmue schon gesehen hat, ist dein
sicher ein Problem, das dich mehr verwirrt, weil es was ganz anderes macht als du denkst.
This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.