Timer für LED-"Ampel" selber bauen, wer kann mir helfen?

Thomas L

Vereinsmitglied
ja, das könnte er.
Aber um erstmal ein ganz klein wenig Erfolg zu haben und mal ins Thema reinzukommen empfehle ich Dir sich die mitgelieferten Beispiele anzusehen. Dort ist auch ein Blink Sketch der die Boardeigene LED blinken lässt.
Arduino Installationsverzeichnis\examples\01.Basics\Blink

Viel Spaß
 

wno158

User
Au fein - es geht los!

Au fein - es geht los!

Kann mich Thomas nur anschließen:
Zuerst den Sketch für die interne LED.
Warum?: Arduino IDE kennenlernen, Sketch kompilieren, hochladen. Dann Sketch verstehen und verändern (z.B. andere Blinkfrequenzen und An/Aus-Tastverhältnisse). Bei der Gelegenheit die serielle Schnittstelle als Monitor verwenden (Testausgaben an verschiedenen Stellen im Programm einbauen, um den Ablauf und später auch den Zustand der Variablen zu erkennen)

Für danach hätte ich zwei weitere Vorschläge:
#1: Erstmal nur eine (!) externe LED verwenden (Vorwiderstand nicht vergessen). Ziel: LED "richtig" herum verwenden; verschiedene Portpins ausprobieren (auch die analogen lassen sich als digitaler Ausgang verwenden)
#2: delay() durch millis() ersetzen. Ziel: So früh wie möglich von der blockierenden Programmierung wegkommen. Verstehen, was setup() und loop() machen. Lesestoff dazu gibt es hier und hier.

Viel Spaß!
 

Robinhood

Vereinsmitglied
Learning by doing...ich verstehe. Ist wie Fremdsprachen-Lernen für mich ohne jegliche Vorkenntnisse ;)

Danke soweit für den Einstieg in die Materie!! Sollte ich dennoch nicht weiterkommen, melde ich mich und hoffe auf Eure geschätzte Unterstützung :)
 

Robinhood

Vereinsmitglied
Die ersten Gehversuche finden gerade statt. Ich habe mal die fertigen Sketche für "Blink without delay" und "Button" durchgespielt. Mein Projekt - so vermute ich - wird auf diesen beiden Grundideen ruhen. Wenn jemand für den Sketch (2 LEDs, 3 Taster) ein paar Tipps hat, wäre das toll.

@Walter: In deiner Schaltung haben die Taster keine Dropdown-Widerstände gegen GND. Das habe ich in einigen Beispielen so gesehen und wird dort empfohlen. Sind die Deiner Meinung nach überflüssig?
 
Der Atmel UC unterstützt intern einen Pullup wiederstand.
Bei der Arduino IDE wird er so gesetzt:
digitalWrite(pin, HIGH);
Damit ist bei unbetätigten Taster das Signal HIGH (es wird intern ein Widerstand gegen VCC gesetzt).
den Taster baust du gegen GND ein.
Abfrage des Tasters ist dann ob der Pegel LOW ist.
Somit ersparst du dir den Widerstand.

Allerdings wenn du den Taster sehr schnell abfrägst(alle paar ms) ist es ratsam ihn Softwareseitig und auch Hardwareseitig mit z.b 100uf zu entprellen.(google: Arduino debounce)
Für die ersten tests sollte es aber die einfache Variante tun.
link


gruß Ralf
 

wno158

User
Hallo Robin,
prima - da geht also schon was los.
In deiner Schaltung haben die Taster keine Dropdown-Widerstände gegen GND. Das habe ich in einigen Beispielen so gesehen und wird dort empfohlen. Sind die Deiner Meinung nach überflüssig?
Das kommt darauf, wie Du die Logik des Tasters machen willst.
Wenn Du - darauf basiert die Schaltung ohne Widerstand - den Pin mit
Code:
const int tasterPin = 5;
byte tasterZustand;
…
void Setup()
{
    pinMode(tasterPin, INPUT_PULLUP);
}
schaltest, liegt der Eingang immer auf HIGH und wird dann LOW, solange der Taster gedrückt wird. Der "pull up"-Widerstand nach +5V ist im Arduino eingebaut.
Code:
void loop() 
{
    tasterZustand = digitalRead(tasterPin);   // HIGH wenn Taster nicht betätigt, LOW wenn gedrückt.
}

Manche sind damit nicht glücklich und wollen LOW sehen, wenn der Taster nicht gedrückt ist und HIGH wenn er betätigt wird, wie z.B. hier im Digital In Tutorial. Dann brauchst Du den DropDown zur Strombegrenzung, weil sonst bei Tastenbetätigung ein Kurzschluß zwischen Masse und 5V erzeugt würde. Dann darf aber der Pin-Mode nur INPUT sein (ohne PULLUP).

Das ist letztlich eine Geschmacksfrage und spart einen extern zu verbauenden Widerstand.

Ideen/Anregungen für den Sketch:
Wenn möglich Datenerfassung (Abfrage der Tasterzustände), -verarbeitung (was soll in Abhängigkeit von den Daten passieren) und Ausgabe (welche Lampe soll leuchten, welche nicht) voneinander trennen und nacheinander in Codeblöcken abhandeln. Diese Teile können dann auch jeweils eigene Funktionen sein (dat' kriegen wir aber vielleicht später :)).
Dabei helfen eigene Zustandsvariablen für jeden der Taster und für den gewünschten Ausgangszustand jeder LED.

Gruß Walter

Tante Edith sagt: Ralf war schneller und kürzer :)
Allerdings würde ich statt dem digitalWrite(pin, HIGH) auf einen als Eingang deklarierten Pin heutzutage doch lieber INPUT_PULLUP verwenden.
 
Zuletzt bearbeitet:

Robinhood

Vereinsmitglied
Danke Euch beiden, da habe ich wieder was zum Verdauen ;)

Ob mein Nano-Klon einen Pullup hat, weiß ich (noch) nicht.
 

Robinhood

Vereinsmitglied
Mit Hilfe eines erfahrenen Clubkameraden habe ich es jetzt geschafft, die Schaltung und die Programmierung funktioniert perfekt.

Der Versuchsaufbau:

K1024_017210dd03eda3ae4643aff2f67240d58f7ca68b38.JPG
 
Ansicht hell / dunkel umschalten
Oben Unten