Provo ad mettere le 3 parti del programma dove deve funzionare il servomotore
#define butUp 12 //pulsante SU al pin 12
#define butDown 11 //Pulsante GIU al pin 11
#define butP 10 //Pulsante SELECT al pin 10
#define butM 1 //non utilizzato in questo esempio
#define LampRed 2 //LED Rosso al pin 2 (Botola chiusa)
#define LampRed2 3 //LED Rosso al pin 3 (Sensore Gas ON)
#define LampRed3 4 //LED Rosso al pin 4 (Allarme)
#define LampGreen 5 //LED Verde al pin 5 (On Arduino)
#define LampGreen2 14 //LED Verde al pin 14 (Termostato ON)
#define LampGreen3 15 //LED Verde al pin 15 (Sensore Fiamma ON)
#define LampGreen4 16 //LED Verde al pin 16 (Botola aperta)
#define LampRele 6 //Relè al pin 6 VENTOLA
#define LampRele2 7 //Relè al pin 7 CICALINO
#define LampRele3 8 //Relè al pin 8
#define PhotoSensor A0 // sensore temperatura al pin analogico A0 (interno)
#define PhotoSensor A1 // sensore temperatura al pin analogico A1 (esterno)
#define PhotoSensor A2 // sensore temperatura al pin analogico A2 (sotto tetto )
#define sensorefiamma A0 PIN A7 //Mega 2560 A0 (Analogico) va collegato al Pin A7
#define sensorefiamma D0 PIN 23 //Mega 2560 D0 (Digitale) va collegato al Pin 78
#define BUZZER 22 //Buzzer al pin 22
#define randomWalkLowRange -20
#define randomWalkHighRange 20
//DISPLAY Mappa Hardware
#include <Servo.h>
#include <OneWire.h>
#include <Wire.h> // libreria wire presente, di fault, nell'IDE
#include <LiquidCrystal_I2C.h> // libreria di gestione del display lcd
#include <Time.h>
#include <TimeLib.h>
#include <DS3232RTC.h>
//Parte servo
Servo myservo;
int pos = 0;
//const int pinServo = 9;
//Parte Sensore Gas
const int buzzerPin = 22;
const int lampRed2 = 3;
const int sensorPin4 = A6;
const int intervallo_base = 200;
int sensorValue4 = 0;
int sensorAlertMinValue = 40;//Valore minimo di allarme
int LampRed2Value = 0;
bool buzzerTone = 0;
unsigned long currentMillis = 0;
unsigned long previousMillis = 0;
//Parte Sensore fiamma
int flame_din = 23;
int flame_ain = A7;
int ad_value;
int rel = 7; //relè
int max = 20;
byte BotolaApertaChar[] = {
B00010,
B00100,
B01000,
B10000,
B11111,
B10001,
B10001,
B11111
};
byte BotolaChiusaChar[] = {
B00000,
B00000,
B00000,
B11111,
B11111,
B10001,
B10001,
B11111
};
//Parte Ohm meter (Resistenze)
int analogPin5 = A9; // Pin Analogico A9
int raw = 0;
int Vin = 5; // Volt in uscita dal Pin 5V di Arduino
float Vout = 0;
float R1 = 1000; // impostare il valore della resistenza nota in Ohm
float R2 = 0;
float buffer = 0;
byte customChar[] = {
B00000,
B00000,
B01110,
B10001,
B10001,
B10001,
B01010,
B11011
};
//Parte Volt-metro da 0 a 30V
int analogInputA8 = A8;
int analogInputA10 = A10;
int analogInputA11 = A11;
float vout = 0.0;
float vin = 0.0;
float R10 = 100000.0; // inserire valore esatto resistenza R10 (100K)
float R11 = 10000.0; // inserire valore esatto resistenza R11 (10K)
int value = 0;
//int stepsize;
int i; // definisce la variabile “i” utilizzata in un ciclo di for
int valore; //dichiaro la variabile valore che memorizzerà il valore dato dal convertitore analogico-digitale
int thisTime;
int total;
//Funzioni dei vari cicli
void changeMenu();
void dispMenu();
void mostraMsg();
void controlLed();
void controlLed2();
void controlRele();
void temperatura();
void temperatura2();
void temperatura3();
void controlRele2();
void controlBotola();
void ora_data();
void TestBattRTC();
void controlGas();
void controlFiamma();
void TestResistenze();
void TestTensione();
void Servomotori();
//Variabili globali
char menu = 0x01;
char set1 = 0x00, set2 = 0x00 , set3 = 0x00;
boolean t_butUp, t_butDown, t_butP, t_butM;
int relay = 7;
int relay2 = 6;
int relay3 = 8;
int sensorValue = 0;
int reading = 0;
int sensorPin = A0;
int sensorValue2 = 0;
int reading2 = 0;
int sensorPin2 = A1;
int sensorValue3 = 0;
int reading3 = 0;
int sensorPin3 = A2;
//int angle = 0;
const float baseline_Temp = 22; //Impostazione Temperatura confort
//const int setpin = 4; ///////////////////
//boolean statepin = 0;
//const int servoMin = 0; ////////////////////
//const int servoMax = 180; ///////////////////
LiquidCrystal_I2C lcd(0x3f, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // definisce la tipologia del display
//RTC DS3231
time_t t;
tmElements_t tm;
float temperaturaRTC = 0;
float temp4 = 0;
int digits = 0;
char tabmesi [37] = "GenFebMarAprMagGiuLugAgoSetOttNovDic";
int mese = 0;
int lavoro = 0;
void esponidati(void)
{
lcd.clear();
lcd.print(" ");
lcd.print(day());
lcd.print(' ');
mese = month();
mese = mese - 1;
lcd.print (tabmesi [(mese * 3)]);
lcd.print (tabmesi [(mese * 3 + 1)]);
lcd.print (tabmesi [(mese * 3 + 2)]);
lcd.print (' ');
lcd.print (year());
lcd.setCursor(0, 1);
lcd.print(hour());
digits = (minute());
printDigits();
digits = (second());
printDigits();
lcd.print (" t:");
lcd.print (temp4);
}
void printDigits()
{
lcd.print(':');
if (digits < 10)
lcd.print('0');
lcd.print(digits);
}
void allarme_sonoro() { //applicazione sonora
tone(BUZZER, 2000); //Tono buzzer
}
void setup() {
myservo.attach(9); // attaches servo al pin 9
{
Serial.begin (9600);
lcd.begin(16, 2);
lcd.backlight();
lcd.print (" Buongiorno");
delay (1500);
lcd.createChar(0, DomenicoChar);
lcd.setCursor(4, 1); //posizionamento (colonna,riga)
lcd.write((uint8_t)0);
lcd.setCursor(5, 1);
lcd.print("omenico");
delay (2000);
//Setup RTC DS3231
lcd.clear ();
setSyncProvider(RTC.get);
lcd.clear ();
if (timeStatus() != timeSet)
lcd.print (" orologio non");
else
lcd.print(" orologio");
lcd.setCursor (0, 1);
lcd.print (" sincronizzato");
delay (1500);
temperaturaRTC = RTC.temperature();
}
//Setup sensore fiamma
{
lcd.begin(16, 2);
pinMode(analogInputA8, INPUT);
pinMode(flame_din, INPUT);
pinMode(15, OUTPUT);
pinMode(22, OUTPUT);
pinMode(flame_ain, INPUT);
pinMode (BUZZER, OUTPUT);
pinMode(rel, OUTPUT); //relè
digitalWrite(rel, LOW); //relè 2
}
lcd.begin(16, 2);
for (char i = 9; i < 13; i++) { //Ingresso dei pulsanti
pinMode(i, INPUT_PULLUP);
}
pinMode(22, OUTPUT); //Buzzer (orig.PIN3)
pinMode(4, OUTPUT); //Led Allarme (Rosso)
pinMode(LampRed, OUTPUT); //LED ROSSO (Botola Aperta)
pinMode(LampRed2, OUTPUT); //LED ROSSO (Gas)
pinMode(LampRed3, OUTPUT); //LED ROSSO (Allarm)
pinMode(LampGreen, OUTPUT); //LED VERDE (On)
pinMode(LampGreen2, OUTPUT); //LED VERDE (Termostato)
pinMode(LampGreen3, OUTPUT); //LED VERDE (Fiamma)
pinMode(LampGreen4, OUTPUT); //LED VERDE (Botola Chiusa)
pinMode(LampRele, OUTPUT); //RELÃ 1ˆ
pinMode(relay, OUTPUT); //rele' 1 per ventola
pinMode(buzzerPin, OUTPUT); //Buzzer Pin
digitalWrite (LampRele, LOW); //Imposto inizialmente il relè allo stato basso (LOW-Disattivo)
//digitalWrite (4, HIGH);
//Wire.begin();
t_butUp = 0x00; //Inizializza le variabili come ZERO
t_butDown = 0x00;
t_butP = 0x00;
t_butM = 0x00;
}