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:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino Nano
14.06.2015, 07:37
Beitrag #1
Arduino Nano
Hallo liebe Forenmitglieder,

wie schon mein Name sagt, bin ich, was sowohl in einem Forum, als auch beim
Arduino ein absoluter Anfänger. Habe früher mal mit dem 8051 einige Projekte
realisiert- aber das ist schon lange her.
Jedenfalls will ich es jetzt mit dem Arduino wagen.
So, nun zu meinem Problem. Ich möchte eine Taste abfragen und dabei folgendes
erreichen
1. Taste nicht gedrückt Ausgang 1 = low Ausgang 2 = low
2. Taste wird gedrückt Ausgang 1 = high Ausgang 2 = low
3. Taste wir wieder gedrückt Ausgang 1 = low Ausgang 2 = low
4. Taste wird wieder gedrückt Ausgang 1 = low Ausgang 2 = high
5. Taste wieder gedrückt Ausgang 1 und 2 wieder low

Die Taste wollte ich noch entprellen und das mit " delay " machen.

Beim 8051 war es so, dass man verschiedene Programmteile geschrieben hat und
diese dann aus einer Hauptroutine angesprungen hat (Goto .., Jmp ...)

Beim Arduino scheint dass Programm immer voll durchzulaufen und , jedenfalls
nach meinen Recherchen, ist der Befehl Goto nicht so gern gesehen und kann
wohl Probleme bereiten. Da bin ich noch beim Lesen und Lernen.

Ja, wäre also nett, wenn mir jemand einen Lösungsansatz schreiben könnte.
Falls es dieses Thema schon geben sollte (ich habe wirklich lange Goggle bemüht-
vielleicht aber nicht den richtigen Suchbegriff benutzt) dann weist mich bitte darauf hin und ich werde dieses Thema sofort schließen .

Danke
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.06.2015, 07:55
Beitrag #2
RE: Arduino Nano
(14.06.2015 07:37)Arduinoneuling schrieb:  Die Taste wollte ich noch entprellen und das mit " delay " machen.
Mit "delay" bekommt man meiner Meinung nach kein echtes Entprellen hin.

Zitat:Beim 8051 war es so, dass man verschiedene Programmteile geschrieben hat und
diese dann aus einer Hauptroutine angesprungen hat (Goto .., Jmp ...)
Das sieht nach Assembler aus. Ein Arduino wird meistens in C++ programmiert.

Zitat:Beim Arduino scheint dass Programm immer voll durchzulaufen und ,
Eigentlich ist es eher so, dass das Programm endlos läuft.

Zitat:Ja, wäre also nett, wenn mir jemand einen Lösungsansatz schreiben könnte.
Schau Dir mal in der Arduino-IDE die Beispiele an (Datei-> Beispiele->...). Speziell unter "Basics" und "Digital" sind ein paar Sachen dabei, die für Dich interessant sind. Ich würde an Deiner Stelle erst einmal ein paar davon durchprobieren. Das schafft dann erstmal Grundlagen.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.06.2015, 12:04 (Dieser Beitrag wurde zuletzt bearbeitet: 14.06.2015 12:08 von marcus.)
Beitrag #3
RE: Arduino Nano
Hallo Arduinoneuling,

Loop läuft ständig durch, Goto gibt es in der Form nicht. Das macht aber nichts. Das würde nur andere Dinge durcheinander bringen, z.B. wenn der Arduino auch noch andere "Aufgaben" hat. Für Schalter etc. gibt es aber Interrupts.

Zur Mittagszeit aber nun erstmal ein schnelles Spagetti-Code Beispiel :-)

Setup
Code:
int rot=14, gruen=13; //Zwei LED. Eigentlich könnte man alles mit INT machen, aber der Vollständigkeit halber:
byte zaehler; //Solange du im Rahmen von 0-7 bleibst reicht Byte
bool gedruecktmerken; //hat nur zwei Zustände, 0/1, ja/nein.

Loop
Code:
if (digitalRead(10) && !gedruecktmerken ) //Wenn Tastendruck UND die variable nicht gesetzt wurde
{

gedruecktmerken=1;
zaehler++;

   if(zaehler==1){digitalWrite(gruen, HIGH); }
  else if(zaehler==2){digitalWrite(gruen, LOW);}
  else if(zaehler==3){;digitalWrite(rot, HIGH);}
  else {digitalWrite(rot, LOW); zaehler=0; }
}
  else if(!digitalRead(10))
{
gedruecktmerken=0;
delay(234);
}
//Ungetestet, bitte selber debuggen

Hinweis: Je nachdem ob der Taster einen Pull-up oder pull-down Widerstand hat (oder INPUT_PULLUP), muss das digitalRead ggf. negiert werden (mit "!").

Mit delay ist das natürlich nur sehr rudimentär, aber sollte so erstmal gehen.

Die Sparvariante wäre


