Citazione:
Originalmente inviato da ElNonino |
Tu non lo sai, ma già c'è!!!!
Comunque ho buttato giù un po di codice, giusto come punto di partenza.
Carlo
// ingressi canali radio
byte pinCH1 = 2; // canale x ricevente
unsigned int durationCH1;
// Uscite digitali
byte pinScatto = 6; // comando fotocamera
// soglia di comando dei canali radio
const unsigned long sogliaCH1a = 1700; // Soglia tra posizione 1 e 2
const unsigned long sogliaCH1b = 1200; // Soglia tra posizione 0 e 1
// variabili di appoggio
int valInterruttore = 0;
int valAzione = 0;
void setup()
{
// definisco i canai di input dalla radio
pinMode(pinCH1, INPUT); // canale x ricevente
}
void loop()
{
// leggo i canali radio
durationCH1 = pulseIn(pinCH1, HIGH);
// quì gestisco il valore letto.
// Quello che segue è solo un esempio di come si può fare
// in base allo stato dell'interruttore (ed eventualmente della sua storia)
// devi definire le azioni da fare
// impostando correttamente la variabile valAzione
valInterruttore = 0;
valAzione = 0; // nessun contatto
if (durationCH1>sogliaCH1b) {
valInterruttore = 1;
valAzione = 1; // contatto breve
};
if (durationCH1>sogliaCH1a) {
valInterruttore = 2;
valAzione = 2; // contatto lungo
};
switch (valInterruttore) {
case 0: // non faccio nulla
break;
case 1: // contatto breve
analogWrite(pinScatto, 255); //chiudo il contatto
delay(100); // aspetto 100 millisecondi
analogWrite(pinScatto, 255); // riapro il contatto
break;
case 2:
analogWrite(pinScatto, 255); //chiudo il contatto
delay(700); // aspetto 700 millisecondi
analogWrite(pinScatto, 255); // riapro il contatto
break;
// default:
// if nothing else matches, do the default
// default is optional
};
delay(100); //rallento il ciclo, aspettando 100 millisecondi tra una lettura e la successiva
}