#include "WS2812B_Atmega.h"

inline void writeZero() {
	DATAPIN = 1;
	wait6;
	DATAPIN = 0;
	wait15;
}

inline void writeOne() {
	DATAPIN = 1;
	wait14;
	DATAPIN = 0;
	wait8;
}

void writeRGB(uint8_t r, uint8_t g, uint8_t b) {
	int i;
	
	for( i = 128; i > 0; i >>= 1 ) {
		if( g & i ){
			writeOne();			
		} else {
			writeZero();
		}
	}
	
	for( i = 128; i > 0; i >>= 1 ) {
		if( r & i ){
			writeOne();			
		} else {
			writeZero();
		}
	}
	
	for( i = 128; i > 0; i >>= 1 ) {
		if( b & i ){
			writeOne();			
		} else {
			writeZero();
		}
	}
}
