Arduino - knihovna [Dimmer]


Jednoduchá knihovna pro obsluhu podsvícení LCD displeje, používá jeden PWM pin, zavoláním funkce on(intenzita, zpozdění, rychlost) nastavíme jas podsvícení na požadovanou hodnotu (0-255), a k aktuálnímu času systému se připočte zpoždění po kterém začne podsvícení pozvolna (intervalem v milisekundách) pohasínat až do uplného setmění.


KeyBoard 4x4

Dimmer.h:
	    #ifndef Dimmer_H
	    #define Dimmer_H


	    class Dimmer {

	        public:
	            Dimmer(unsigned short);
	            void on(unsigned char, unsigned long, unsigned short);
	            bool available();
	            bool dimming();


	        private:
	            unsigned short pin;
	            unsigned long time;
	            unsigned char pwm;
	            unsigned short duration;

	    };

	    #endif

	

Dimmer.cpp:
	    #include "Arduino.h"
	    #include "Dimmer.h"

	    Dimmer::Dimmer(unsigned short pin){
	        Dimmer::pin = pin;
	        Dimmer::duration = 0;
	        Dimmer::time = 0;
	        Dimmer::pwm = 255;
	    }

	    void Dimmer::on(unsigned char pwm, unsigned long timeout, unsigned short duration) {
	        Dimmer::pwm = ~pwm;
	        Dimmer::duration = duration;
	        Dimmer::time = millis() + timeout;

	        analogWrite(pin, ~pwm);
	    }

	    bool Dimmer::available() {
	        unsigned long now = millis();

	        return (pwm > 0 && time < now);
	    }

	    bool Dimmer::dimming() {
	        unsigned long now = millis();
	        unsigned char value = map(min(now, time+duration), min(now, time), time+duration, pwm, 255);

	        if ( value == 255)
	            pwm = 0;

	        delay(10);
	        analogWrite(pin, value);

	        return (value == 255);
	    };

	


Ke stažení: