Pages: [1]   Go Down
Author Topic: Arduino Anfänger benötigt Hilfe bei seinem 4. Projekt  (Read 285 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
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 smiley-grin

Gruss Kevin L.
« Last Edit: September 13, 2013, 02:45:34 pm by uwefed » Logged

Germany
Offline Offline
Faraday Member
**
Karma: 57
Posts: 3005
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley-wink  --

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 smiley-wink


Ausserdem würde ich die Tastenerfassung "entprellen"

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

Germany
Offline Offline
Jr. Member
**
Karma: 0
Posts: 57
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

>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.

Logged

Pages: [1]   Go Up
Jump to: