L’innalzamento e l’abbassamento della tenda è ottenuto
tramite pulsanti fisici inoltre se la tenda è del tutto abbassata e si preme il
pulsante per abbassarla, il programma non farà nulla; lo stesso avviene per la
tenda del tutto avvolta.Sono presenti due
sensori: un anemometro, che permette alla centralina di determinare la velocità
del vento, e un pluviostato, speciale trasduttore che riesce a determinare se
sta piovendo oppure no grazie al variare
della sua resistenza. Questi due sensori tengono sotto controllo le condizioni
ambientali esterne, non appena uno dei due rileva un valore che supera quello prefissato nel
programma la tenda viene riavvolta automaticamente per evitare danni.
Programma Arduino
const int
btSuTenda = 5;
const
int SuTendaPin = 22;
int
StTSu = 0;
const
int btGiuTenda = 6;
const
int GiuTendaPin = 52;
int
StTGiu = 0;
int
StTenda = 0;
void
setup()
{
pinMode (btSuTenda,
INPUT);
pinMode
(btGiuTenda, INPUT);
pinMode
(SuTendaPin, OUTPUT);
pinMode
(GiuTendaPin, OUTPUT);
pinMode
(pluvPin, INPUT);
pinMode
(AnPin, INPUT);
}
void
loop()
{
ce = 0;
t = millis();
for (se = 0; se < 10000; se++) {
state
= digitalRead(AnPin);
if
(state != oldstate) {
ce++;
oldstate = state;
}
}
t = millis() - t;
ce = ce / 2;
f = 1000 * ce / t;
Questo ciclo for all'interno del programma rappresenta il contatore della frequenza di un treno di impulsi (segnali ottenuti dal pluviostato) in ingresso in una entrata digitale. Quest'azione viene ripetuta sempre durando 10000 cicli. Durante questo tempo il programma conta gli impulsi in ingresso e tramite opportuni calcoli matematici li trasforma in frequenza.
StTGiu = digitalRead(btGiuTenda);
StTSu = digitalRead (btSuTenda);
if ((StTGiu == HIGH)
&& (StTenda == 0)) {
digitalWrite(GiuTendaPin,
HIGH);
delay(9500);
digitalWrite(GiuTendaPin, LOW);
StTenda = 1;
delay(50);
}
Parte di programma che abbassa la tenda non appena si pigia il pulsante, L'azione viene completata solamente se la tenda è alzata (stato definito dalla variabile StTenda, variabile a 0 la tenda è alzata mentre se la variabile è a 1 la tenda è abbassata).
Parte di programma che abbassa la tenda non appena si pigia il pulsante, L'azione viene completata solamente se la tenda è alzata (stato definito dalla variabile StTenda, variabile a 0 la tenda è alzata mentre se la variabile è a 1 la tenda è abbassata).
if
((StTSu == HIGH) && (StTenda == 1))
{
digitalWrite(SuTendaPin,
HIGH);
delay(9500);
digitalWrite(SuTendaPin,
LOW);
StTenda = 0;
}
Parte di programma che alza la tenda non appena si pigia il pulsante, L'azione viene completata solamente se la tenda è abbassata (stato definito dalla variabile StTenda, variabile a 0 la tenda è alzata mentre se la variabile è a 1 la tenda è abbassata).
Parte di programma che alza la tenda non appena si pigia il pulsante, L'azione viene completata solamente se la tenda è abbassata (stato definito dalla variabile StTenda, variabile a 0 la tenda è alzata mentre se la variabile è a 1 la tenda è abbassata).
if
((StTenda == 1) && ((analogRead(pluvPin)
< 500) || (f >= 4))) {
digitalWrite(SuTendaPin, HIGH);
delay(9500);
digitalWrite(SuTendaPin, LOW);
StTenda = 0;
}
}
Parte in cui se il programma riconosce che la tenda è abbassata e se la lettura del pluviostato è al di sotto di un determinato valore (fissato da noi per far riconoscere al programma che sta piovendo) oppure se la frequenza in ingresso dall'anemometro è troppo alta la centralina alzerà automaticamente la tenda per evitare danni.
Parte in cui se il programma riconosce che la tenda è abbassata e se la lettura del pluviostato è al di sotto di un determinato valore (fissato da noi per far riconoscere al programma che sta piovendo) oppure se la frequenza in ingresso dall'anemometro è troppo alta la centralina alzerà automaticamente la tenda per evitare danni.
Nessun commento:
Posta un commento