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
Hilfe! Probleme beim Programmieren vom Arduino
29.09.2013, 13:35 (Dieser Beitrag wurde zuletzt bearbeitet: 30.09.2013 13:54 von admin.)
Beitrag #1
Hilfe! Probleme beim Programmieren vom Arduino
Hallo Leute,

Vor ein paar Tagen habe ich mir den Arduino Leonardo gekauft. Bin echt super zufrieden. Habe schon viele Beispiele durchgespielt. Die grundlegenden Programme hab ich verstanden.

Jetzt zu meinem Problem. Ich möchte gerne 3 Taster an mein Board anschließen. Hab sie auf die analogen Eingänge gebracht, welche ich einfach digital abfrage. Funktioniert auch super.
Aber gibt es irgendeine Möglichkeit ein Programm so zu schreiben, dass ein Unterprogramm weiterläuft obwohl das HIGH Signal vom Taster nicht mehr ansteht? Huh
Ich stelle mir das so vor: Wenn ich den ersten Taster drücke gehen alle digitalen Ausgänge auf HIGH. Das bleibt solange konstant bis ich den zweiten Taster drücke. Jetzt geht nur noch jeder zweite Ausgang auf HIGH. Wenn ich den dritten drücke geht jeder dritte auf HIGH. Und so weiter.

Kann mir irgendjemand bei meinem Problem helfen? Wäre klasse.

Danke schonmal im vorau.
Liebe Grüße
ZietzerRolleyes


EDIT: Bitte in Zukunft etwas "vorsichtiger" mit extrem großer Schrift... Wink deswegen von mir entfernt...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.09.2013, 18:19
Beitrag #2
RE: Hilfe! Probleme beim Programmieren vom Arduino
Moin Zietzer,
willkommen im Forum und gleich mal eine Anmerkung:
Der beste Weg um Hilfe zu bekommen ist es den bisher existierenden Code mal zu posten. Dann gibt's sicher schnell Hilfe!

Dein eigentliches Problem ist nicht wirklich eines, würde sich aber besser (er)klären / lösen lassen wenn der Code verfügbar wäre.Idea

Grüße Ricardo
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.09.2013, 10:46
Beitrag #3
RE: Hilfe! Probleme beim Programmieren vom Arduino
Kein Problem Wink

Hier der Sketch wie er bisher aussieht. Denke, dass man noch einiges verbessern kann. (Wie gesagt bin ein absoluter Neuling)
PHP-Code:
const int inputPin1 A0;
const 
int inputPin2 A1;
const 
int inputPin3 A2;

const 
int outputPin0 0;
const 
int outputPin1 1;
const 
int outputPin2 2;
const 
int outputPin3 3;
const 
int outputPin4 4;
const 
int outputPin5 5;
const 
int outputPin6 6;
const 
int outputPin7 7;
const 
int outputPin8 8;
const 
int outputPin9 9;
const 
int outputPin10 10;
const 
int outputPin11 11;

int pinState1 0;
int pinState2 0;
int pinState3 0;
     


void setup() 
{
  
pinMode(inputPin1INPUT);
  
pinMode(inputPin2INPUT);
  
pinMode(inputPin3INPUT); 
 
  
pinMode(outputPin0OUTPUT);
  
pinMode(outputPin1OUTPUT);
  
pinMode(outputPin2OUTPUT);
  
pinMode(outputPin3OUTPUT);
  
pinMode(outputPin4OUTPUT);
  
pinMode(outputPin5OUTPUT);
  
pinMode(outputPin6OUTPUT);
  
pinMode(outputPin7OUTPUT);
  
pinMode(outputPin8OUTPUT);
  
pinMode(outputPin9OUTPUT);
  
pinMode(outputPin10OUTPUT);
  
pinMode(outputPin11OUTPUT); 
}



