Allora ho messo dei delay in più adesso va un po meglio:
#include <DS1302.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
DS1302 rtc(2,3,4);
int canale1 =11;
int canale2 =10;
int canale3 =9;
int avanti =8;
int menu =7;
int piu =6;
int meno =5;
int ioc1 =0;
int ioc2 =0;
int ioc3 =0;
int imc1 =0;
int imc2 =0;
int imc3 =0;
int dc1 =0;
int dc2 =0;
int dc3 =0;
int v =0;
void setup()
{
//Inizializzazione rtc
rtc.halt(false);
rtc.writeProtect(false);
rtc.setDOW(MONDAY);
rtc.setTime(12, 0, 0);
rtc.setDate(12, 22, 2015);
//Inizializzazione lcd
lcd.init();
lcd.backlight();
//Impostazione input e output
pinMode(canale1, OUTPUT);
pinMode(canale2, OUTPUT);
pinMode(canale3, OUTPUT);
pinMode(avanti, INPUT_PULLUP);
pinMode(menu, INPUT_PULLUP);
pinMode(piu, INPUT_PULLUP);
pinMode(meno, INPUT_PULLUP);
digitalWrite(avanti, HIGH);
digitalWrite(menu, HIGH);
digitalWrite(piu, HIGH);
digitalWrite(meno, HIGH);
}
void loop()
{
while(digitalRead(menu) == LOW)
{
lcd.setCursor(0, 0);
lcd.print(" PLAFONIERA");
lcd.setCursor(0, 1);
lcd.print(" ARDUINO");
delay(100);
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("MENU'");
delay(750);
lcd.clear();
lcd.print("SETTAGGIO");
lcd.setCursor(0, 1);
lcd.print("CANALE 1");
delay (750);
lcd.clear();
while(digitalRead(avanti) == LOW)
{
lcd.setCursor(0, 0);
lcd.print("ORARIO INIZIO:");
lcd.setCursor(1, 1);
lcd.print(ioc1);
lcd.setCursor(3, 1);
lcd.print(":");
lcd.setCursor(4, 1);
lcd.print(imc1);
if(digitalRead(piu) == HIGH)
{
imc1++;
}
if(digitalRead(meno) == HIGH)
{
imc1--;
}
if(imc1 > 59)
{
if(ioc1 < 25)
{
ioc1++;
}
imc1 = 0;
}
delay(50);
}
lcd.clear();
while(digitalRead(avanti) == HIGH)
{
lcd.setCursor(0, 0);
lcd.print("SETTAGGIO DURATA");
lcd.setCursor(0, 1);
lcd.print(dc1);
if(digitalRead(piu) == HIGH)
{
dc1++;
}
if(digitalRead(meno) == HIGH)
{
dc1--;
}
if(dc1 > 25)
{
dc1 = 0;
}
if(dc1 < 0)
{
dc1 = 24;
}
delay(50);
}
lcd.clear();
lcd.print("CANALE 1 SETTATO");
lcd.setCursor(0, 1);
lcd.print("CORRETTAMENTE");
delay(750);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("SETTAGGIO");
lcd.setCursor(0, 1);
lcd.print("CANALE 2");
delay (750);
lcd.clear();
while(digitalRead(avanti) == LOW)
{
lcd.setCursor(0, 0);
lcd.print("ORARIO INIZIO:");
lcd.setCursor(0, 1);
lcd.print(ioc2);
lcd.setCursor(3, 0);
lcd.print(":");
lcd.setCursor(4, 0);
lcd.print(imc2);
if(digitalRead(piu) == HIGH)
{
imc2++;
}
if(digitalRead(meno) == HIGH)
{
imc2--;
}
if(imc2 > 59)
{
if(ioc2 < 25)
{
ioc2++;
}
imc2 = 0;
}
delay(50);
}
lcd.clear();
while(digitalRead(avanti) == LOW)
{
lcd.setCursor(0, 0);
lcd.print("SETTAGGIO DURATA");
lcd.setCursor(0, 1);
lcd.print(dc2);
if(digitalRead(piu) == HIGH)
{
dc2++;
}
if(digitalRead(meno) == HIGH)
{
dc2--;
}
if(dc2 > 25)
{
dc2 = 0;
}
if(dc2 < 0)
{
dc2 = 24;
}
delay(50);
}
lcd.clear();
lcd.print("CANALE 2 SETTATO");
lcd.setCursor(0, 1);
lcd.print("CORRETTAMENTE");
delay(750);
lcd.clear();
lcd.print("SETTAGGIO");
lcd.setCursor(0, 1);
lcd.print("CANALE 3");
delay(750);
lcd.clear();
while(digitalRead(avanti) == LOW)
{
lcd.setCursor(0, 0);
lcd.print("ORARIO INIZIO:");
lcd.setCursor(0, 1);
lcd.print(ioc3);
lcd.setCursor(3, 0);
lcd.print(":");
lcd.setCursor(4, 0);
lcd.print(imc3 );
if(digitalRead(piu) == HIGH)
{
imc3++;
}
if(digitalRead(meno) == HIGH)
{
imc3--;
}
if(imc3 > 59)
{
if(ioc3 < 25)
{
ioc3++;
}
imc3 = 0;
}
delay(50);
}
lcd.clear();
while(digitalRead(avanti) == LOW)
{
lcd.setCursor(0, 0);
lcd.print("SETTAGGIO DURATA");
lcd.setCursor(0, 1);
lcd.print(dc3);
if(digitalRead(piu) == HIGH)
{
dc3++;
}
if(digitalRead(meno) == HIGH)
{
dc3--;
}
if(dc3 > 25)
{
dc3 = 0;
}
if(dc3 < 0)
{
dc3 = 24;
}
delay(50);
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("CANALE 3 SETTATO");
lcd.setCursor(0, 1);
lcd.print("CORRETTAMENTE");
delay(750);
}
Ma difetta ancora appena premo il pulsante avanti cominciano a comparire tuute le scritte che ci sono nel codice e vengono fuori numeri negativi... :o :o :o un macello. Ma perchè??? serve una libreria per i pulsanti??? non penso... inoltre ho collegato i pulsanti direttamente dal gnd al piedino usando le resistenze di pullup interne... Non riesco a capire dove sbaglio
Aiutatemi
