INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
zwei Befehle paralell
19.04.2014, 16:02
Beitrag #1
zwei Befehle paralell
Hallo, ich bin neu hier, kenne C/C++ nur aus den Arduino-Fachbücher und solche Hilfe, welche ich bis jetzt nicht gefunden habe. Ich möchte gerne auf dem Arduino-UNO folgenden Sketch betreiben: über einen Schalter gebe ich ein Startsignal ins UNO-Board. Dann soll ein Wechselblinker starten und paralell dazu mit einer Verzögerung von 1 Sekunde zwei Servomotoeren angesteurt und betrieben werden.
Kann mir da jemand helfen? Den Sketch für den Wechselblinker habe ich aus einer Bibliothek gezogen. Den Rest habe ich noch nicht gefunden.
Danke für Eure Hilfe. Oberlaender
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.04.2014, 00:29
Beitrag #2
RE: zwei Befehle paralell
Hallo Oberlaender,

"parallel" (ao wie du es wohl meinst) gibt es beim Arduino nicht. Warum das so ist erfährst du ua. hier: http://www.arduinoforum.de/arduino-Threa...ithreading

Um dir helfen zu können wäre es gut den Code für den Wechselblinker reinzustellen (allein da gibts zig Möglichkeiten). Dann solltest du noch genauer beschreiben was mit
Zitat: Dann soll ein Wechselblinker starten und paralell dazu mit einer Verzögerung von 1 Sekunde zwei Servomotoeren angesteurt und betrieben werden.
gemeint ist.

Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.04.2014, 08:28
Beitrag #3
RE: zwei Befehle paralell
Guten Morgen rkuehle,
danke dass Du mir helfen willst. Was will ich: ich möchte einen Bahnübergang ansteuern, welche folgenden Arbeitsablauf beinhaltet.

Kippschalter EIN; Wechselblinker (rote LED) startet; ca 500ms(variabel) verzögert, schliessen zwei Servomotoren die Barriere; wenn Barriere zu, Kontrollblinker (gelbe LED) startet. -Zug fährt durch-
Kippschalter AUS; gelbe Kontrollblinker stoppen und die beiden Servos öffnen die Barriere; ca 500ms(variabel) verzögert stellt der Wechselblinker ab.

Mit parallel meinte ich, dass der Wechselblinker durchläuft und andere Befehle hinzukommen (also so quasi parallel).
Ich hoffe, du verstehst was ich meine. Der Ablauf scheint einfach, vielleicht ist er aber für das Arduino komplex.

Ich danke Dir auf jeden Fall jetzt schon für deinen Input.


Hier der Sketch, wie ich ihn momentan habe:
int tasterPin = 6; //Kippschalter-Pin 6
int ledPin[] = {1,2,8,9}; //Wechselblinker rote und gelbe(8+9) LED
int analogPin[] = {10,11}; //Servo für Schlagbäume

void setup(){
pinMode(6, INPUT); //Kippschalter-Pin als Eingang
pinMode(1, OUTPUT); //rote LED Wechselblinker
pinMode(2, OUTPUT); //rote LED Wechselblinker
pinMode(8, OUTPUT); //gelbe LED Kontrollblinker
pinMode(9, OUTPUT); //gelbe LED Kontrollblinker
pinMode(10, OUTPUT); //Servo für Schlagbäume
pinMode(11, OUTPUT); //Servo für Schlagbäume

}

void loop(){

if(tasterPin = HIGH); //Schrankenwärter schliesst Nü

digitalWrite(1, HIGH); // schaltet den Wechselblinker ein
delay(1000);
digitalWrite(1, LOW);
delay(1000);
digitalWrite(2, HIGH);
delay(1000);
digitalWrite(2, LOW);
delay(1000);
}

Gruss und Danke Oberlaender
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.04.2014, 10:10
Beitrag #4
RE: zwei Befehle paralell
Hallo!
..mit Delay stoppt der Programmablauf, also nicht geeignet.
Schau die mal unter Beispiele/Digital/BlinkWithoutDelay an.
Wennst noch einen Zähler für jedes LED==HIGH hochlaufen lässt,
sollte das mit dem Timing der Schranken auch gehen, den man auch in kleinen Schritten steuern sollte, um die Geschwindigkeit der Barriere anzupassen.

mfg Martin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.04.2014, 19:00 (Dieser Beitrag wurde zuletzt bearbeitet: 22.04.2014 07:05 von rkuehle.)
Beitrag #5
RE: zwei Befehle paralell
Hallo Oberlaender,