void loop() 
{
  
  
pinState1 digitalRead(inputPin1);
  
pinState2 digitalRead(inputPin2);
  
pinState3 digitalRead(inputPin3);
    
  if (
pinState1 == HIGH)
  {
    
digitalWrite(outputPin0HIGH);
    
digitalWrite(outputPin1HIGH);
    
digitalWrite(outputPin2HIGH);
    
digitalWrite(outputPin3HIGH);
    
digitalWrite(outputPin4HIGH);
    
digitalWrite(outputPin5HIGH);
    
digitalWrite(outputPin6HIGH);
    
digitalWrite(outputPin7HIGH);
    
digitalWrite(outputPin8HIGH);
    
digitalWrite(outputPin9HIGH);
    
digitalWrite(outputPin10HIGH);
    
digitalWrite(outputPin11HIGH); 
  }
 
  else 
  {        
    
digitalWrite(outputPin0LOW);
    
digitalWrite(outputPin1LOW);
    
digitalWrite(outputPin2LOW);
    
digitalWrite(outputPin3LOW);
    
digitalWrite(outputPin4LOW);
    
digitalWrite(outputPin5LOW);
    
digitalWrite(outputPin6LOW);
    
digitalWrite(outputPin7LOW);
    
digitalWrite(outputPin8LOW);
    
digitalWrite(outputPin9LOW);
    
digitalWrite(outputPin10LOW);
    
digitalWrite(outputPin11LOW); 
  } 
  
  if (
pinState2 == HIGH)
  {
    
digitalWrite(outputPin0HIGH);   
    
digitalWrite(outputPin2HIGH);   
    
digitalWrite(outputPin4HIGH);
    
digitalWrite(outputPin6HIGH);    
    
digitalWrite(outputPin8HIGH);
    
digitalWrite(outputPin10HIGH);
  }
  
  else
  {
    
digitalWrite(outputPin0LOW);   
    
digitalWrite(outputPin2LOW);   
    
digitalWrite(outputPin4LOW);
    
digitalWrite(outputPin6LOW);    
    
digitalWrite(outputPin8LOW);
    
digitalWrite(outputPin10LOW);
  }
  
  if (
pinState3 == HIGH)
  {
    
digitalWrite(outputPin0HIGH);
    
digitalWrite(outputPin3HIGH); 
    
digitalWrite(outputPin6HIGH);
    
digitalWrite(outputPin9HIGH);
  }
  
  else
  {
    
digitalWrite(outputPin0LOW);
    
digitalWrite(outputPin3LOW); 
    
digitalWrite(outputPin6LOW);
    
digitalWrite(outputPin9LOW);
  }
     
   

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.09.2013, 13:39
Beitrag #4
RE: Hilfe! Probleme beim Programmieren vom Arduino
Hallo Zietzer,

sieht erstmal garnicht so übel aus. Als Beginner hast du schon einige Sachen beachtet, für die andere länger brauchen (ich zum Beispiel)Smile
ich schau mir den Code mal heute abend an. Hier im Dienst habe ich die IDE nicht zur Hand!

Grüße Ricardo
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.09.2013, 14:01
Beitrag #5
RE: Hilfe! Probleme beim Programmieren vom Arduino
Hallo Zietzer, ja, das sieht schon einmal ganz ordentlich aus, wie Ricardo sagt. Jetzt musst du nur noch die Zustände speichern und so auswerten, wie du es haben möchtest. Also ich würde da eine Auswahlvarible anlegen, die alle erwünschten Zustände annehmen kann. Sehr praktisch ist dafür ein Switch-Case-Konstrukt, bei dem die Auswahl über die Binäreingänge gesteuert wird. Siehe dir das einmal an, du wirst sicher gleich verstehen, wie es geht. Smile

Gruß, Stefan . . . . . . //Wo mein Kölbchen dampft, da bin ich unverkrampft.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.09.2013, 19:21
Beitrag #6
RE: Hilfe! Probleme beim Programmieren vom Arduino
Hallo Zietzer,

ich denke hier ist genau die Lösung deines Problems zu finden:
http://danthompsonsblog.blogspot.de/2011...ample.html
(Habe jetzt nicht groß Bock einen Haufen Code zu schreiben Dodgy )
Du musst den Code nur so modifizieren, dass du eben 3 Taster abfragst und die entsprechenden LEDs schaltest.
Aber beachte den Hinweis/die Korrektur der/die weiter unten noch gegeben ist.
Was ein wenig "Unbehagen" bei mir auslöst, ist die (immer wieder gesehene) Methode analoge Pins digital abzufragen. Zumal wenn an den analogen Pins die relativ klapprigen Taster für Breadboards genutzt werden. Klar man hat damit mehr digitale Pins frei, aber man weiß nie welcher Pegel wirklich gelesen wird Sad
Ich gehe für solche Sachen doch lieber auf digitale Pins und nutze die Bounce Library.

Grüße Ricardo
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.10.2013, 09:14
Beitrag #7
RE: Hilfe! Probleme beim Programmieren vom Arduino
ja, so kann man es auch machen, ich wollte aber auf eine andere Möglichkeit hinweisen, die keiner Entprellung bedarf, weil sich die Tasten gegenseitig verriegeln. Für Fehlerfreiheit möchte ich nicht garantieren, aber so, wie in meinem kleinen Beispiel, müsste es funktionieren:

Code:
byte Auswahl = 1;
void setup()
{
pinMode (2,INPUT);
pinMode (3,INPUT);
pinMode (4,INPUT);
pinMode (12,OUTPUT);
pinMode (13,OUTPUT);
}

void loop()
{  
  switch (Auswahl)
    {
      case 1:
        digitalWrite (12, HIGH);
        digitalWrite (13, LOW);        
        if (digitalRead(2)) { Auswahl = 2;}
        else if (digitalRead(3)) { Auswahl = 3;}
      break;

      case 2:
        digitalWrite (12, LOW);
        digitalWrite (13, HIGH);            
        if (digitalRead(3)) { Auswahl = 3; }
        else if (digitalRead (4)) {Auswahl = 1;}
      break;
    
      case 3:
        digitalWrite (12, HIGH);
        digitalWrite (13, HIGH);
        if (digitalRead(4)) { Auswahl = 1; }
        else if (digitalRead(2)) {Auswahl = 2;}
      break;
    }
}

Gruß, Stefan . . . . . . //Wo mein Kölbchen dampft, da bin ich unverkrampft.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Kommandozeilen-Parser programmieren tollewurst 0 26 Heute 11:26
Letzter Beitrag: tollewurst
  Ublox Neo 6M und Nextion ! Bitte um Hilfe. b3ta 19 795 13.07.2017 14:52
Letzter Beitrag: Tommy56
  Anfänger sucht erfahrene Hilfe Customizer 21 1.154 11.07.2017 21:37
Letzter Beitrag: Customizer
Sad Fehlermeldung beim Hochladen meines Sketches kletterloewe 5 341 14.06.2017 16:08
Letzter Beitrag: hotsystems
  Bitte um Hilfe Arduino Nano-MAX7219-PIR_Sensor Opa_Klaus 35 1.489 20.05.2017 21:11
Letzter Beitrag: Opa_Klaus
  Optischenfüllstandsensor programmieren Freeed94 19 857 13.05.2017 08:03
Letzter Beitrag: Binatone
  Brauche Hilfe für meine Abfüllanlage/ millis() Slash96 8 555 10.05.2017 21:04
Letzter Beitrag: MicroBahner
  Firmata (Daten senden an den Arduino und empfangen vom Arduino) comfan 6 827 29.04.2017 14:29
Letzter Beitrag: hotsystems
Big Grin Probleme mit pgm_read_word NoGi 9 1.301 23.04.2017 10:09
Letzter Beitrag: NoGi
Question Problem beim Hochladen auf AtTiny45. Hilfe -.- Jonas Lindenblatt 17 1.098 16.04.2017 12:58
Letzter Beitrag: Jonas Lindenblatt

Gehe zu:


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