Hi alle zusammen, ich brauche Hilfe beim schreiben eines Sketch für mein Arduino Uno 3, da ich nur Laie bin und mir so ein bisschen Randwissen angeeignet habe, jetzt jedoch aus irgendein Grund vorm Scheidern stehen. Folgende Funktion will ich erreichen mit Tastendruck, und zwar soll 2 Seromotoren mit 90 Grad angesteuert werden, in die eine Richtung langsamer als in die andere Richtung, gleichzeitig sollen 3 LED angehen in die Richtung wo der Servo schneller fährt, dabei soll bevor die LEDs dauerhaft leuchten eine kurze Schleife erzeugt werden, wo die LEDs 3 mal für ein paar Millisekunden/Sekunde an und aus gehen und in die Richtung wo der Servo langsamer fährt, sollen die LEDs ausgehen. Einen Sketch habe ich auch schon erstellt, bei dem die Servomotoren und LEDs auf Tastenknopf reagieren: Video: https://www.youtube.com/watch?v=YwniiN5H2IA Sketch: #include <Servo.h> const int tasterPin = 2; const int ledPin1 = 13; const int ledPin2 = 10; const int ledPin3 = 11; int tasterStatus = LOW; int tasterGedrueckt = 0; int lichtmodus = 0; int ledStatus = LOW; Servo servoblau1; Servo servoblau2; unsigned long tasterZeit = 0; unsigned long entprellZeit = 10; unsigned long ledMillis = 500; void setup() { servoblau1.attach(6); servoblau2.attach(9); pinMode(ledPin1,OUTPUT); pinMode(ledPin2,OUTPUT); pinMode(ledPin3,OUTPUT); pinMode(tasterPin,INPUT); } void loop() { tasterStatus = digitalRead(tasterPin); if (tasterStatus == HIGH) { tasterZeit = millis(); tasterGedrueckt = 1; } if ((millis() - tasterZeit> entprellZeit)&& tasterGedrueckt == 1) { lichtmodus++; tasterGedrueckt = 0; } if (lichtmodus == 0) { digitalWrite(ledPin1,HIGH); digitalWrite(ledPin2,HIGH); digitalWrite(ledPin3,HIGH); servoblau1.write (90); servoblau2.write (0); delay(50); } if (lichtmodus == 1) {digitalWrite(ledPin1,LOW); digitalWrite(ledPin2,LOW); digitalWrite(ledPin3,LOW); servoblau1.write (0); servoblau2.write (90); delay(50); } if (lichtmodus >= 2) { lichtmodus = 0; } } Wenn ihr mir helfen könntet würde ich mich freuen:-)
Naja wie ich die Servo's in eine Richtung langsamer bewegen kann und LED's bevor sie auf Tastendruck dauerhaft leuchten vorher kurz an,aus,an,aus,an machen kann.Ich dachte an eine Bedingung in der Bedienung,nur weiß ich nicht ganz wie ich diese mit einbringen kann um die Ursprünglich Bedingungen noch auszuführen (also Taster High= Servo's 90 Grad bewegen/LED's an(vorher Bedingung), Taster LOW=Servo's fahren 90 Grad zurück und LED's gehen aus),hoffe ich konnte so einiger Maßen verständlich erklären was ich gerne noch einbauen wollen würde in den Sketch ;-)
Um einen Servo in der Geschwindigkeit zu steuern mußt du das bei Verwendung mit einem Controller mittels PWM machen. Mit Arduinosoftware geschieht das mittels analogWrite https://www.arduino.cc/en/Tutorial/Fade Hinweis: Einen (Servo)Motor mußt du über einen Transistor an den Mikrocontroller anschließen.
> Einen (Servo)Motor mußt du über einen Transistor an den > Mikrocontroller anschließen. Nein, man kann Modellbau Servos direkt mit dem µC ansteuern. Um die Geschwindigkeit eines Servos zu beeinflussen, muss man wissen, wie sie sich verhalten. Je weiter die aktuelle Position von der Soll-Position abweicht, umso schneller läuft der Motor. Um eine langsame bewegung von 90° zu erreichen, musst du lediglich die Soll-Position langsam verändern. Also nicht schlagartig von 0° nach 90°, sondern zum Beispiel in 1° Schritten pro Sekunde. Dann dauert die ganze Bewegung 90 Sekunden. > Ich dachte an eine Bedingung in der Bedienung,nur weiß ich nicht ganz > wie ich diese mit einbringen kann um die Ursprünglich Bedingungen noch > auszuführen Versteht das jemand? Den ersten Beitrag verstehe ich ebenso wenig. Ich denke, du wirst dich mit den Themen Multitasking/Threads/Zustandsautomaten befassen müssen.
Ein bisschen musst du dich da schon selbst in die Materie hineinhauen. Du brauchst dir aber nur die diversen Beispiele ansehen. Z.B. BlinkWithoutDelay Einen fertigen Sketch wird dir hier keiner schreiben. Außerdem solltest du deinen Code entsprechend dokumentieren, sonst muss sich jeder der ihn liest selber die Funktionen zusammenklauben und in vier Wochen weißt du selbst nicht mehr was du geschrieben hast.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.