-
Falls jemand einen Schaltplan oder fertigen Assembler Code hat ware es nicht schlecht.
Ich bekomme am Montag das Lernpaket Mikrocontroler von Frazis und dort habe ich gelesen, dass man eine Ampelsteuerung draus bauen kann.
Hat schon jemand erfahrung mit diesem Paket gemacht?
-
Flexx, bei der Schaltung wird ein Spannungsregler mit 100mA maximalstrom ausreichen.
Taster und LEDs(mit Vorwiderstand) kannst du vom Pin sowohl nach Masse als auch nach +5V (LEDs auch nach +9V) schalten.
du musst das dann nur beim Programmieren beachten!
Bsp: Pin(Eingang) - Taster - Masse => Taster gedrückt=logischer Pegel von "0"!
Achtung: du brauchst einen Pullup-widerstand, damit NIE ein undefiniterter Pegel anliegen kann.
Pullups gibt es INTERN in allen AVRs, die kannst du einschalten, indem du bei einem als Eingang konfigurierten Pin (DDR entsprechend) in die Stelle für sein Ausgangsregister eine "1" setzt.
Anderstrum ( Pin - Taster - +5V) ist Taster gedrückt="1", aber du brauchst einen externen Pulldown!
bei den LEDs ist es einfacher (ohne Pullup/-down):
Pin - LED -Widerstand -Masse => logisch "1" ausgeben=LED an
Pin - LED -Widerstand -+5V/+9V => logisch "0" ausgeben=LED an
habe dieses Paket übrigens nicht.
-
Kannst du mir genau erklären, was ein Pullup/-down Widerstand ist und was er bewirkt.
Vielen Dank für die zahlreichen Antworten.
-
pull up zieht den pin nach vcc damit der nicht sonste was empfängt oder spinnt. pull down zieht pin nach ground.
den schalter sollte man entprellen softwaremäsig if taster gedrück 10ms warten endlos schleife in der gefragt wird ob der taster gehen gelassen wurde wenn ja abbruch der endlos schleife led blinken lassen wieder mit endlosschleif und frage od taste gerdrückt wird um den normalen zustand zu ereichen (ampel funktion)
such dir einfach ein port aus papp die leds mit bissel kabel und nem widerstand an drei pins deiner wahl Pin-Widerstand-Kabel-Led
ich programier nur in bascom aber vom prinzip müsste es nich so schwer sein
endlos schleife in der pin der ersten led an geschalten irgend einwas zum verzögern (Waitms bei bascom) led aus nächste an verzögerung .........
oder man nimmt den internen timer zu welcher zeit was gemacht wird und dann timer zurück setzen
-
Also vom Prizip her sollte es so funktionieren:
Batterie anschließen und die normale Ampelfunktion beginnt mit einer Endlosschleife.
Rot--->7sec
Rot,Gelb--->1oder2sec
Grün--->7sec
Gelb--->1oder2sec
Rot--->7sec
...
und sobald man den Taster bedient, soll die Gelbe LED anfangen zu linken.
1sec an und 1sec aus. 1Hz. Uach eine endloasschleife.
Nochmal Taster betätigen, normale Ampelschaltung.
Ich hoffe ich bekomme das mit Assembler hin. 8-[
-
Hattest du sowieso vor Assembler zu lernen oder willst du das nur für die Ampelsteuerung benutzen? Weil dann würde ich dir eher Bascom empfehlen, das ist für Anfänger einfacher. Damit kannst du die Ampelsteuerung mit ein paar Befehlszeilen leicht lösen, bei ASM ist das schwieriger! Du solltest dir gut überlegen wie weit du in die Materie/Architektur des µC einsteigen willst. Bei ASM ist das Pflicht das du dich damit genau auskennst was welche Register machen und wie diese Konfiguriert werden müsen.
-
Nein,
später möchte ich auf den ATmega8 oder 32 umsteigen und LCD´s programmieren.
-
zum Programm: ich würde eine Warteschleife machen, an die du einen wert übergeben kannst (wie viele ms die Schleife warten soll). in dieser Warteschleife läuft ein Zähler, und nach jedem mal weiterzählen (Laufvariable+1) wird der Tasterzustand abgefragt.
wurde der Taster gedrückt, wird eine weitere Variable mitgezählt, bis sie einen bestimmten Wert erreicht hat, dann wird in die Blinkschleife gesprungen. wird der Taster vorzeitig wieder losgelassen, setzt du die Variable einfach wieder auf 0.
-
Ich habe mir jetzt mal die Demo von dem myAVR Studio SE gedownloadet, und habe festgestellt, dass C viel übersichtlucher und kürzer ist.