elegantere Lösung zu else if.

OP #3623962
Lesenswert?
• ▲
▼
Moin
Gibt es eine elegantere Lösung um Anweisungen wie if und elwe if 
auszuführen. Ich will nämlich lins am arduino auslesen und falls eine 
Spannung anliegt soll das was in der if Anweisung steht ausgeführt 
werden. Das hab ich so so gemacht.

While (diesdas > 1)
If(digitalRead(pin1 == HIGH)){
//tu etwas
}
Else if(digitalRead (pin2 == HIGH)){
//tu etwas anderes
}

Und so geht das bei mir mit 20 anderen pins weiter. Es sollen so lange 
diese pins anlusgelesen werden bis die Bedingung in der while schleife 
nicht mehr stimmt.
Gibt es dafür elegantere Lösungen oder kann es hierbei zu komplikationen 
kommen?
Gast #3623986
Lesenswert?
• ▲
▼
switch/case wird hierbei nicht helfen, damit kann man nur eine Variable 
auf verschiedene Werte abfragen:

int x = f();
1
switch(x)
2
{
3
  case 1:
4
    do_something();
5
    break;
6

7
  case 2:
8
    do_something_else();
9
    break;
10

11
  default:
12
    do_nothing();
13
}

Dies entspricht in etwa:
1
if(x == 1)
2
  do_something();
3
else if(x == 2)
4
  do_something_else();
5
else
6
  do_nothing();
Gast #3623997
Lesenswert?
• ▲
▼
Warum liest Du nicht erst einmal die Ports komplett ein und prüfst 
danach
welche Pins gesetzt sind oder nicht.
Das funktioniert allerdings nur dann, wenn die Ports komplett für Deine 
Anwendung reserviert sind.

Bspw. so:
1
if ( a=PINx ) { /* Prüft ob irgend ein Pin gesetzt ist, also NICHT 0 ist*/
2
 
3
            for(i=0; i < 8; i++ ){
4
                if ( a & ( 1 << i)){ /* Einzelne Pins abfragen*/
OP #3623999
Lesenswert?
• ▲
▼
Port schrieb:
Wenn man alle portpins nacheinander durchgehen will, nimmt man ein for 
Schleife. In der Schleife braucht man dann nur eine if Abfrage.

Wichtig is aber das kein pin ausversehen durch zu kurzen tastendruck 
übersehen wird. Wie würde diese for schleife dann aussehen??
Und wie kommt man in die auszuführenden befehle??
Gast #3624025
Lesenswert?
• ▲
▼
Warum willst du überhaupt eine andere Lösung?

Ein Programm soll funktionieren und es soll einfach und verständlich 
sein. Damit man bei einem Fehler sofort sieht, was man ändern muss.

So gesehen ist das Programm ideal.

Natürlich kann sich heraus stellen, das es nicht so einfach geht, dass 
du z.B. einen Tastenentprellung in einer Interruptroutine brauchst.

Aber warum anders machen, wenn es funktioniert?

P.S. Beispiele für elegante Lösungen findest du recht einfach. Suche 
nach umfangreichen Open-Source-Projekten, an denen nur 1 oder 2 Leute 
arbeiten.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.