Liste der Anhänge anzeigen (Anzahl: 4)
LED-Lauflicht-Text-Teil
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!
Liste der Anhänge anzeigen (Anzahl: 1)
Also, der "Kopf" ist einfach eine ATmega8 Grundbeschaltung + 5 SMD LED's an PC0 bis PC4, das Ganze steckt auf der Welle des Schrittmotors.
Code:
#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).