/* * Led.h * * Created: 03.11.2013 17:11:58 * Author: BlubbFish */ #ifndef STRIPE_H_ #define STRIPE_H_ #include "hardware/pin.hpp" #include template class Stripe { public: Stripe() { this->init(); } void color(uint8_t r, uint8_t g, uint8_t b) { OCR0B=r; //ROT OCR2B=g; //GRÜN OCR2A=b; //BLAU } void setcolor(uint8_t mask) { (mask & (1<<0)) ? OCR2A=0xFF : OCR2A=0x00; (mask & (1<<1)) ? OCR2B=0xFF : OCR2B=0x00; (mask & (1<<2)) ? OCR0B=0xFF : OCR0B=0x00; } static const uint8_t BLACK = 0; static const uint8_t BLUE = 1; static const uint8_t GREEN = 2; static const uint8_t CYAN = 3; static const uint8_t RED = 4; static const uint8_t MAGENTA = 5; static const uint8_t YELLOW = 6; static const uint8_t WHITE = 7; void off() { this->timerOff(); stripered::make_low(); stripegreen::make_low(); stripeblue::make_low(); } void on() { this->timerOn(); } void lower() { if(OCR0B >= 5) { OCR0B = OCR0B - 5; } else { OCR0B = 0; } if(OCR2B >= 5) { OCR2B = OCR2B - 5; } else { OCR2B = 0; } if(OCR2A >= 5) { OCR2A = OCR2A - 5; } else { OCR2A = 0; } } void higher() { if(OCR0B <= 250) { OCR0B = OCR0B + 5; } else { OCR0B = 0; } if(OCR2B <= 250) { OCR2B = OCR2B + 5; } else { OCR2B = 0; } if(OCR2A <= 250) { OCR2A = OCR2A + 5; } else { OCR2A = 0; } } private: void init() { stripered::make_output(); stripegreen::make_output(); stripeblue::make_output(); this->initTimer(); this->color(0, 0, 0); } void timerOff() { // OC0B output: Disconnected // OC2A output: Disconnected // OC2B output: Disconnected TCCR0A &= ~(1<timerOn(); } const typedef avrlib::pin stripered; const typedef avrlib::pin stripegreen; const typedef avrlib::pin stripeblue; }; #endif /* STRIPE_H_ */