ich habe mal deinen Code genommen und daraus eine Mischung aus echtem Code und Kommentaren / Pseudocode gemacht. Dadurch sollte ersichtlich sein wie man so etwas steuern kann (nicht muss).Aus deiner Abfolge war nicht richtig zu erkennen ob die rote LED weiterläuft. Daher wird Sie im Beispiel nach 1000 ms abgeschaltet.
Code:
int tasterPin = 6; //Kippschalter-Pin 6
int ledPin[] = {1, 2, 8, 9}; //Wechselblinker rote und gelbe(8+9) LED
int analogPin[] = {10, 11}; //Servo für Schlagbäume
/* Variablen um delay zu ersetzen
dadurch ist es möglich "parallel"
andere Funktionen während des Blinkens aufzurufen */
// Interval für LED
unsigned int intervalled = 1000;
// Interval für Servo
unsigned int intervalservo = 500;
// Startzeit LED
unsigned int jetztledrot;
unsigned int jetztledgelb;
unsigned int jetztservo;
/* Pseudo-variable um Servo zu emulieren
sonst lässt sich der Skeetch nicht übersetzen
stattdessen muss natürlich der Code für die
Servosteuerung und Abfrage des Servostatus geschrieben werden */
boolean servo_geschlossen = false;
boolean servo_offen = false;
void setup() {
  pinMode(6, INPUT); //Kippschalter-Pin als Eingang
  pinMode(1, OUTPUT); //rote LED Wechselblinker
  pinMode(8, OUTPUT); //gelbe LED Kontrollblinker
  pinMode(10, OUTPUT); //Servo für Schlagbäume
}
void loop() {
  if (tasterPin = HIGH) //Schrankenwärter schliesst Nü
  {
    digitalWrite(1, HIGH); // schaltet den Wechselblinker ein
    jetztledrot = millis();
    jetztservo = millis();
    if  (millis() - jetztledrot > intervalled) digitalWrite(1, LOW);
    /* Verzögerung für Start Servo
    Servo starten und Barriere schließen
    hinter dem If muss der Code zur Servosteuerung (schließen) rein */
    if (millis() - jetztservo > intervalservo) servo_geschlossen = true;
    if (servo_geschlossen == true) digitalWrite(8, HIGH);
  }
  else
  {
    /* Servo starten und Barriere öffnen
    Hier muss der Code zur Servosteuerung (öffnen) rein */
    servo_offen = true;
    if (servo_offen = true) jetztledgelb = millis();
    if (millis() - jetztledgelb > intervalservo) digitalWrite(8, LOW);
  }
}
Wichtig scheint mir noch, dass die Abfrage des Kippschalters mit
Code:
if (tasterPin = HIGH)
nicht sicher ist, da die Taster pro Schaltvorgang mehrere Pegeländerungen produzieren (dürften). Hier solltest du dich mal mit dem Debouncing auseinandersetzen. Wie das geht steht ua. hier: http://popovic.info/html/arduino/arduino...#Debouncen

Hope it helps!

Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.04.2014, 20:38
Beitrag #6
RE: zwei Befehle paralell
Hallo rkuehnle,
die roten LEDs laufen durch, bis vom Kippschalter der Befehl "aus" (low) kommt. Während die Schranken öffnen, sollen die roten LEDs abstellen. Entschuldige wenn es unklar war.
Aber Danke für Deine Hilfestellung und den Sketch.
Gruss Roland
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.05.2014, 02:23
Beitrag #7
RE: zwei Befehle paralell
he gibt es da jetzt auch einen fertigen sketch zu?
fände es schade wenn immer nur die probleme aber die lösungen nie zu sehen wären Big Grin

Nicht denken,...
...nachdenken... Rolleyes

Smarter - LiveData - KLAMM.de
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.05.2014, 07:50
Beitrag #8
RE: zwei Befehle paralell
Hallo Higi,
schau Dir mal das Sketchen von Ricardo an. Da ist die Lösung doch drinnen.

Wenn zum Schranken schliessen Modellbau Servos zum Einsatz kommen, könnte man die servo.h, die standartmässig bei der IDE mitinstalliert wird, nutzen. Damit könnte dann noch der verstellwinkel sowie die Geschwindigkeit gesteuert werden .

Gruß Sven

Nichts auf der Welt ist unnütz, es kann im schlimmsten Fall immer noch als schlechtes Beispiel dienen.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Fehlermeldung bei: Zwei-dimensionales Array in Ein-dimensionales Array übertragen artUdino 32 3.153 05.10.2024 09:21
Letzter Beitrag: Kai R.
  Zwei Funktionen nebeneinander laufen lassen Felix R. 7 1.177 20.01.2024 12:09
Letzter Beitrag: Felix R.
  Nur eine von zwei LED's leuchtet Kai_himself 6 1.340 30.12.2022 08:27
Letzter Beitrag: Kai_himself
  millis() mit zwei Werten in einer for-Scheife gutschy 14 1.872 29.10.2022 14:36
Letzter Beitrag: gutschy
  Befehle zum Nextion senden stingray05 8 2.565 10.02.2022 19:28
Letzter Beitrag: miq19
  Fehler durch zwei I2C Busse ? sgol 32 7.003 28.02.2021 18:11
Letzter Beitrag: Tommy56
  Die && Verknuepfung von zwei Schaltern auf ESP8266 will nicht. gutschy 6 1.611 22.01.2021 22:25
Letzter Beitrag: hotsystems
  RS485-Verbindung aufbauen und Befehle an Schrittmotormodul senden. Irek 24 7.367 17.11.2020 14:23
Letzter Beitrag: Irek
  Timing-Problem mit zwei Nanos und I²C miq19 31 5.198 05.08.2020 15:59
Letzter Beitrag: Tommy56
  Zwei Arduinos via Bluetooth koppeln schaarva 19 6.752 25.06.2020 14:34
Letzter Beitrag: schaarva

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste