#include "Arduino.h"
#include "common.h"
-#define DEBUG_not
+#define DEBUG
//////////////////////
// RGB LED
previousMillis = 0;
byte brightness = 0 ;
increment = 1;
+ int step = 0; // Pulse: stato del loop PWM
+ int interval = 1;
};
void Pwm::Up(long speed, long drift) {
}
+void Pwm::Pulse(int interval, int pausa) {
+ // PWM up/down + un ciclo di pausa
+ // Interval e' la pausa tra uno step di 255 e l'altro
+
+ if ((millis() - previousMillis) >= interval) {
+ previousMillis = millis();
+ if (step < 256) { //UP
+ analogWrite(ledPin, lum(step));
+ step++ ;
+ } else if (step < 512 ) { // Down
+ analogWrite(ledPin, lum(511 - step));
+ step++ ;
+ } else if (step < 512 + pausa ){ // Pausa
+ analogWrite(ledPin, lum(0));
+ step++ ;
+ } else if (step >= 512 + pausa) { // Reset
+ step = 0 ;
+ }
+ }
+}
+
+void Pwm::RandomPulse(int min , int max, int pausa ) {
+ // PWM up/down + un ciclo di pausa
+ // L'intervallo e' random a ogni nuovo ciclo,
+ // compreso tra un min - max passato come argomento
+
+ if ((millis() - previousMillis) >= interval) {
+ previousMillis = millis();
+ if (step < 256) { //UP
+ analogWrite(ledPin, lum(step));
+ step++ ;
+ } else if (step < 512 ) { // Down
+ analogWrite(ledPin, lum(511 - step));
+ step++ ;
+ } else if (step < (512 + pausa )){ // Pausa
+ analogWrite(ledPin, lum(0));
+ step++ ;
+ } else if ((step >= 512 + pausa )) {
+ step = 0 ;
+ interval = random(min,max);
+ }
+ }
+}
+
void Pwm::lSet(byte brightness) {
// Imposta il valore del PWM con correzione luminosita' LED
analogWrite(ledPin, lum(brightness));
int speed ; // velocita' del ciclo in ms
unsigned long previousMillis ; //precedente cambio di stato
byte increment ; // aumenta brighteness nel loop UD
+ int step; // Pulse: stato del loop PWM
+ int interval ; // Pulse: Intervallo tra step
// Constructor: come viene instanziato un oggetto facente parte della classe
public:
void Down(long speed, long drift = 0);
void lDown(long speed, long drift = 0);
void UD(long speed, long drift = 0);
+ void Pulse(int interval, int pausa = 255);
+ void RandomPulse(int min = 1, int max = 10, int pausa = 255);
void Set(byte brighteness);
void lSet(byte brighteness);
byte brightness ; // luminostia' iniziale
// led.UD(4000); // Aumenta e poi diminuisce la luminostia' in 4 sec (coseno)
// Tutti questi metodi accettano un valore opzionale per il ritardo
+// led.Pulse(3,512); // Una pulsazione e una pausa di 512ms
+// led.RandomPulse(1,3); // Pulsazione con intervallo random tra 1-10, cambia ogni ciclo
+// led.RandomPulse(1,3,382); // "" pausa di 382 step tra un ciclo di 255 up + 255 down
// led.Set(100); // Imposta il valore del PWM da 0-255
// led.lSet(100); // Imposta il valore del PWM con correzione luminosita'
// analogWrite(lum100); // Equivalente a sopra