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:
  • 2 Bewertungen - 3 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Unterschiedliche Programme durch Switch/ Case
27.09.2016, 13:06 (Dieser Beitrag wurde zuletzt bearbeitet: 27.09.2016 13:07 von SpeedShifter.)
Beitrag #1
Unterschiedliche Programme durch Switch/ Case
Hallo Leute,

folgendes Szenario. Ich habe 10 unterschiedliche digitale Signale die ich mit dem Arduino ausgeben möchte. Das Auswählen dieser Signale soll über 4 Jumper also Digital Input geschehen. [/code]

Meine Frage ist nun wie ich das Softwaretechnisch miteinander verbinde. Ist es möglich das ich über die Switch Case statements die 4 DigitalPins abfrage und dann in das jeweilige "Untermenü" springe?

Würde dann in etwa so aussehen können:

if (pin1=LOW && pin2=LOW && pin3=LOW && pin4=LOW) {var==1;}
if (pin1=HIGH && pin2=LOW && pin3=LOW && pin4=LOW) {var==2;}
if (pin1=LOW && pin2=HIGH && pin3=LOW && pin4=LOW) {var==3;}
if (pin1=HIGH && pin2=HIGH && pin3=LOW && pin4=LOW) {var==4;}

// und so weiter...

switch (var) {
case 1:
//do something when var equals 1
break;
case 2:
//do something when var equals 2
break;
case 3:
//do something when var equals 3
break;
case 4:
//do something when var equals 4
break;
default:
// if nothing else matches, do the default
// default is optional
break;
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.09.2016, 13:12
Beitrag #2
RE: Unterschiedliche Programme durch Switch/ Case
Das geht so, aber "Switch/case" kannst du dir hierbei sparen und es direkt über die if-Anweisung erledigen.

Allerdings muss es in der if-Anweisung heißen "if (pin1==LOW && pin2==LOW && pin3==LOW && pin4==LOW)" usw.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.09.2016, 13:20
Beitrag #3
RE: Unterschiedliche Programme durch Switch/ Case
Achja stimmt da war ja was Wink Aber das Signal soll quasi in einer Dauerschleife ablaufen. Und sieht ungefähr aus wie im beigefügten Bild. Die Zeiten zwischen den Signalen (Low`s und Highs`s) sollten möglichst eingehalten werden. Was ist jetzt wenn das Programm am Ende des "Unterprogramms" ist. Dann geht es ja erneut in das "Große" Programm und guckt erneut in welcher if-Schleife es weiter geht.

Kann es an der Stelle nicht passieren, das das Signal "abreist??


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.09.2016, 13:43
Beitrag #4
RE: Unterschiedliche Programme durch Switch/ Case
(27.09.2016 13:20)SpeedShifter schrieb:  Achja stimmt da war ja was Wink Aber das Signal soll quasi in einer Dauerschleife ablaufen. Und sieht ungefähr aus wie im beigefügten Bild. Die Zeiten zwischen den Signalen (Low`s und Highs`s) sollten möglichst eingehalten werden. Was ist jetzt wenn das Programm am Ende des "Unterprogramms" ist. Dann geht es ja erneut in das "Große" Programm und guckt erneut in welcher if-Schleife es weiter geht.

Kann es an der Stelle nicht passieren, das das Signal "abreist??

Das kommt darauf an, was die geheimen Unterprogramme tun und wie die Signale aussehen. Das Bild kann man unterschiedlich interpretieren.

Gruß Tommy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.09.2016, 13:51
Beitrag #5
RE: Unterschiedliche Programme durch Switch/ Case
(27.09.2016 13:43)Tommy56 schrieb:  
(27.09.2016 13:20)SpeedShifter schrieb:  Achja stimmt da war ja was Wink Aber das Signal soll quasi in einer Dauerschleife ablaufen. Und sieht ungefähr aus wie im beigefügten Bild. Die Zeiten zwischen den Signalen (Low`s und Highs`s) sollten möglichst eingehalten werden. Was ist jetzt wenn das Programm am Ende des "Unterprogramms" ist. Dann geht es ja erneut in das "Große" Programm und guckt erneut in welcher if-Schleife es weiter geht.

Kann es an der Stelle nicht passieren, das das Signal "abreist??

Das kommt darauf an, was die geheimen Unterprogramme tun und wie die Signale aussehen. Das Bild kann man unterschiedlich interpretieren.

Gruß Tommy

Die Zeiten A,B,C,D... bewegen sich zwischen 60 und 200ms. Und an der Grafik ist auch sehr gut zu sehen das sich das Signal wiederholt und periodisch verläuft.

Meine Frage zielt darauf hinaus ob es möglich ist das Unterprogramm in sich konstant fortlaufen zu lassen. Vllt mit einem Interrupt?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.09.2016, 13:54 (Dieser Beitrag wurde zuletzt bearbeitet: 27.09.2016 13:56 von hotsystems.)
Beitrag #6
RE: Unterschiedliche Programme durch Switch/ Case
(27.09.2016 13:20)SpeedShifter schrieb:  Achja stimmt da war ja was Wink Aber das Signal soll quasi in einer Dauerschleife ablaufen. Und sieht ungefähr aus wie im beigefügten Bild. Die Zeiten zwischen den Signalen (Low`s und Highs`s) sollten möglichst eingehalten werden. Was ist jetzt wenn das Programm am Ende des "Unterprogramms" ist. Dann geht es ja erneut in das "Große" Programm und guckt erneut in welcher if-Schleife es weiter geht.

Kann es an der Stelle nicht passieren, das das Signal "abreist??

Ich weiß nicht, was du mit "Signal" meinst.

Im Arduino läuft eine Loop und das ständig.
Wenn diese nicht mehr läuft, ist da was faul.

Bei korrekter Programmierung läuft die immer durch und hängt, wie Tommy56 geschrieben hat, von deinen Funktionen ab, die du zwischendurch aufrufst.

Evtl. solltest du mal besser beschreiben, was du mit deinem Sketch erreichen möchtest.
Um Zeiten genau einzuhalten solltest du mit Timern oder millis arbeiten. Dann wird das auch sicherer.

(27.09.2016 13:51)SpeedShifter schrieb:  Die Zeiten A,B,C,D... bewegen sich zwischen 60 und 200ms. Und an der Grafik ist auch sehr gut zu sehen das sich das Signal wiederholt und periodisch verläuft.

Meine Frage zielt darauf hinaus ob es möglich ist das Unterprogramm in sich konstant fortlaufen zu lassen. Vllt mit einem Interrupt?

das ist sicher ein Thema für Timer, nicht für Interrupt.
Interrupt heißt, wie der Name auch sagt "unterbrechen" und dann etwas anderes ausführen. Also für dein Vorhaben nicht geeignet. Nimm Timer, z.B. SimpleTimer-Library.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.09.2016, 14:01
Beitrag #7
RE: Unterschiedliche Programme durch Switch/ Case
(27.09.2016 13:54)hotsystems schrieb:  
(27.09.2016 13:20)SpeedShifter schrieb:  Achja stimmt da war ja was Wink Aber das Signal soll quasi in einer Dauerschleife ablaufen. Und sieht ungefähr aus wie im beigefügten Bild. Die Zeiten zwischen den Signalen (Low`s und Highs`s) sollten möglichst eingehalten werden. Was ist jetzt wenn das Programm am Ende des "Unterprogramms" ist. Dann geht es ja erneut in das "Große" Programm und guckt erneut in welcher if-Schleife es weiter geht.

Kann es an der Stelle nicht passieren, das das Signal "abreist??

Ich weiß nicht, was du mit "Signal" meinst.

Im Arduino läuft eine Loop und das ständig.
Wenn diese nicht mehr läuft, ist da was faul.

Bei korrekter Programmierung läuft die immer durch und hängt, wie Tommy56 geschrieben hat, von deinen Funktionen ab, die du zwischendurch aufrufst.

Evtl. solltest du mal besser beschreiben, was du mit deinem Sketch erreichen möchtest.
Um Zeiten genau einzuhalten solltest du mit Timern oder millis arbeiten. Dann wird das auch sicherer.

Der Arduino soll das digitale Signal eines Sensors simulieren. Die Zeiten zwischen den Highs und Lows habe ich bereits aufgenommen. In der if-Schleife sieht das ganze dann ca so aus:

if(....)
{

digitalWrite(PinOut1, HIGH);
delay(200);
digitalWrite(PinOut1, LOW);
delay(100);
digitalWrite(PinOut1, HIGH);
delay(10);
digitalWrite(PinOut1, LOW);
delay(30);
digitalWrite(PinOut1, HIGH);
delay(200);
digitalWrite(PinOut1, LOW);
delay(100);



}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.09.2016, 14:07
Beitrag #8
RE: Unterschiedliche Programme durch Switch/ Case
Brandgefährlich mit den ganzen delays darin.

Während der Zeit die Funktion durchlaufen wird, kannst du nichts mehr machen.
Der Controller wird erst nach Ablauf dieser Funktion wieder Befehle zur weiteren Steuerung annehmen können.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Switch/Case mit chars phischmi 8 332 24.07.2016 21:00
Letzter Beitrag: phischmi
  Altes Digitales Display mit Text/Bits durch Genuino Micro versorgen - SPI-Bibliothek? RollingStone 0 205 25.06.2016 17:46
Letzter Beitrag: RollingStone
  Deckel offen erkennung durch Temperaturabfall MarkoM 3 259 08.06.2016 14:18
Letzter Beitrag: hotsystems
  Programme vom UNO auf nano , mini Pro portieren Probleme anwo 19 1.178 17.04.2016 21:12
Letzter Beitrag: hotsystems
  Programme lassen sich nicht auf das Gemma Board downloaden! Jack Sparrow 13 565 08.04.2016 10:01
Letzter Beitrag: hotsystems
  Aus While-Schleife durch Interrupt aussteigen Zill3 10 1.192 08.02.2016 16:28
Letzter Beitrag: ardu_arne
  Problem Wiederholung eines Case im Switch via Bluetooth Ecki1212 6 904 16.09.2015 23:06
Letzter Beitrag: Ecki1212
  Zwei Programme gleichzeitig Lindi01 9 2.034 27.07.2015 23:27
Letzter Beitrag: hotsystems
  Initialisierung der Schnittstelle durch IDE Waishon 1 1.037 09.02.2015 03:59
Letzter Beitrag: rkuehle
Sad atoi() mehrere Zeichen/ Code durch Benutzer ändern (Safe) aepfelbirnen 3 2.103 10.01.2015 13:55
Letzter Beitrag: aepfelbirnen

Gehe zu:


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