Hallo an alle,
ich sitze jetzt seit mehreren Stunden dran 2 LED`s gleichzeitig zum
Laufen zu kriegen. Eine LED(LED1) soll 2 mal aufblinken die andere
LED(LED2) soll 5 mal aufblinken.
Dies soll jedoch nicht im Wechselpassieren. Das heißt das beiden sollen
zur gleichen zeit anfangen und dann blinken. Bis jetzt habe ich es
jedoch immer nur hinbekommen das die LED1 aufblinkt dann LED2 aufblinkt
und dann wieder LED1 usw.
Kann mir da jemand helfen?
Gruß Christof
Zeichne ein Zeitdiagramm deiner beiden LEDs auf Kästchenpapier und denk
mal drüber nach, was wann passiert, sprich wann dein Mikrocontroller
welche LED wie schalten muss.
Christof L. schrieb:> Hallo an alle,>> ich sitze jetzt seit mehreren Stunden dran 2 LED`s gleichzeitig zum> Laufen zu kriegen. Eine LED(LED1) soll 2 mal aufblinken die andere> LED(LED2) soll 5 mal aufblinken.> Dies soll jedoch nicht im Wechselpassieren. Das heißt das beiden sollen> zur gleichen zeit anfangen und dann blinken. Bis jetzt habe ich es> jedoch immer nur hinbekommen das die LED1 aufblinkt dann LED2 aufblinkt> und dann wieder LED1 usw.> Kann mir da jemand helfen?
Jep.
Kleinste gemeinsame Basis deiner Zeiten ist 1 Sekunde.
Wenn du also nach 2 Stück 1 Sekundenintervallen die eine LED umschaltest
und die andere nach 5 Stück 1 Sekunden Intervallen, dann machen deine
LED genau das was du willst.
Da ich davon ausgehe, dass du mit Timern und ISR noch nicht umgehen
kannst (so würde man das dann letzten Endes korrekt machen):
LedCount1 = 0;
LedCount2 = 0;
while( 1 ) {
LedCount1++;
if( LedCount1 == 2 ) {
LedCount1 = 0;
Led 1 umschalten
}
LedCount2++;
if( LedCount2 == 5 ) {
LedCount2 = 0;
Led 2 umschalten
}
_delay_ms( 1000 );
}
Edit:
Ooops. merke gerade: du hast ja gar nichts über Zeiten gesagt. Eine LED
soll 2 mal aufblinken, IN WELCHEM ZEITRAUM?
Egal: Das Grundrezept bleibt erst mal dasselbe, nur ein paar Zahlenwerte
ändern sich.
Wenn du ganz auf Steuerlogik für die LEDs verzichten möchtest, legst du
in einem festen Zeittakt ein Bitmuster auf deinen Ausgabeport, dass
zyklisch aus einer Tabelle gelesen wird. In der Tabelle ist für jeden
Zeitschritt festgelegt welche LED wann aktiviert ist.
Moin,
ich habe ca. das selbe problem werde aber aus den Antworten nicht viel
schlauer da ich neuling bin. Ich hab mal das gepostet was ich mir so
gedacht hatte jedoch so nicht funktioniert. Bei demm Programm soll die
LED1 sowie die LED2 Leuchten.
Bitte um Hilfe möglichst für Dummis wie mich :)
Danke im Vorraus
______________________________________________
$regfile = "m8def.dat"
'Prozessorauswahl
$crystal = 3686400
'LED_Rot an PD.2
Led1 Alias Portd.2
Config Led1 = Output
'LED_Gelb an PD.3
Led2 Alias Portd.3
Config Led2 = Output
Dim A As Byte
A = 0
Dim B As Byte
B = 0
Do
If A = 0 Then
Gosub Lampe1
Elseif B = 0 Then
Gosub Lampe2
End If
Loop
End
Lampe1:
Led1 = 1
Wait 2
Led1 = 0
Wait 1
Return
Lampe2:
Led2 = 1
Wait 1.5
Led2 = 0
Wait 1
Return
>Bitte um Hilfe möglichst für Dummis wie mich
Aber gerne.
Zunächst lies mal die
http://www.mikrocontroller.net/articles/Netiquette#Klare_Beschreibung_des_Problems
Wir wissen weder was Du genau erreichen willst, noch in welcher Weise
das Dein Programm tun soll, noch was Du nun im Gegensatz zu dem, was Du
möchtest, tatsächliche beobachtest. Diese Informationen solltest Du noch
ergänzen, bitte.
Achso okay,
also ich habe mir vor eine Seekarte zu kaufen und sitze seit mehreren
Tagen dran Led's gleichzeitig laufen zu lassen. Jedoch laufen diese
immer nur im Wechsel oder garnicht.
Die Led's sollen später die Leuchttonnen/Leuchttürme etc darstellen.
Dazu hatte ich schon einmal 2 Kennungen hinbekommen jedoch jede einzeln.
Nun wollte ich sie zusammenfügen sodass beide LED's mit Verschiedenen
Kennungen leuchten. Dann hatte ich mir gedacht das ich das erstmal
vereinfacht hinschreibe und daran rumprobiere weil das ja etwas
übersichtlicher ist als das andere. Nun wisst ihr was ich damit vorhabe,
also das es auch einen Sinn hat.
Würd mich freuen wenn jemand auf einfacher weise helfen kann.
>Nun wisst ihr was ich damit vorhabe, also das es auch einen Sinn hat.
Obwohl das durchaus nicht uninteressant ist, ist danach garnicht gefragt
worden. Und das wonach gefragt worden ist, wurde nicht beantwortet.
Du hast es anscheinend immerhin versucht deswegen noch ein Versuch:
Was genau, im Detail, soll das Programm tun?
Auf welche Weise soll welcher Teil des Programmes welches Detail
erfüllen?
Was genau, im Detail, geschieht tatsächlich?
Das Programm soll LED1 und LED2 jeweils mit deren Eigenen Kennung
abarbeiten. Dies soll gleichzeitig passieren und nicht erst die eine
Kennung von LED1 und danach die von der LED2.
Im moment so wie das Programm oben steht läuft nur die Kennung von LED1
also die LED ist 2 Sekunden an und 1 aus. Danach wiederholt sich das und
LED2 bleibt durchgehend aus.
Hoffe das dies deine Frage beantwortet hat?
Ja das ist es ja die sollen nicht im wechsel laufen sondern beide mit
verschiedenen Kennungen
zb.
Anfang Programm
/ \
/ \
/ \
LED1 An LED2 An
Warte 1s Warte 1s\
Led1 aus Warte 1s - (Warte 3s)
Warte 1s Warte 1s/
Led1 An Led2 aus
Warte 1s Warte 1s\
Led1 aus Warte 1s - (warte 3s)
Warte 1s Warte 1s/
LED1 An LED2 An
Warte 1s Warte 1s\
Led1 aus Warte 1s - (Warte 3s)
Warte 1s Warte 1s/
Led1 An Led2 aus
Warte 1s Warte 1s\
Led1 aus Warte 1s - (warte 3s)
Warte 1s Warte 1s/
\ /
\ /
Ende Programm
so soll das quasi ablaufen das beide Kennungen an und aus gehen und das
nicht nacheinander/abwechselnd.
>so soll das quasi ablaufen das beide Kennungen an und aus gehen und das>nicht nacheinander/abwechselnd.
Mach' es, wie Peter es beschrieben hat. Das wird für uns alle das
einfachste sein.
@ Charlie (Gast)
>gedacht hatte jedoch so nicht funktioniert. Bei demm Programm soll die>LED1 sowie die LED2 Leuchten.>Bitte um Hilfe möglichst für Dummis wie mich :)
Wie wäre es, wenn du mal die Hinweise beachten würdest und mal AKTIV was
tust?
Deine kleinste Zeiteinheit scheint 0,5s zu sein. In dem Raster musst du
nun deine LEDs ein und aus schalten. Mit etwas Grips kein Thema.
Äh, wo ist denn jetzt noch das Problem, hier wurden doch mehrere
Lösungen vorgestellt. Mit nem Timer sicherlich eleganter, aber für dich
wahrscheinlich unlösbar.
Ingo