Stefan Kinzel
10 years ago
5 changed files with 173 additions and 0 deletions
@ -0,0 +1,145 @@ |
|||
#include "../config.h" |
|||
#include <stdint.h> |
|||
#include "../random/prng.h" |
|||
#include "../pixel.h" |
|||
#include "../util.h" |
|||
|
|||
|
|||
#define HEIGHT 12 |
|||
#define LINE_DISTANCE 4 |
|||
#define SIN_LENGTH 16 |
|||
|
|||
// uint8_t sin[SIN_LENGTH] = {0, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 3, 2, 2, 1, 0};
|
|||
|
|||
uint8_t sintab[SIN_LENGTH] = { |
|||
1, |
|||
2, |
|||
3, |
|||
4, |
|||
5, |
|||
5, |
|||
6, |
|||
6, |
|||
6, |
|||
6, |
|||
6, |
|||
5, |
|||
5, |
|||
4, |
|||
3, |
|||
2, |
|||
}; |
|||
|
|||
/*
|
|||
uint8_t sintab[SIN_LENGTH] = { |
|||
1, |
|||
1, |
|||
2, |
|||
2, |
|||
3, |
|||
3, |
|||
4, |
|||
4, |
|||
5, |
|||
5, |
|||
5, |
|||
5, |
|||
6, |
|||
6, |
|||
6, |
|||
6, |
|||
6, |
|||
6, |
|||
6, |
|||
6, |
|||
6, |
|||
5, |
|||
5, |
|||
5, |
|||
5, |
|||
4, |
|||
4, |
|||
3, |
|||
3, |
|||
2, |
|||
2, |
|||
1, |
|||
}; |
|||
*/ |
|||
|
|||
void dna(){ |
|||
uint8_t mid = NUM_COLS / 2; |
|||
uint8_t draw_line = 0; |
|||
|
|||
uint8_t top = 0; |
|||
uint8_t bottom = 0; |
|||
|
|||
uint8_t top_color = 3; |
|||
uint8_t bottom_color = 2; |
|||
|
|||
uint32_t c = 10000; |
|||
|
|||
uint8_t sinpos = 0; |
|||
|
|||
uint8_t direction = 1; |
|||
|
|||
while(c--){ |
|||
top = mid - sintab[sinpos]; |
|||
bottom = mid + sintab[sinpos]; |
|||
|
|||
setpixel((pixel){15,top}, top_color); |
|||
setpixel((pixel){15,bottom}, bottom_color); |
|||
|
|||
if(draw_line == 0){ |
|||
for(uint8_t linex = top+1; linex < bottom; linex++){ |
|||
setpixel((pixel){15, linex}, 1); |
|||
} |
|||
setpixel((pixel){15, mid}, 1); |
|||
} |
|||
|
|||
if(draw_line == 0){ |
|||
if(top <= 1){ |
|||
direction = 1; |
|||
} |
|||
if(bottom >= NUM_ROWS-1){ |
|||
direction = -1; |
|||
} |
|||
mid = mid + (random8() > 240) * direction; |
|||
} |
|||
|
|||
draw_line = (draw_line+1) % LINE_DISTANCE; |
|||
sinpos = (sinpos + 1) % SIN_LENGTH; |
|||
|
|||
if(sinpos == 0){ |
|||
uint8_t tmp_color = top_color; |
|||
top_color = bottom_color; |
|||
bottom_color = tmp_color; |
|||
} |
|||
|
|||
move(); |
|||
|
|||
wait(40); |
|||
} |
|||
|
|||
|
|||
} |
|||
|
|||
/**
|
|||
* Shifts the Pixmap one px right |
|||
*/ |
|||
void move(){ |
|||
unsigned char plane, row, byte; |
|||
|
|||
for(plane=0; plane<=NUMPLANE; plane++){ |
|||
for(row=NUM_COLS;row>0; row--){ |
|||
for(byte=0; byte < LINEBYTES; byte++){ |
|||
pixmap[plane][row][byte] = pixmap[plane][row][byte] >> 1; |
|||
if(byte < LINEBYTES-1){ |
|||
pixmap[plane][row][byte] = |
|||
pixmap[plane][row][byte] | |
|||
(pixmap[plane][row][byte+1] & 0b00000001) << 7; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
@ -0,0 +1,14 @@ |
|||
/*
|
|||
* dna.h |
|||
* |
|||
* Created on: 15.07.2014 |
|||
* Author: stefan |
|||
*/ |
|||
|
|||
#ifndef DNA_H_ |
|||
#define DNA_H_ |
|||
|
|||
void dna(); |
|||
void move(); |
|||
|
|||
#endif /* DNA_H_ */ |
Loading…
Reference in new issue