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
  Fehlermedungen beim Kompilieren Franz54 7 116 07.12.2016 14:29
Letzter Beitrag: Pit
  Hilfe: IR Remote Steuerung, MSGEQ7 + RGB-LED Streifen dastob 1 123 14.10.2016 21:40
Letzter Beitrag: hotsystems
Sad Ich brauche Hilfe Prosac 4 237 09.10.2016 18:39
Letzter Beitrag: Prosac
  Fehler beim Kompilieren binderj1 5 295 03.10.2016 21:27
Letzter Beitrag: hotsystems
  ArduinoDroid Probleme Brother Tak 1 205 10.09.2016 22:12
Letzter Beitrag: Brother Tak
  at24c256 Hilfe Gandalf 6 249 29.08.2016 18:59
Letzter Beitrag: MKc
Smile Progammier Neuling Codeschloss bittet um Hilfe Donalonso 2 287 27.08.2016 18:23
Letzter Beitrag: Binatone
  ESP8266 Webserver Programmieren HDT 11 774 23.08.2016 13:28
Letzter Beitrag: HDT
  Fehler beim Speichern von Projekten Manni66 16 690 23.08.2016 10:05
Letzter Beitrag: hotsystems
  Hilfe gesucht. Webserver Statsiche und Dynamische HTMl Seite b3ta 11 454 22.08.2016 08:07
Letzter Beitrag: b3ta

Gehe zu:


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