]> git.piffa.net Git - sketchbook_andrea/blob - libraries/common/common.h
common utilities
[sketchbook_andrea] / libraries / common / common.h
1 /*
2   Common Class
3
4   Oggetti comuni
5
6 */
7
8 #include "Arduino.h"
9 #include <avr/pgmspace.h>
10
11 #ifndef common_h
12 #define common_h
13
14 // Variabili
15 const uint8_t BCORRECT[256] PROGMEM = { // Tabella per correzione luminosita' PWM
16    0,0,0,1,1,1,2,1,1,2,1,2,2,2,3,2,
17    2,2,3,2,2,3,2,3,3,3,4,3,3,3,4,4,
18    4,5,4,5,4,5,5,6,5,5,6,5,6,6,7,6,
19    7,7,8,7,8,8,9,8,9,10,9,10,10,11,10,11,
20    11,12,11,12,13,12,13,13,14,14,15,15,15,16,16,17,
21    17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,
22    25,25,26,26,27,28,28,29,29,30,31,31,32,32,33,34,
23    34,35,36,37,37,38,39,39,40,41,42,43,43,44,45,46,
24    47,47,48,49,50,51,52,53,54,54,55,56,57,58,59,60,
25    61,62,63,64,65,66,67,68,70,71,72,73,74,75,76,77,
26    79,80,81,82,83,85,86,87,88,90,91,92,94,95,96,98,
27    99,100,102,103,105,106,108,109,110,112,113,115,116,118,120,121,
28    123,124,126,128,129,131,132,134,136,138,139,141,143,145,146,148,
29    150,152,154,155,157,159,161,163,165,167,169,171,173,175,177,179,
30    181,183,185,187,189,191,193,196,198,200,202,204,207,209,211,214,
31    216,218,220,223,225,228,230,232,235,237,240,242,245,247,251,255
32 };
33
34 // Inserirne una con 32 valori
35
36
37 class RGBLed {
38   // Classe rappresentativa di un LED RGB
39   protected:    // Vedi esempio Ereditarieta'
40     byte redPin ;
41     byte greenPin ;
42     byte bluePin ;
43     byte redValue ;
44     byte greenValue ;
45     byte blueValue ;
46     byte common ;
47
48   public:
49     RGBLed (byte pinR, byte pinG, byte pinB) ;
50     RGBLed (byte pinR, byte pinG, byte pinB, byte com) ;
51         void SetColor (byte r, byte g, byte b) ;
52         void Red ();
53     void Green ();
54     void Blue ();
55     void Magenta ();
56     void Cyano ();
57     void White ();
58     void Yellow ();
59     void Off ();
60 };
61
62
63
64 class Lampeggiatore {
65     // Lampeggia un LED utilizzando millis()
66     // Variabili
67     int ledPin ;           // il numero del LED pin
68     long interval ;        // milliseconds di intervallo nel lampeggiare
69     unsigned long previousMillis ;  // precedente cambio di stato
70     int ledState ;         // stato attuale del LED, pubblico per invertirlo
71
72     // Constructor: come viene instanziato un oggetto facente parte della classe
73 public:
74     Lampeggiatore(int pin);
75     void Invert();   // Inverte il lampeggio 
76     void Blink();        // Lampeggia ogni 500ms
77     void Blink(long interval); // Lampeggia inpostando l'intervallo
78     void Blink(long on, long down); // Imposta il tempo acceso e il tempo spento
79     void High();    // Accende il LED
80     void Low();     // Spegne il LED
81     void Swap();    // Inverte lo stato del LED
82 };
83
84
85
86 ////////////////////////////
87 class Pwm {
88     /*
89        PWM per un LED: aumentare progressivamente la luminosita'.
90        Utilizza la funzione millis() invece che un delay()
91        in modo da non blocare il processore.
92     */
93     // Variabili
94     int ledPin ;           // il numero del LED pin
95     int speed ;            // velocita' del ciclo in ms
96     unsigned long previousMillis ;  //precedente cambio di stato
97     byte increment ;      // aumenta brighteness nel loop UD
98
99     // Constructor: come viene instanziato un oggetto facente parte della classe
100 public:
101     Pwm(int pin);  // numero di pin, velocita' di ciclo
102     void Up(long speed);
103     void lUp(long speed);
104     void Down(long speed);
105     void lDown(long speed);
106     void UD(long speed);
107     void Set(byte brighteness);
108     void lSet(byte brighteness);
109     byte brightness  ;      // luminostia' iniziale
110 };
111
112
113
114 ////////////////////////////
115 class Sequenza {
116     // Lampeggia LED in sequenza utilizzando millis()
117     unsigned long previousMillis ;
118     byte i = 0;
119     byte *ledPins;
120     byte size;
121     int inc = 1;
122     long interval;
123     
124   public:
125     Sequenza (byte passed[], byte dim) ; // Array contentente i PINS, dimensioni array
126     void Update(long value) ;  // Accende in sequenza
127     void Reverse(long value) ; // Invertita
128     void UD(long value) ; // Up & Down
129 };
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146 //////////////////////
147 // Funzioni
148
149 void brilla(byte pin, int velocita = 200) ;
150 #endif
151
152 byte lum(byte val);