--- /dev/null
+/*
+ Blink v1
+
+ Accensione e spegnimanto di un ledA utilizzando variabili
+ per impostare la velocita' del lampeggio.
+
+ */
+
+// Pin 13 ha un led collegato di default
+int ledA = 6;
+int ledB = 7;
+
+void setup() {
+ // Inizializziamo il PIN 13 come OUTPUT
+ pinMode(ledA, OUTPUT);
+ pinMode(ledB, OUTPUT);
+}
+
+void loop() {
+ // 1st step
+ digitalWrite(ledA, HIGH);
+ delay(150);
+ digitalWrite(ledA, LOW);
+ delay(50);
+ digitalWrite(ledB, HIGH);
+ delay(150);
+ digitalWrite(ledB, LOW);
+ delay(50);
+
+ // 2st step
+ digitalWrite(ledA, HIGH);
+ delay(150);
+ digitalWrite(ledA, LOW);
+ delay(50);
+
+
+ // 3st step
+ delay(150);
+ digitalWrite(ledA, LOW);
+ digitalWrite(ledB, LOW);
+ delay(50);
+ digitalWrite(ledA, HIGH);
+ digitalWrite(ledB, HIGH);
+ delay(350);
+ digitalWrite(ledA, LOW);
+ digitalWrite(ledB, LOW);
+ delay(50);
+
+
+ // Reverse
+ // 1st step
+ digitalWrite(ledB, HIGH);
+ delay(150);
+ digitalWrite(ledB, LOW);
+ delay(50);
+ digitalWrite(ledA, HIGH);
+ delay(150);
+ digitalWrite(ledA, LOW);
+ delay(50);
+
+ // 2st step
+ digitalWrite(ledB, HIGH);
+ delay(150);
+ digitalWrite(ledB, LOW);
+ delay(50);
+
+
+ // 3st step
+ delay(150);
+ digitalWrite(ledB, LOW);
+ digitalWrite(ledA, LOW);
+ delay(50);
+ digitalWrite(ledB, HIGH);
+ digitalWrite(ledA, HIGH);
+ delay(350);
+ digitalWrite(ledB, LOW);
+ digitalWrite(ledA, LOW);
+ delay(50);
+
+
+}
+
// RGB LED
// Common anode / cat
-RGBLed::RGBLed(byte pinR, byte pinG, byte pinB) {
+RGBLed::RGBLed(byte pinR, byte pinG, byte pinB) {
// Per un common catodo, valore max / min invertiti
- redPin = pinR ;
- greenPin = pinG ;
- bluePin = pinB ;
- common = 0 ;
-
- // Equvalente del Setup() per inizializzare i PIN
- pinMode(redPin, OUTPUT);
- pinMode(greenPin, OUTPUT);
- pinMode(greenPin, OUTPUT);
+ redPin = pinR ;
+ greenPin = pinG ;
+ bluePin = pinB ;
+ common = 0 ;
+
+ // Equvalente del Setup() per inizializzare i PIN
+ pinMode(redPin, OUTPUT);
+ pinMode(greenPin, OUTPUT);
+ pinMode(greenPin, OUTPUT);
};
RGBLed::RGBLed(byte pinR, byte pinG, byte pinB, byte com) {
// Per un common anode, valore max / min normali
- redPin = pinR ;
- greenPin = pinG ;
- bluePin = pinB ;
- common = com ;
-
- // Equvalente del Setup() per inizializzare i PIN
- pinMode(redPin, OUTPUT);
- pinMode(greenPin, OUTPUT);
- pinMode(greenPin, OUTPUT);
+ redPin = pinR ;
+ greenPin = pinG ;
+ bluePin = pinB ;
+ common = com ;
+
+ // Equvalente del Setup() per inizializzare i PIN
+ pinMode(redPin, OUTPUT);
+ pinMode(greenPin, OUTPUT);
+ pinMode(greenPin, OUTPUT);
};
void RGBLed::SetColor (byte r, byte g, byte b) {
// Imposta il colore di un LED RGB
- analogWrite(redPin, common - r);
- analogWrite(greenPin, common - g);
- analogWrite(bluePin, common - b);
- };
+ analogWrite(redPin, common - r);
+ analogWrite(greenPin, common - g);
+ analogWrite(bluePin, common - b);
+};
void RGBLed::Red () {
// Accende il LED di rosso
- SetColor(0,255,255);
- };
+ SetColor(0,255,255);
+};
void RGBLed::Green () {
// Accende il LED di verde
- SetColor(255,0,255);
- };
+ SetColor(255,0,255);
+};
void RGBLed::Blue () {
// Accende il LED di blu
- SetColor(255,255,0);
- };
+ SetColor(255,255,0);
+};
void RGBLed::Magenta () {
// Accende il LED di magenta
- SetColor(0,255,0);
- };
+ SetColor(0,255,0);
+};
void RGBLed::Cyano () {
// Accende il LED di Cyano
- SetColor(255,0,0);
- };
+ SetColor(255,0,0);
+};
void RGBLed::Yellow () {
// Accende il LED di giallo
- SetColor(0,0,255);
- };
+ SetColor(0,0,255);
+};
void RGBLed::White () {
-// Accende il LED
- SetColor(0,0,0);
- };
+// Accende il LED
+ SetColor(0,0,0);
+};
void RGBLed::Off () {
-// Spegne il LED
- SetColor(255,255,255);
- };
+// Spegne il LED
+ SetColor(255,255,255);
+};
void Lampeggiatore::Blink(long time, long drift ) {
// Illumina il led secondo un intervallo passato come argomento
- shift = drift;
+ shift = drift;
if(millis() + shift - previousMillis > time) {
// save the last time you blinked the LED
previousMillis = millis();
void Lampeggiatore::Blink(long up, long down, long drift ) {
// Illumina il ledB precisando ontime e downtime
- shift = drift;
+ shift = drift;
if((ledState == HIGH)&& (millis() + shift - previousMillis > up)) {
- // save the last time you blinked the LED
- previousMillis = millis();
+ // save the last time you blinked the LED
+ previousMillis = millis();
ledState = LOW ;
}
else if((ledState == LOW)&& (millis() + shift - previousMillis > down)) {
- previousMillis = millis();
+ previousMillis = millis();
ledState = HIGH ;
}
void Lampeggiatore::Swap() {
// Inverte lo stato del LED
- digitalWrite(ledPin, !digitalRead(ledPin));
+ digitalWrite(ledPin, !digitalRead(ledPin));
}
/////////////////////////////////////
// Pwm
// Constructor
Pwm::Pwm(int pin)
- // Gestione del PWM utilizzando millis
- // per non bloccare il processore con delay
- // Warning: serialWrite puo' interferire con i tempi.
+// Gestione del PWM utilizzando millis
+// per non bloccare il processore con delay
+// Warning: serialWrite puo' interferire con i tempi.
{
ledPin = pin;
pinMode(ledPin, OUTPUT);
if (millis() != previousMillis) { // si potrebbe togliere
shift = drift;
- brightness = 255.0 /(float)speed * (millis() + shift);
- analogWrite(ledPin, brightness);
+ brightness = 255.0 /(float)speed * (millis() + shift);
+ analogWrite(ledPin, brightness);
previousMillis = millis();
};
if (millis() != previousMillis) { // si potrebbe togliere
shift = drift;
- brightness = 255.0 /(float)speed * (millis() + shift);
- analogWrite(ledPin, lum(brightness));
+ brightness = 255.0 /(float)speed * (millis() + shift);
+ analogWrite(ledPin, lum(brightness));
previousMillis = millis();
};
if (millis() != previousMillis) {
shift = drift;
- brightness = 255 - 255.0 /(float)speed * (millis() + shift) ;
- analogWrite(ledPin, brightness);
+ brightness = 255 - 255.0 /(float)speed * (millis() + shift) ;
+ analogWrite(ledPin, brightness);
previousMillis = millis();
};
if (millis() != previousMillis) {
shift = drift;
- brightness = 255 - 255.0 /(float)speed * (millis() + shift) ;
- analogWrite(ledPin, lum(brightness));
+ brightness = 255 - 255.0 /(float)speed * (millis() + shift) ;
+ analogWrite(ledPin, lum(brightness));
previousMillis = millis();
};
void Pwm::UD(long speed, long drift ) {
// Aumenta e riduce in sequenza la luminosita' usanndo millis()
- shift = drift;
+ shift = drift;
brightness = 128 + 127 * cos(2 * PI / speed * (millis() + shift));
- analogWrite(ledPin, brightness);
+ analogWrite(ledPin, brightness);
}
void Pwm::Set(byte brightness) {
- // Imposta il valore del PWM
- analogWrite(ledPin, brightness);
+ // Imposta il valore del PWM
+ analogWrite(ledPin, brightness);
}
void Pwm::lSet(byte brightness) {
- // Imposta il valore del PWM
- analogWrite(ledPin, lum(brightness));
+ // Imposta il valore del PWM
+ analogWrite(ledPin, lum(brightness));
}
void brilla(byte pin, int velocita ) { // Defalt value di velocita' solo nell'Header
- // Accende e spegne il LED accetando un argomento
- // per impostare la velocita'.
-
-pinMode(pin, OUTPUT);
- // sequenze di istruzione: accendere e spegnere il LED
- digitalWrite(pin, HIGH); // turn the LED on (HIGH is the voltage level)
- delay(velocita); // wait for a second
- digitalWrite(pin, LOW); // turn the LED off by making the voltage LOW
- delay(velocita); // wait for a second
+ // Accende e spegne il LED accetando un argomento
+ // per impostare la velocita'.
+
+ pinMode(pin, OUTPUT);
+ // sequenze di istruzione: accendere e spegnere il LED
+ digitalWrite(pin, HIGH); // turn the LED on (HIGH is the voltage level)
+ delay(velocita); // wait for a second
+ digitalWrite(pin, LOW); // turn the LED off by making the voltage LOW
+ delay(velocita); // wait for a second
};
-byte lum(byte val) {
+byte lum(byte val) {
// Mappatura dell'intervallo 0-255 con correzione di luminosita.
// storata in SRAM
-return pgm_read_byte_near(BCORRECT + val);
+ return pgm_read_byte_near(BCORRECT + val);
};
int calibraTrim(int pin, byte ledPin) {
-/* START Calibrazione TRIM canale:
- Lettura di 10 smaple
- calcolo del valore medio esclusi gli 0
-
- I canali come alettoni / elevatore possono avere un TRIM
- (generalmente il throttle non ha un TRIM impostato),
- questa funzione nel setup serve per trovare il punto medio
- all'avvio dello sketch.
- */
+ /* START Calibrazione TRIM canale:
+ Lettura di 10 smaple
+ calcolo del valore medio esclusi gli 0
+
+ I canali come alettoni / elevatore possono avere un TRIM
+ (generalmente il throttle non ha un TRIM impostato),
+ questa funzione nel setup serve per trovare il punto medio
+ all'avvio dello sketch.
+ */
byte a = 0;
- int ail = 0;
- int ailIn = 0;
+ int ail = 0;
+ int ailIn = 0;
Serial.println(">> Calibrazione: ");
while (a < 10) {
+ if (millis() > 10000) {
+ Serial.print(">> Calibrazione annullata: segnale assente.");
+ ail = 1500;
+ break;
+ };
ailIn = pulseIn(pin, HIGH, 25000);
if (ailIn != 0 ) {
ail = ail + ailIn ;
delay(10);
}
}
- Serial.print(">> Fine Calibrazione: ");
+ Serial.println(">> Fine Calibrazione: ");
Serial.print(ail / 10);
Serial.println("--");
- Serial.flush() ;
+ Serial.flush() ;
return(ail / 10) ;
// END calibrazione
}