You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

99 lines
1.7 KiB

/*Digital Pin 2 is on PE4 (OC3B/INT4)*/
#define PIN 2
void setup() {
// put your setup code here, to run once:
/*define Pin 2/PE4 as output*/
/*Libraries included w/arduino IDE*/
DDRE = 0b00010000;
}
void loop() {
// put your main code here, to run repeatedly:
while(1){
//sendPixel(0,0,0,10);
//sendPixel(0,0,5);
OneLittleRGBFunc(30);
delay(1000);
}
}
/*
* Good way to see how fast your GPIO really is
void PixHi (void){
PORTE = 0b00010000;
}
void PixLow (void){
PORTE = 0x00;
}
*/
void PixZero (void){
PORTE = 0b00010000;
//_delay_us(0.25);
PORTE = 0x00;
//_delay_us(0.25);
}
void PixOne (void){
PORTE = 0b00010000;
//_delay_us(0.55);
_delay_us(0.55);
PORTE = 0x00;
}
void PixBit (bool res){
if (res == false){
PixZero();
}
if (res == true){
PixOne();
}
}
void PixByte (char input){
uint8_t changer = 0;
//WS2812 reads bits as left is lowest (high in first), so go backwards
for(changer=8;changer>0;changer--){
PixBit(bitRead(input, changer));
//input <<= 1; //Atmega didn't like this, so instead, using changer
//instead of shifting input
}
}
void sendPixel(uint8_t g, uint8_t r, uint8_t b){
/*ws2812, reads bits left side as lowest*/
/*PixByte(0b10100000); //This is dim green
PixByte(0b00000000);
PixByte(0b00000000);
PixByte(0b00000000); //no white on my LED*/
PixByte(g);
PixByte(r);
PixByte(b);
//PixByte(w);
PORTE = 0x00;
}
void OneLittleRGBFunc (uint8_t max){
int rgbfunc = 0;
for (rgbfunc = 0; rgbfunc < max; rgbfunc++){
sendPixel(0,10,rgbfunc);
delay(22);
}
for (rgbfunc = max; rgbfunc > 0; rgbfunc--){
sendPixel(0,10,rgbfunc);
delay(22);
}
}