Go Down

Topic: Arduino Anfänger benötigt Hilfe bei seinem 4. Projekt (Read 312 times) previous topic - next topic

KevinLLL

Sep 13, 2013, 12:28 pm Last Edit: Sep 13, 2013, 09:45 pm by uwefed Reason: 1
Hi Leute
wie schon in der Überschrift zu sehen ist, benötige ich Hilfe bei meinem 4. projekt aus dem Buch" die elektische Welt mit Arduino entdecken"

die Aufgabe besagt dass ich mit einen Tasterdruck AN schalte und bei dem nächsten drücken wieder AUS machen soll

hier ist die lösung
>>>
Code: [Select]
int tasterpin = 8;
int tasterwert = 0;
int vorhertasterwert = 0;
int ledpin = 10;
int zaehler = 0;

void setup(){
 pinMode (tasterpin, INPUT);
 pinMode (ledpin, OUTPUT);
}
void loop(){
 tasterwert = digitalRead(tasterpin);
 
 if(vorhertasterwert != tasterwert){
   if(tasterwert == HIGH){
     zaehler++;
   }
 }
 vorhertasterwert = tasterwert;
 
 if(zaehler%2 == 0)
  digitalWrite(ledpin, HIGH);
 else
  digitalWrite(ledpin, LOW);

}

nun soll ich aber nicht nur ein Led an und aus schalten sonder 5 und das alles hintereinander:
Bei jeden Tasterdrück soll die Software ein weiteres LED in der Kette anschalten.

wie stelle ich das an???
wär toll wenn es nicht nur die lösung gibt sondern eine verständliche Erklärung dazu :D

Gruss Kevin L.

michael_x

Quote
wär toll wenn es nicht nur die lösung gibt sondern eine verständliche Erklärung dazu

wär toll wenn es nicht die lösung gibt sondern ein paar verständliche Hinweise : 

-- jurs erklärt am liebsten anhand einer perfekten Musterlösung ;)  --

In deiner Lösung wird zaehler mit jedem neuen HIGH um 1 erhöht.
Dann wird die Zahl auf gerade / ungerade abgefragt. (Siehst du das ?)

Das kann man leicht erweitern auf

if ( zaehler == 1)   LED 1 einschalten
if ( zaehler == 2)   LED 2
...
if (zaehler > ANZAHL_LED ) zaehler = 0;

Viel Erfolg !
Und vergiss nicht, die LED auch auszuschalten ;)


Ausserdem würde ich die Tastenerfassung "entprellen"

Code: [Select]
  if(vorhertasterwert != tasterwert){
    delay(5);   // einfachstes Entprellen        <----- diese Zeile einfügen
    if(tasterwert == HIGH){
 

Transistorfips

>int anzahl_led = 5;
oder wie ?
Genau. So viele wie du halt hast.
Du kannst sie mit if (x == y  ) abfragen - oder eleganter mit switch/case.


Go Up