Ciao, sono alle prese con un problema strano..
Sto utilzzando l'IDE 0022, mi trovo con una funzione che riceve in ingresso ore e minuti di un ds1307, per un motivo, mi serve fare un controllo sui minuti in ingresso, ho creato quindi un if del genere:
//****************************************************
//****************************************************
void qlockTwoConverter(int ore, int minuti)
//****************************************************
//****************************************************
{
int meno = 0;
int piu = 0;
Serial.println("ecco i minuti");
Serial.print(minuti);
//inizializzo le variabili a 0
int newMinuti = 0;
int ledMinuti = 0;
int soglia = 34;
int prova = 10;
if (meno == 0)
{
Serial.println("Ciao meno = 0");
}
//****se i minuti sono > di 34. Es: 6:53*****\\\
if (prova > soglia)
{
meno = 1;
piu = 0;
Serial.println("ho settato meno a 1 e piu a 0");
}
meno = 0;
piu = 1;
...
nel codice potete vedere i vari tentativi che ho fatto, come ad esempio dichiarare una variabile prova che vale 10, e fare un controllo tipo:
if (prova > soglia)
{
.. le varie printf
}
insomma su terminale, mi viene stampato tutto quello che vedete, è come se il controllo dell'if risulta vero, cosa che non dovrebbe essere poichè 10 non è maggiore di 34! O.o
Qualcuno ha avuto un problema simile? Suggerimenti?
Ecco qui, intanto vado alla ricerca dell’errore anche io, perchè ho provato un nuovo sketch con un controllo semplice e funziona, quindi non è l’if che non va…xD:
//LIBRERIA INCLUSE
#include <Wprogram.h>
#include <Wire.h>
#include <DS1307.h>
//variabili per la data e l'ora
int anno; //variabile anno
int mese; //variabile mese
int giorno; //variabile giorno
int ore; //variabile ore
int minuti; //variabile minuti
int secondi; //variabile secondi
//*************************************************************
//*************************************************************
void setup()
//*************************************************************
//*************************************************************
{
Serial.begin(9600);
//Setto orologio
RTC.stop();
RTC.set(DS1307_HR, 11);
RTC.set(DS1307_MIN, 45);
RTC.start();
Serial.println("Orologio Avviato");
leggiOra();
}
//*************************************************************
//*************************************************************
void loop()
//*************************************************************
//*************************************************************
{
//Funzione che legge l'orario
leggiOra();
//Funzione che converte l'orario
qlockTwoConverter(ore, minuti);
delay(1000);
}
//*************************************************************
//*************************************************************
void leggiOra()
//*************************************************************
//*************************************************************
{
anno = RTC.get(DS1307_YR,true);
mese = RTC.get(DS1307_MTH,false);
giorno = RTC.get(DS1307_DATE,false);
ore = RTC.get(DS1307_HR,false);
minuti = RTC.get(DS1307_MIN,false);
secondi = RTC.get(DS1307_SEC,false);
}
//****************************************************
//****************************************************
void qlockTwoConverter(int ore, int minuti)
//****************************************************
//****************************************************
{
int meno = 0;
int piu = 0;
int prova = 30;
Serial.print("ecco i minuti: ");
Serial.print(minuti);
//inizializzo le variabili a 0
int newMinuti = 0;
int ledMinuti = 0;
int soglia = 34;
//****se i minuti sono > di 34. Es: 6:53*****\\\
if (prova > soglia)
{
Serial.println("se esci sei un coglione");
}
meno = 0;
piu = 1;
Serial.println("ho settato meno a 0 e piu a 1");
/*
//****se i minuti sono < di 34. Es: 6:23*****\\\
if (minuti < 34)
{
piu = 1;
meno = 0;
}*/
if(meno == 1)
{
piu = !piu;
Serial.println("Sono in meno qui dentro");
ore = ore+1;
minuti = 60 - minuti;
//se i minuti sono meno di 10
if(minuti < 10)
{
newMinuti = 5;
ledMinuti = minuti - newMinuti;
}
//se i minuti sono più di 10
if(minuti > 10)
{
ledMinuti = minuti % 10;
//se i led accesi corrispondono a 5 allora saranno = a zero
if(ledMinuti == 5)
{
ledMinuti = 0;
}
newMinuti = minuti - ledMinuti;
}
}
else if(piu == 1)
{
meno = !meno;
ore = ore;
Serial.println("Sono in + qui dentro");
ledMinuti = minuti % 10;
//se i led accesi corrispondono a 5 allora saranno = a zero
if(ledMinuti == 5)
{
ledMinuti = 0;
}
newMinuti = minuti - ledMinuti;
}
//qui controlo se accendere "è" oppure "sono le"
if (ore==1)
{
//accendi "è"
Serial.print("E' ");
}
if(ore > 1)
{
//accendi "sono le"
Serial.print("Sono le ");
}
//switch-case dell ore;
switch(ore) {
case 1:
//accendi "l'una"
Serial.print("l'una");
break;
case 2:
//accendi "due"
Serial.print("due");
break;
case 3:
//accendi "tre"
Serial.print("tre");
break;
case 4:
//accendi "quattro"
Serial.print("quattro");
break;
case 5:
//accendi "cinquee"
Serial.print("cinque");
break;
case 6:
//accendi "sei"
Serial.print("sei");
break;
case 7:
//accendi "sette"
Serial.print("sette");
break;
case 8:
//accendi "otto"
Serial.print("otto");
break;
case 9:
//accendi "nove"
Serial.print("nove");
break;
case 10:
//accendi "dieci"
Serial.print("dieci");
break;
case 11:
//accendi "undici"
Serial.print("undici");
break;
case 12:
//accendi "dodici"
Serial.print("dodici");
break;
}
//ora controllo se devo accendere la scritta "e" oppure "meno"
if(piu)
{
//accendi "e"
Serial.print(" e ");
}
else
{
//accendi "meno"
Serial.print(" meno ");
}
//ora effettuo lo switch dei minuti
switch(newMinuti) {
case 5:
//accendi "cinque"
Serial.print("cinque");
break;
case 10:
//accendi "dieci"
Serial.print("dieci");
break;
case 15:
//accendi "un quarto"!
Serial.print("un quarto");
break;
case 20:
//accendi "venti"
Serial.print("venti");
break;
case 25:
//accendi "venticinque"
Serial.print("venticinque");
break;
case 30:
//accendi "mezza"
Serial.print("mezza");
break;
}
Serial.print(" + ");
//ora effettuo lo switch dei led da accendere
switch(ledMinuti) {
case 0:
//non accendo neanche un led
Serial.print("zero led accesi");
break;
case 1:
//accendo 1 led
Serial.print("1 Led acceso");
break;
case 2:
//accendo 2 led
Serial.print("2 Led accesi");
break;
case 3:
//accendo 3 led
Serial.print("3 Led accesi");
break;
case 4:
//accendo 4 led
Serial.print("4 Led accesi");
break;
}
Serial.println();
}