PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Back LEDs zum Blinken bringen



MCClane
01.11.2006, 14:57
Hallo @ all
also ich möchte das meine Lampen vom Asuro blinken und hab mir was dazugedacht doch das funst nicht die lampen bleiben an.
so ich schreibe euch mal meinen Qeulltext.

#include "asuro.h"

int main(void)
{
Init();

while (10)
{
StatusLED(RED);
BackLED(OFF,OFF);
Sleep (200);
BackLED(ON,ON);
};

return 0;
}
So das ist der Qeulltext
Wer kann mir sagen wie ich die Lampen zum Blinken bekomme
Danke
MCClane

damaltor
01.11.2006, 15:21
erstmal heisst es while(1) und nicht while(10), das sollte aber nicht so wichtig sein.

sleep(200) bedeutet eine pause von weniger als 2 millisekunden-- ich glaub nicht dass du da was sehen kannst. siehe anleitung! die 200 ist nicht die wartezeit in millisekunden..... dann hast du eine pause nachdem du die lichter ausgemacht hast... aber keine pause nachdem du die lichter wieder angemacht hast...

ich empfehle dir dringend die anleitung genau zu lesen, zu verstehen, und dann nochmal zu probieren......

Toschtosch
01.11.2006, 15:46
* Msleep(int delay) wait for delay in milliseconds

würd mal höhere zahlen empfehlen :D

Osser
01.11.2006, 16:58
Das Proggi hier lässt deine LED's blinken.




#include "asuro.h"

int main(void)
{

Init();
StatusLED(RED);

while (1) {

BackLED(OFF, OFF);
Sleep (200);

BackLED(ON, ON);
Sleep (200); //!!!!!!

}

while (1) {} // Zur Sicherheit immer einbauen...
return 0;

}

EDH
01.11.2006, 19:58
Das problem an dem geblinke ist wohl die Zeitverzögerung. und nachdem die sleep funktion mit 72kHz arbeitet sind die zahlen recht schwer zu merken.
Dazu eine ganz einfache Funktion:

int sleep_ms(int zeit_in_millisekunden) {
int i;
for(i=0;i<zeit_in_millisekunden;i++)
sleep(72);
return 0;
}


ich schätze dadurch wird das ganze etwas klarer

izaseba
01.11.2006, 20:10
Hallo EDH,

Ich schlag mal vor, Du besorgst Dir die erweiterte Lib.

Hier ein Auszug daraus:


void Msleep(int dauer)
{
int z;
for(z=0;z<dauer;z++) Sleep(72);
}


:-$

P.S.
Welchen Sinn hat es, ein 0 zurückzugeben ?

Gruß Sebastian

EDH
01.11.2006, 20:18
Oh in der tat
, die erweiterte lib hab ich gar nicht wo kriegt man die (oder seh ich den wald vor lauter bäumen nicht)

und was das return 0 anbelangt, eigentlcih braucht man das nicht, das stimmt.



mfg EDH

izaseba
01.11.2006, 20:29
Hallo EDH,

http://sourceforge.net/projects/asuro/

schau mal da.

Ist schon bald 1 Jahr alt und mit den neueren avr-gcc Versionen müßte es eigentlich Warnings hageln, es wundert mich, daß es noch keinem aufgefallen ist.

Gruß Sebastian

Toschtosch
01.11.2006, 20:31
http://sourceforge.net/projects/asuro

MCClane
03.11.2006, 10:52
Hallo
Danke für die Zahlreichen Antworten!!!

Ich habe das ganze jetzt glaube ich verstanden aber könnte mir noch jemand sagen wie ich jetzt diese Zeitschleife mit dem blinken verbinde.
Vielleicht so:

#include "asuro.h"

int main(void)
{

Init();
StatusLED(RED);

void Msleep(int 72)
{
int z;
for(z=0;z<72;z++) Sleep(72);


BackLED(OFF, OFF);
Sleep (72);

BackLED(ON, ON);
Sleep (72);

}



return 0;

}

So das ist es was ich mir jetzt vorstelle!!
bitte nicht böse sein wenn es arg Falsch ist bin Anfänger!
Danke
MCClne

Toschtosch
03.11.2006, 10:59
Hallöchen, versuch mal den quell text
hoffe der ist fehlerfrei, ich schreib den einfach mal so vor mich hin.



#include "asuro.h"

int main(void)
{

Init();
StatusLED(RED);

while (1) {

BackLED(OFF, OFF);
Msleep (166); //eine sekunde ist ca. 666 sprich ich hab einfach mal eine viertel sekunde als blinkzeit eingestellt

BackLED(ON, ON);
Msleep (166);

}
return 0;

}



mfg toschtosch