lo sketch. Sicuramente sbaglio,
int alzadx = 6; // imposta il pin 2 alza tenda destra
int abbassadx = 3; // imposta il pin 3 abbassa tenda destra
int alzasx = 4; // imposta il pin 4 alza tenda sinistra
int abbassasx = 5; // imposta il pin 5 abbassa tenda sinistra
boolean statoingresso = false;
boolean statocucina = false;
boolean statopioggia = false;
const int sensorValueingresso = 100; //imposta il valore del sensore 970
const int sensorValuecucina = 108; // 1000
const int sensorValuepioggia = 600;
volatile int interrCount =0;
String readString;
//********************************************************************************************
//BLOCCO CONTROLLO VELOCITA' DEL VENTO
const float Pi = 3.141593; // Pigreco
const float raggio = 0.06; // raggio dell'anemometro in metri
const int reedPin = 2; // pin assegnato al contatto reed
int Statoreed = 0; // variabile per la lettura del contatto
int Statoreed_old = 0; // variabile per evitare doppio conteggio
int Conteggio = 0;// variabile che contiene il conteggio delle pulsazioni
unsigned long int TempoStart = 0; // memorizza i millisecondi dalla prima pulsazione conteggiata
unsigned long int Tempo = 0; // per conteggiare il tempo trascorso dalla prma pulsazione
unsigned long int TempoMax = 2000;// numero di millisecondi (2 seondi)
//per azzerare il conteggio e calcolare la Velocità
// così non si conteggiano brevi folate di vento
boolean statovento = false;
const int sensoreVento = 0.01;
void setup() {
Serial.begin(9600);
pinMode(reedPin, INPUT_PULLUP);// mette in ascolto del reed il pin 2 pinMode(alzadx, OUTPUT);
attachInterrupt(digitalPinToInterrupt(reedPin), CONTA, FALLING);
pinMode(abbassadx, OUTPUT);
digitalWrite(alzadx, HIGH);
digitalWrite(abbassadx, HIGH);
pinMode(alzasx, OUTPUT);
pinMode(abbassasx, OUTPUT);
digitalWrite(alzasx, HIGH);
digitalWrite(abbassasx, HIGH);
}
void CONTA(){
interrCount ++;}
void loop() {
//CONTROLLO VELOCITA'
if (interrCount == 3);{
Statoreed = digitalRead(reedPin); // legge il contatto reed
if (Statoreed != Statoreed_old){// si verifica se è cambiato
Statoreed_old = Statoreed; // se SI si aggiorna lo stato
if (Statoreed == HIGH){ // si controlla SE è alto ( passaggio magnete)
if (Conteggio == 0){ TempoStart = millis();} // se E' il primo passaggio si memorizza il tempo di partenza
Conteggio = Conteggio + 1; // si aggiorna il contatore
Tempo = ( millis() - TempoStart); // si conteggia il tempo trascorso dallo start conteggio
if (Tempo >= TempoMax) { // se il tempo trascorso è maggiore o uguale al tempo impostato si eseguono i calcoli e la stampa della velocità
float deltaTempo = ( Tempo/1000.0); // si trasforma in secondi
float Kmora = (3.6*Conteggio*Pi*raggio)/deltaTempo; //formula per il calcolo della velocità in Km/h
Serial.print("Velocità Km/h = ");
Serial.println(Kmora);
Conteggio = 0; // azzeriamo il conteggio per nuova lettura
delay(500);// attesa per altra lettura
/* if (Kmora > sensoreVento) {
if (statovento == false) {
delay(1000);
Serial.println("987789");
delay(1000);
digitalWrite(alzadx, LOW);
digitalWrite(alzasx, LOW);
delay(40000);//40000
digitalWrite(alzadx, HIGH);
digitalWrite(alzasx, HIGH);
statoingresso = true;
delay(4000);
}}
if (Kmora < sensoreVento){
statovento = false;
}*/}}}}
// CONTROLLA SE PIOVE ALZA TUTTE LE TENDE
int sensorepioggia = analogRead (A2);
Serial.println(sensorepioggia);
delay(1000);
if (sensorepioggia < sensorValuepioggia) {
if (statopioggia == false) {
delay(4000);
Serial.println("C987789");
delay(1000);
digitalWrite(alzadx, LOW);
digitalWrite(alzasx, LOW);
delay(40000);
digitalWrite(alzadx, HIGH);
digitalWrite(alzasx, HIGH);
statopioggia = true;
delay(4000);
}
}
if (sensorepioggia > sensorValuepioggia){
statopioggia = false;
}
// CONTROLLA LA LUMINOSITà ESTERNA SE è NOTTE ALZA LE TENDE INGRESSO
int sensoringresso = analogRead(A4); // A0
Serial.println(sensoringresso);
delay(4000);
if (sensoringresso < sensorValueingresso) {
if (statoingresso == false) {
delay(1000);
Serial.println("987789");
delay(1000);
digitalWrite(alzadx, LOW);
digitalWrite(alzasx, LOW);
delay(40000);//40000
digitalWrite(alzadx, HIGH);
digitalWrite(alzasx, HIGH);
statoingresso = true;
delay(4000);
}
}
if (sensoringresso > sensorValueingresso){
statoingresso = false;
}
// CONTROLLA LA LUMINOSITà ESTERNA SE è NOTTE ALZA LE TENDE CUCINA
if (sensoringresso < sensorValuecucina) {
if (statocucina == false) {
delay(1000);
Serial.println("987789");// questo numero è inviato al tablet in seriale che lo idendifica mandando il
// segnale alle tende in cucina di alzare
delay(1000);
statocucina = true;
delay(4000);
}
}
if (sensoringresso > sensorValuecucina){
statocucina = false;
}
while (Serial.available()) {
delay(3);
char c = Serial.read();
readString += c;
}
if (readString.length() >0) {
Serial.println(readString);
if (readString == "ALZATENDAINGRESSO")
{
digitalWrite(alzadx, LOW);
digitalWrite(alzasx, LOW);
delay(40000);//40000
digitalWrite(alzadx, HIGH);
digitalWrite(alzasx, HIGH);
}
// controlla la condizione se si possono abbassare le tende
if (readString == "ABBASSATENDAINGRESSO" && sensoringresso <= 990 ){//990 è il controllo che se le due condizioni sono vere
// abbassa le tende
delay(2000);
Serial.println("118");// codice in cui il tablet avvisa che le tende non si possono abbassare per scarsa luminosità
// esterna
}
if (readString == "ABBASSATENDAINGRESSO" && sensoringresso >= 995){//995
digitalWrite(abbassadx, LOW);
digitalWrite(abbassasx, LOW);
delay(40000);//40000
digitalWrite(abbassadx, HIGH);
digitalWrite(abbassasx, HIGH);
}
if (readString == "ALZATENDATUTTO"){
Serial.println("987789");
delay(2000);
digitalWrite(alzadx, LOW);
digitalWrite(alzasx, LOW);
delay(40000); //40000
digitalWrite(alzadx, HIGH);
digitalWrite(alzasx, HIGH);
}
if (readString == "ABBASSATENDATUTTO" && sensoringresso >= 1000 ){//1000
Serial.println("997997");
delay(2000);
digitalWrite(abbassadx, LOW);
digitalWrite(abbassasx, LOW);
delay(40000);//40000
digitalWrite(abbassadx, HIGH);
digitalWrite(abbassasx, HIGH);
}
if (readString == "ABBASSATENDATUTTO" && sensoringresso <= 1000 )//1000
{
Serial.println("119");
}
readString="";
}
}
error: 'digitalPinToInterrupt' cannot be used as a function