PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LED-Lauflicht-Text-Teil



Jacob2
25.12.2008, 17:41
Also, das ist meine Bastelei der letzten ca. 1 1/2 Wochen:
Ein LED-Text-Lauflicht. Ich hab das mal irgendwo auf einem PC-Lüfter gesehen.
Ein Video ist leider nicht möglich, weil dann die optische Illusion wegfällt (Trägheit des Auges)!
Freue mich auf eure Meinungen!
[Edit]: Ihr müsst euch die Bilder von unten nach oben anschauen!

niki1
25.12.2008, 18:28
hallo.
Das hast du sehr schön gemacht.
Kannst du mal den plan und den quellcode posten.
Mfg niki1

MarsoTexx
25.12.2008, 19:26
Einfach Super !

Jacob2
28.12.2008, 10:39
Also, der "Kopf" ist einfach eine ATmega8 Grundbeschaltung + 5 SMD LED's an PC0 bis PC4, das Ganze steckt auf der Welle des Schrittmotors.

#include <avr/io.h>


#ifndef F_CPU
/* Definiere F_CPU, wenn F_CPU nicht bereits vorher definiert
(z.B. durch Übergabe als Parameter zum Compiler innerhalb
des Makefiles). Zusätzlich Ausgabe einer Warnung, die auf die
"nachträgliche" Definition hinweist */
#warning "F_CPU war noch nicht definiert, wird nun mit 1000000 definiert"
#define F_CPU 1000000 /* intern mit 1 Mhz */
#endif
#include <util/delay.h> /* in älteren avr-libc Versionen <avr/delay.h> */

#define TEMPO 1800
#define TEMPO2 3000

int main (void)
{
DDRC = 0xFF;
int ba=0, i=0;
const unsigned char _A[] = {0b00001, 0b10110, 0b10110, 0b00001};
const unsigned char _E[] = {0b00000, 0b01010, 0b01010, 0b01010};
const unsigned char _F[] = {0b00000, 0b11010, 0b11010, 0b11010};
const unsigned char _H[] = {0b00000, 0b11011, 0b11011, 0b00000};
const unsigned char _O[] = {0b10001, 0b01110, 0b01110, 0b10001};
const unsigned char _R[] = {0b00000, 0b11010, 0b10010, 0b01101};
const unsigned char _I[] = {0b11111, 0b00000, 0b11111, 0b11111};
const unsigned char _N[] = {0b00000, 0b11101, 0b10011, 0b00000};
const unsigned char _T[] = {0b11110, 0b00000, 0b11110, 0b11110};
const unsigned char _W[] = {0b00000, 0b00111, 0b00111, 0b00000};
const unsigned char _C[] = {0b10001, 0b01110, 0b01110, 0b01110};
const unsigned char _Must1[] = {0b11001, 0b11110, 0b11110, 0b11001};
const unsigned char _Must2[] = {0b10111, 0b01111, 0b01111, 0b10111};

void B (unsigned char bb[])
{
PORTC = bb[0];
_delay_us(TEMPO);
PORTC = bb[1];
_delay_us(TEMPO);
PORTC = bb[2];
_delay_us(TEMPO);
PORTC = bb[3];
_delay_us(TEMPO);
PORTC = 0b11111;
_delay_us(TEMPO2);
ba += 8;
}
while(1)
{
for(i=0; i < 35; i++)
{
B(_F);
B(_R);
B(_O);
B(_H);
B(_E);
_delay_ms(185 - ba);
ba = 0;
}
for(i=0; i < 45; i++)
{
B(_W);
B(_E);
B(_I);
B(_H);
B(_N);
B(_A);
B(_C);
B(_H);
B(_T);
B(_E);
B(_N);
_delay_ms(168 - ba);
ba = 0;
}
for (i=0; i < 250; i++)
{
B(_Must1);
B(_Must2);
ba = 0;
}
}
return 0;
}

Die Verschiedenen Werte hab ich durch ausprobieren herausgefunden.

Unten ist es einfach ein bipolarer Schrittmotor + Ansteuerung (wieder ein Mega8 + L293D).

Salvador
28.12.2008, 11:42
Wie machst du das mit dem Text, der auf seiner Stelle bleibt? Einfach über die Drehzahl, die gegeben ist, oder irgendwie eine Positionserkennung?

Wie sieht's mit der Stromversorgung aus? Akkus oben drin?

Jacob2
28.12.2008, 16:23
Oben ist ein 9V Block.
Weil das Teil unter Zeitdruck gebaut wurde (Weihnachten!) habe ich einfach die Werte durch Ausprobieren gefunden, d.h. bei einem anderen Text müsste man auch erst wieder ausprobieren. Schöner wärs natürlich wenn das unabhängig vom Text funktionieren würde, das ließe sich bestimmt machen! Aber da ich es hergeschenkt hab, kann ich es jetzt auch nicht mehr weiterentwickeln.

goara
01.01.2009, 18:09
das is ja gemein, der ein ausschalter ist so platziert, dass wenn es mal an ist einem auf die Finger haut wenn man nicht aufpasst ;) .... ansosnten schönes teil ...