Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
h>
#include <Wire.h>
#include <hd44780.h>
#include <hd44780ioClass/hd44780_I2Cexp.h> // i2c expander i/o class header
#include <Servo.h>
//Volume vol;
hd44780_I2Cexp lcd;
int servo1 = 7;
//int servo2 = 6;
//int servo3 = 5;
//int servo4 = 4;
Servo servo_1;
//Servo servo_2;
//Servo servo_3;
//Servo servo_4;
int pos1 = 0;
int pos2 = 0;
int pos3 = 0;
int pos4 = 0;
//int seconds = 0;
int fermaSuono = 0;
int ore = 2;
int minuti = 59;
int secondi = 50;
boolean movimentoAvanti = false;
int passiAvanti = 0;
void setup()
{
Serial.begin(9600);
pinMode(pulsanteOre, INPUT);
pinMode(pulsanteMinuti, INPUT);
pinMode(pulsanteTimer, INPUT);
servo_1.attach(servo1);
//servo_2.attach(servo2);
//servo_3.attach(servo3);
//servo_4.attach(servo4);
pinMode(ledPin, OUTPUT);
//vol.begin();
if (result) {
Serial.print("LCD initialization failed: ");
Serial.println(result);
hd44780::fatalError(result);
}
stampaOra();
backward1();
}
void loop()
{
secondi += 1;
calcolaOra();
stampaOra();
azionaSuono();
//fermaMotore();
spegniTutto();
Serial.println("attendo");
delay(1500);
Serial.println("fine attesa");
if(buttonStateOre == LOW){
ore += 1;
}
if(buttonStateMinuti == LOW){
minuti += 10;
}
attivaSveglia();
if(timer == true){
lcd.setCursor(0, 1);
lcd.print("SVEGLIA");
ledState = HIGH;
digitalWrite(ledPin, ledState);
}else{
lcd.setCursor(0, 1);
lcd.print("OFF");
}
}
void azionaSuono(){
Serial.println("azionaSuono");
Serial.println("azionato");
fermaSuono+= 1;
}
if(fermaSuono%5 == 0){
noTone(buzzerPin);
Serial.println("fermato");
fermaSuono = 0;
}
if(suona){
conteggioSuono += 1;
}
/*void fermaMotore(){
if(passiAvanti == 2){
stop();
movimentoAvanti = false;
passiAvanti = 0;
}
if(passiIndietro == 2){
stop();
movimentoIndietro = false;
passiIndietro = 0;
}
if(movimentoAvanti){
passiAvanti += 1;
}
if(movimentoIndietro){
passiIndietro += 1;
}
}*/
void spegniTutto(){
Serial.println("spegniTutto");
if(buttonStateTimer == LOW){
Serial.println("spengo");
lcd.clear();
timer = false;
ledState = LOW;
if(pos1>0){
backward1();
}
if(pos2>0){
backward2();
}
if(pos3>0){
backward3();
}
if(pos4>0){
backward4();
}
movimentoIndietro = true;
suona = false;
conteggioSuono = 0;
digitalWrite(ledPin, ledState);
void attivaSveglia(){
Serial.println("attivaSveglia");
timer = true;
forward1();
movimentoAvanti = true;
suona = true;
}
}
void stampaOra(){
Serial.println("stampaOra");
if(secondi == 60){
lcd.clear();
}
lcd.setCursor(0, 0);
lcd.print(oreS+":"+minutiS+":"+secondiS);
void calcolaOra(){
Serial.println("calcolaOra");
void forward1()
{
for (pos1 = 0; pos1 <= 180; pos1 += 1) {
// tell servo to go to position in variable 'pos'
servo_1.write(pos1);
// wait 15 ms for servo to reach the position
delay(15); // Wait for 15 millisecond(s)
}
secondi += 2;
}
void forward2()
{
pos2 = 180;
//servo_2.write(pos2);
secondi += 2;
}
void forward3()
{
pos3 = 180;
//servo_3.write(pos3);
secondi += 2;
}
void forward4()
{
pos4 = 180;
//servo_4.write(pos4);
secondi += 2;
}
void backward1()//
{
for (pos1 = 180; pos1 >= 90; pos1 -= 1) {
// tell servo to go to position in variable 'pos'
servo_1.write(pos1);
// wait 15 ms for servo to reach the position
delay(15); // Wait for 15 millisecond(s)
}
secondi += 2;
}
void backward2()//
{
pos2 = 0;
//servo_2.write(pos2);
secondi += 2;
}
void backward3()//
{
pos3 = 0;
//servo_3.write(pos3);
secondi += 2;
}
void backward4()//
{
pos4 = 0;
//servo_4.write(pos4);
secondi += 2;
}
/*void stop()//
{
digitalWrite(enablePin12,LOW);// Unenble the pin, to stop the motor. this
should be done to avid damaging the motor.
digitalWrite(enablePin34,LOW);// Unenble the pin, to stop the motor. this
should be done to avid damaging the motor.
digitalWrite(enablePin56,LOW);// Unenble the pin, to stop the motor. this
should be done to avid damaging the motor.
digitalWrite(enablePin78,LOW);// Unenble the pin, to stop the motor. this
should be done to avid damaging the motor.
}*/