frage zu if, else if usw.

OP #3378837
Lesenswert?

Moin... ich bin grad am programmieren an einem arduino. Ich habe 10 
verschiedene inputs und jedes soll jederzeit abgerufen  werden 
können(durch knopfdruck). Ich frag mich ob ich das so machen kann oder 
ob die Chance nur 1 zu 10 steht dass der knopf reagiert weil das 
programm (in einer while schleife) durchgehend durchläuft.
1
While (meinebedingung >= 4)
2
If (digitalread (inpineins == high)) {
3
   Macht etwas
4
   Delay (200) }
5
Else if(digitalread (inpinzwei == high)) {
6
  Macht etwas anderes
7
  Delay(10) }
8
Else if  usw.....
Bin für Vorschläge offen...
Gruß Christoph
#3378849
Lesenswert?

Wenn die Delay nicht wären, würde diese Schleife pro Sekunde viele 
Zehn-tausend mal durchlaufen. Was denkst du, wie groß die Chance ist, 
dass du einen Knopf innerhalb von (sgaen wir mal) 1 Zehntausendstel 
Sekunde drücken und wieder loslassen kannst, so dass der µC sie nicht 
bemerkt.

Wie gesagt: Wenn die delays nicht wären. Die verfälschen das. Aber 
selbst dann: 200 Millisekunden sind 0.2 Sekunden. Kannst du innerhalb 
dieser Zeit einen Knopf drücken und wieder loslassen?
Gast #3378853
Lesenswert?

Christoph Rohloff schrieb:
> ch frag mich ob ich das so machen kann oder
> ob die Chance nur 1 zu 10 steht dass der knopf reagiert weil das
> programm (in einer while schleife) durchgehend durchläuft.

Hm? - Ich verstehe die Frage nicht...

Ansonsten steht doch alles da: Endlosschleife außen herum, innen drin 
(vmtl.) zehn if-else-Konstrukte, d. h. inpineins wird mit höchster 
Priorität behandelt, inpinzwei mit nächstgeringerer etc.
Ob diese implizite Priorisierung gewünscht ist, das ist eine andere 
Frage.
Gast #3379317
Lesenswert?

> if (digitalread (inpineins == high)) ...

Ist das so richtig? Ich kenne mich mit Arduino nicht aus, aber das sieht 
seltsam aus.

Ich hätte sowas erwartet: if (digitalread(inpineins)==high) ....

Oder in C: if (PINA & 2) ...

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