Viele Wege führen nach Rom. Das würde auch mit Switch Case, interrupts und co funktionieren. Auch ohne zu prüfen ob noch gedrückt wird, aber dann würde bei gedrückter Taste einfach nach einem Delay dann gleich das nächste ausgeführt.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.06.2015, 12:12
Beitrag #4
RE: Arduino Nano
(14.06.2015 12:04)marcus schrieb:  Goto gibt es in der Form nicht.
Natürlich gibt es goto. Wo hast Du den her, dass es das nicht gibt?

Zitat:Das würde nur andere Dinge durcheinander bringen, z.B. wenn der Arduino auch noch andere "Aufgaben" hat.
Kannst Du dafür mal ein Beispiel zeigen?
Ich bin kein Befürworter von "goto", aber die Vermeidung des goto hat andere Gründe.

Zitat:Für Schalter etc. gibt es aber Interrupts.
...die man in 99,9% der Fälle für Schalter und Taster nicht braucht.

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.06.2015, 12:30
Beitrag #5
RE: Arduino Nano
Okey, schlecht formuliert, entschuldige. Es wird üblicherweise nicht ständig wie z.B. in Basic eingesetzt.

Fall wo Goto Problemchen machen kann-> Sprung an eine andere Stelle die womöglich auch mit Delay arbeitet, und der weitere Code verzögert wird. Oder aber wenn jemand versucht Goto zu benutzen, aber nicht von Funktion zu Funktion springen kann (hatte letztens einer im eng. Forum versucht). Ausserdem bzgl. Lesbarkeit & Debugging.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.06.2015, 13:13
Beitrag #6
RE: Arduino Nano
Hallo Marcus hallo Thorsten,

erst einmal vielen Dank für eure Beiträge. Ja , die Idee mit dem Zähler habe ich gesucht. Ist mir klar, dass man das alles viel eleganter lösen kann,
aber für meine einfachen Versuche reicht das völlig aus. Bin ja bestimmt schon bissel älter als ihr (67), und da steht halt öfter mal einer auf der Leitung.
So nun noch mal zu Thorsten. Ja, das mit dem 8051 , das waren noch Assembler-Zeiten. Gibt es eigentlich so etwas auch noch für den Arduino, oder geht das gar nicht mehr ?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.06.2015, 13:40
Beitrag #7
RE: Arduino Nano
(14.06.2015 13:13)Arduinoneuling schrieb:  Ja, das mit dem 8051 , das waren noch Assembler-Zeiten. Gibt es eigentlich so etwas auch noch für den Arduino, oder geht das gar nicht mehr ?
Hi,
das geht schon. Hier z.B. ein Ausschnitt aus der SoftwareSerial Library:
Code:
asm volatile("sbiw    %0, 0x01 \n\t"
    "ldi %1, 0xFF \n\t"
    "cpi %A0, 0xFF \n\t"
    "cpc %B0, %1 \n\t"
    "brne .-10 \n\t"
    : "+r" (delay), "+a" (tmp)
    : "0" (delay)
    );
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.06.2015, 14:08
Beitrag #8
RE: Arduino Nano
...apropos Goto, das ist natürlich auch sehr gefährlich...und zwar auf jeden Fall wenn man aus einer Routine wo mit Gosub aufgerufen wurde dann mit Goto wieder herausspringt anstatt mit einem Return....der Stack wird dann irgenwann mal anfangen zu meutern...Big Grin
lg
bk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  TimerOne und I²C und Arduino Nano Mathias 1 59 07.12.2016 18:17
Letzter Beitrag: Mathias
  Arduino Nano --> ATtiny 84A Mathias 25 900 15.07.2016 16:26
Letzter Beitrag: hotsystems
  Programme vom UNO auf nano , mini Pro portieren Probleme anwo 19 1.178 17.04.2016 21:12
Letzter Beitrag: hotsystems
  I²C vom NANO zum PI Probleme mit High/Low Bit Tobias1984 4 333 29.02.2016 00:00
Letzter Beitrag: hotsystems
  Problem beim Upload auf Nano (vermutlich allgemein) Lemartes 9 838 01.02.2016 22:24
Letzter Beitrag: Lemartes
  Daten auf SD-Card werden nur geschrieben, wenn Nano am USB-Port hängt Nathea 6 482 24.01.2016 16:42
Letzter Beitrag: Nathea
  Meerwasser Überwachung mit Arduino-Nano Tim_171 30 2.375 13.01.2016 06:30
Letzter Beitrag: Bitklopfer
  16Bit PWM bei Uno bzw. Nano a.part 2 518 23.11.2015 20:32
Letzter Beitrag: a.part
  Arduino nano und ESP8266 Junano 1 1.096 17.11.2015 07:02
Letzter Beitrag: Junano
  Nano dccduino Sketch aufspielen hgpa 9 1.738 26.08.2015 16:06
Letzter Beitrag: hotsystems

Gehe zu:


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