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
http://capsicum-felicitas.de.tl
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
  Zwei ident Feuchtesensoren an Arduino Uno R4 Karli 5 350 24.07.2016 23:36
Letzter Beitrag: SkobyMobil
Bug Mit zwei Ultraschallsensoren die Drehbewegung eines Servos steuern Poet 5 558 21.02.2016 18:37
Letzter Beitrag: Carlo
  Libraries, Befehle sowerum 3 704 09.02.2016 22:39
Letzter Beitrag: sowerum
  Webserver erzeugt zwei Durchläufe. favicon.ico?!? WOHER??? BERND87 6 1.572 04.02.2016 13:56
Letzter Beitrag: Pit
  Zahlenformat bei Kommunikation mit zwei Arduinos Matthias_Arduino 5 632 07.01.2016 22:40
Letzter Beitrag: Bitklopfer
  Mit dem Pin 8 und 9 vom Yun werden zwei LED wechselseitig blinken über http arduinofan 1 550 08.12.2015 15:03
Letzter Beitrag: arduinofan
  I2P mit zwei Microcontroller diode1990 2 551 26.10.2015 20:07
Letzter Beitrag: Bitklopfer
  Serielle Kommunikation zw. zwei Arduino UNOs Marduino_UNO 2 1.105 20.08.2015 07:13
Letzter Beitrag: Marduino_UNO
  Zwei Programme gleichzeitig Lindi01 9 2.022 27.07.2015 23:27
Letzter Beitrag: hotsystems
  Taster für zwei Funktionen nutzen - wie macht man das? Gelegenheitsbastler 2 945 22.07.2015 11:56
Letzter Beitrag: Scherheinz

Gehe zu:


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