Ciao a tutti...dopo una mattinata a studiare e dopo le partite del campionato, ho trovato un paio di orette per dedicarmi al programma.
Lo posto nettamente modificato rispetto a quello di ieri. Spero che ci siano meno errori!!! XD
#include <LiquidCrystal.h>
#include <Servo.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
Servo mioservo;
float tempC;
int sensore = A1;
int val = 0;
int vecchio_val = 0;
int stato = 0;
int valore;
int fascia;
int angolo = 0;
void setup() {
lcd.begin(16, 2);
pinMode(13, INPUT);
mioservo.attach(6);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
}
void loop() {
val = digitalRead(13);
if ((val == HIGH) && (vecchio_val == LOW)) {
stato = 1 - stato;
delay(15);
}
vecchio_val = val;
if (stato == 1) {
lcdLM35(), HIGH;
segnalatoriLM35(), HIGH;
}
else {
lcdLM35(), LOW;
segnalatoriLM35; LOW;
}
}
void lcdLM35() {
lcd.print( "Temperatura...");
tempC = analogRead(sensore);
tempC = (50. * tempC * 100.0)/1024.0;
lcd.setCursor(0, 1);
lcd.print(tempC);
lcd.print(" Celsius ");
delay(750);
lcd.clear();
}
void segnalatoriLM35() {
valore = analogRead(sensore);
fascia=map(valore, 0, 1024.0, 0, 3);
if(fascia == 0) fascia = 1;
spegni();
digitalWrite(11-fascia, HIGH);
}
void spegni() {
digitalWrite(10, LOW);
ledyellow(), LOW;
allarme(), LOW;
}
void ledyellow() {
digitalWrite(9, HIGH);
delay(1000);
digitalWrite(9, LOW);
delay(1000);
}
void allarme() {
ledred(), HIGH;
servo(), HIGH;
buzzer(), HIGH;
}
void ledred() {
digitalWrite(8, HIGH);
delay(500);
digitalWrite(8, LOW);
delay(500);
}
void servo()
{
for(angolo = 0; angolo < 180; angolo +=1)
{
mioservo.write(angolo);
delay(20);
}
for(angolo = 180; angolo >= 1; angolo -=1)
{
mioservo.write(angolo);
delay(20);
}
}
void buzzer() {
buzz(7, 1000, 500);
delay(400);
buzz(7, 2000, 500);
delay(400);
}
void buzz(int targetPin, long frequency, long length) {
long delayValue = 1000000/frequency/7;
long numCycles = frequency * length/ 1000;
for (long p=0; p < numCycles; p++) {
digitalWrite(targetPin, HIGH);
delayMicroseconds(delayValue);
digitalWrite(targetPin, LOW);
delayMicroseconds(delayValue);
}
}
Aspetto consigli, suggerimenti o correzioni!!!
Grazie in anticipo!!!