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

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.