Skip to content

Instantly share code, notes, and snippets.

@dimme
Created April 10, 2013 01:36
Show Gist options
  • Save dimme/5351041 to your computer and use it in GitHub Desktop.
Save dimme/5351041 to your computer and use it in GitHub Desktop.
/* ATMEL ATMEGA16 Hand-powered v2 POV program made by Dimme.net */
#include "avr/io.h"
#define SPACE 100
#define SHORTLINE 100
#define SHORTSHORTLINE 50
#define MIDLINE 300
#define RSPACE 400
void write(char*);
void ch(char);
void wait(unsigned long int);
void led(unsigned long int, unsigned int);
void alloff();
void init();
int main(void){
init();
while(1){
write("DIMME.NET ");
}
}
void write(char* w){
unsigned int i = 0;
while (w[i] != 0){
ch(w[i]);
i++;
}
}
void ch(char c){
if (c == 'A') {
led(0b0001111111111111,SHORTSHORTLINE);
led(0b0011111111111111,SHORTSHORTLINE);
led(0b1110000111000000,MIDLINE);
led(0b0011111111111111,SHORTSHORTLINE);
led(0b0001111111111111,SHORTSHORTLINE);
alloff();
wait(SPACE);
} else if (c == 'H') {
led(0b1111111111111111,SHORTLINE);
led(0b0000001111000000,MIDLINE);
led(0b1111111111111111,SHORTLINE);
alloff();
wait(SPACE);
} else if (c == 'I') {
led(0b1110000000000111,SHORTLINE);
led(0b1111111111111111,SHORTLINE);
led(0b1110000000000111,SHORTLINE);
alloff();
wait(SPACE);
} else if (c == 'D') {
led(0b1111111111111111,SHORTLINE);
led(0b1110000000000111,SHORTLINE);
led(0b1110000000000111,SHORTLINE);
led(0b0111100000011110,SHORTSHORTLINE);
led(0b0001110000111000,SHORTSHORTLINE);
led(0b0000111111110000,SHORTSHORTLINE);
led(0b0000001111000000,SHORTSHORTLINE);
alloff();
wait(SPACE);
} else if (c == 'E') {
led(0b1111111111111111,SHORTLINE);
led(0b1110001111000111,MIDLINE);
led(0b1110000000000111,SHORTLINE);
alloff();
wait(SPACE);
} else if (c == 'M') {
led(0b1111111111111111,SHORTLINE);
led(0b0001111000000000,SHORTSHORTLINE);
led(0b0000011110000000,SHORTSHORTLINE);
led(0b0000000111100000,SHORTLINE);
led(0b0000011110000000,SHORTSHORTLINE);
led(0b0001111000000000,SHORTSHORTLINE);
led(0b1111111111111111,SHORTLINE);
alloff();
wait(SPACE);
} else if (c == '.') {
led(0b0000000000000111,SHORTLINE);
alloff();
wait(SPACE);
} else if (c == 'N') {
led(0b1111111111111111,SHORTLINE);
led(0b0011110000000000,SHORTSHORTLINE);
led(0b0001111000000000,SHORTSHORTLINE);
led(0b0000011110000000,SHORTSHORTLINE);
led(0b0000001111000000,SHORTSHORTLINE);
led(0b0000000011110000,SHORTSHORTLINE);
led(0b0000000000111100,SHORTSHORTLINE);
led(0b1111111111111111,SHORTLINE);
alloff();
wait(SPACE);
} else if (c == 'T') {
led(0b1110000000000000,SHORTLINE);
led(0b1110000000000000,SHORTLINE);
led(0b1111111111111111,SHORTLINE);
led(0b1110000000000000,SHORTLINE);
led(0b1110000000000000,SHORTLINE);
alloff();
wait(SPACE);
} else if (c == ' ') {
wait(RSPACE);
}
}
void wait(unsigned long int j){
unsigned long int i;
for(i = 0; i < j; i++);
}
void led(unsigned long int n, unsigned int w){
PORTD = (unsigned short int) n;
PORTB = n >> 8;
wait(w);
}
void alloff(){
PORTD = 0;
PORTB = 0;
}
void init(){
DDRD = (1<<DDD7)|(1<<DDD6)|(1<<DDD5)|(1<<DDD4)|(1<<DDD3)|(1<<DDD2)|(1<<DDD1)|(1<<DDD0);
DDRB = (1<<DDB7)|(1<<DDB6)|(1<<DDB5)|(1<<DDB4)|(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0);
alloff();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment