Hilfe Sketch für Ironmankostüm.

OP #4595012
Lesenswert?

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:-)
OP #4595309
Lesenswert?

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 ;-)
Gast #4595463
Lesenswert?

> 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.
#4595925
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren