Arduino Uno goto Anweisung
Hallo liebe gutefrage.net community!
Ich bin grad dabei ein Lauflicht zu programmieren, bei dem die Leucht muster von verschiedenen Unterprogrammen aus aufgerufen werden können.
Ich will einen Poti (potib) am beispielsweise Analogpin 1 anschließen. (Dort liefert er ja dann nen wert zwischen 0 und 1023)
Anschließend möchte ich, dass wenn der wert z.b. 0 < poti > 50 ist, soll der Arduino zum Unterprogramm prg01 springen und dieses ausführen, solang der poti eben einen Wert liefert 0 < poti < 50.
Kann mir da jemand weiter helfen? ich bin ein absoluter Anfänger, was das Programmieren von Mikrocontrollern angeht.
Das Lauflicht Programm an sich ist soweit fertig, ich bekomme es nur zum verrecken nicht hin, dass ich ins Unterprogramm prg01/ prg02/ ... prgxx springen kann.
Bisher hab ich nur Array 00 in Benutzung, ich will dann das Programm was ich aktuell in der loop() schleife drin hab kopieren und mehrmals einfügen. In diesen Unterprogrammen werden dann die jeweiligen Arrays aufgerufen und ausgegeben.
Wäre super wenn mir jemand helfen könnte.
Vielen Vielen dank schon mal im Voraus.
4 Antworten
Es gibt dafür viele Möglichkeiten, aber whollop hat keine Ahnung von Arduino.
http://www.arduino.cc/en/Reference/ElseDieser Link zeigt dir, wie man Werte vergleicht und diese dann in verschiedenen Anweisungen sozusagen filtert.
IF THEN zusammen mit ELSE IF sind Grundlagen der Programmierung und genau was du hier anwenden kannst. Du musst nur aufpassen, dass du dann ungewünschte Ergebnisse ebenfalls herausfilterst.
if (poti < 50)
{
// do Thing A
}
else if (poti > 50)
{
// do Thing B
}
else if (poti > 500)
{
// do Thing C
}
Du musst nur schauen, dass du keine doppelten Ergebnisse erhältst, wie im obigen Beispiel, denn 500 ist auch größer als 50, also würde in diesem Fall, da 50 zuerst abgefragt wird, auch dieser Sprung gemacht werden.
Besser ist es mit Logischen Anweisungen zu arbeiten, wo du genau festlegen kannst, was du wirklich am ende haben möchtest.
arduino.cc/en/Reference/Boolean
If ( poti < 50 && poti > 30) dann bekommst du ein JA solange der Wert zwischen 30 und 50 liegt.
Ich weiß nicht, ob ich es richtig verstanden habe, aber ich würde das ganze mit Funktionen lösen: void irgendwas () { ... } Dann die Funktion aufrufen irgendwas()
Hi, zum Thema Funktionen und Schleifen helfen dir vielleicht die folgenden Tutorials weiter:
Diese "Unterprogramme" nennt man Methoden! Ist recht komplex um es hier zuberklären, aber das Stichwort hilft dir sicher weiter ;-)
ok, und wie würde das dann aussehen??
bsp:
void loop() {
if(analogRead(potib > 0; potib < 50; potib++)) {prg00}
.
.
.
.
void pro00()
{
.
.
.
}
Meinst du es so?