Olá
Estou a iniciar uns projectos com o Arduino e um deles é um interruptor horário mas preciso de ajuda.
Devo salientar que sou mesmo iniciante nesta área, programação estou mesmo a começar na parte electrónica desenrasco-me "facilmente".
Já tenho um Tiny RTC já a funcionar (ainda deu alguma luta), com o seguinte código (atenção que o código não é da minha autoria, apenas fiz algumas alterações):
Código (C):
Como posso dizer ao arduino para no dia "D" na hora "H" no minutos "M" para colocar a saída X no estado 1 e vice versa?
solução que tenho em mente para Domino, as 12:10
adicionei esta linha no setup:
Código (C):
adicionei no final do código:
Código (C):
mas obtenho o seguinte erro:
Tiny_RTC_I2C_-_para_ih.ino: In function 'void show_time_and_date(DateTime)':
Tiny_RTC_I2C_-_para_ih.ino:81: error: lvalue required as left operand of assignment
Estou a iniciar uns projectos com o Arduino e um deles é um interruptor horário mas preciso de ajuda.
Devo salientar que sou mesmo iniciante nesta área, programação estou mesmo a começar na parte electrónica desenrasco-me "facilmente".
Já tenho um Tiny RTC já a funcionar (ainda deu alguma luta), com o seguinte código (atenção que o código não é da minha autoria, apenas fiz algumas alterações):
Código (C):
#include <Wire.h> // I2C-biblioteca
#include "RTClib.h" // RTC-biblioteca
RTC_DS1307 RTC; // RTC Modulo
void setup(void) { // configuraçoes gerais
Wire.begin();// Inicializar I2C
RTC.begin();// Inicializar RTC
Serial.begin(9600); // Comece saída Serial
Serial.println("Data e hora Com RTC_DS1307");// Apresentação
// Verifiqua se RTC esta funcionar
if (! RTC.isrunning()) {
RTC.adjust(DateTime(__DATE__ , __TIME__));// Definir data e hora atual, se o relógio não está funcionando.
Serial.println("Relogio em tempo real iniciado e configurado com a hora do PC.");
}
else Serial.println("Relogio em tempo real ja esta em execucao.");
}
void loop(){ // execução continua
DateTime now=RTC.now(); // Obter o horário do modulo
show_time_and_date(now); // Mostra a data e hora
delay(1000); // Aguarde 30 segundos até que a próxima edição
}
// Para Determinar o dia da semana
String get_day_of_week(uint8_t dow){
String dows=" ";
switch(dow){
case 0:dows="Domingo";
break;
case 1:dows="Segunda";
break;
case 2:dows=" Terca ";
break;
case 3:dows="Quarta ";
break;
case 4:dows="Quinta ";
break;
case 5:dows=" Sexta ";
break;
case 6:dows="Sabado ";
break;
}
return dows;
}
// Mostra a data e hora
void show_time_and_date(DateTime datetime){
// Dia de semana , Dia.Mês.Ano
Serial.print(get_day_of_week(datetime.dayOfWeek()));
Serial.print(", ");
if(datetime.day()<10)Serial.print(0);// se dia inferior a 10 coloca "0" antes do dia
Serial.print(datetime.day(),DEC);
Serial.print(".");
if(datetime.month()<10)Serial.print(0);
Serial.print(datetime.month(),DEC);
Serial.print(".");
Serial.print(datetime.year(),DEC);
Serial.print(" / ");
// Horas : minuto: segundo
if(datetime.hour()<10)Serial.print(0);
Serial.print(datetime.hour(),DEC);
Serial.print(":");
if(datetime.minute()<10)Serial.print(0);
Serial.print(datetime.minute(),DEC);
Serial.print(":");
if(datetime.second()<10)Serial.print(0);
Serial.println(datetime.second(),DEC);
}
#include "RTClib.h" // RTC-biblioteca
RTC_DS1307 RTC; // RTC Modulo
void setup(void) { // configuraçoes gerais
Wire.begin();// Inicializar I2C
RTC.begin();// Inicializar RTC
Serial.begin(9600); // Comece saída Serial
Serial.println("Data e hora Com RTC_DS1307");// Apresentação
// Verifiqua se RTC esta funcionar
if (! RTC.isrunning()) {
RTC.adjust(DateTime(__DATE__ , __TIME__));// Definir data e hora atual, se o relógio não está funcionando.
Serial.println("Relogio em tempo real iniciado e configurado com a hora do PC.");
}
else Serial.println("Relogio em tempo real ja esta em execucao.");
}
void loop(){ // execução continua
DateTime now=RTC.now(); // Obter o horário do modulo
show_time_and_date(now); // Mostra a data e hora
delay(1000); // Aguarde 30 segundos até que a próxima edição
}
// Para Determinar o dia da semana
String get_day_of_week(uint8_t dow){
String dows=" ";
switch(dow){
case 0:dows="Domingo";
break;
case 1:dows="Segunda";
break;
case 2:dows=" Terca ";
break;
case 3:dows="Quarta ";
break;
case 4:dows="Quinta ";
break;
case 5:dows=" Sexta ";
break;
case 6:dows="Sabado ";
break;
}
return dows;
}
// Mostra a data e hora
void show_time_and_date(DateTime datetime){
// Dia de semana , Dia.Mês.Ano
Serial.print(get_day_of_week(datetime.dayOfWeek()));
Serial.print(", ");
if(datetime.day()<10)Serial.print(0);// se dia inferior a 10 coloca "0" antes do dia
Serial.print(datetime.day(),DEC);
Serial.print(".");
if(datetime.month()<10)Serial.print(0);
Serial.print(datetime.month(),DEC);
Serial.print(".");
Serial.print(datetime.year(),DEC);
Serial.print(" / ");
// Horas : minuto: segundo
if(datetime.hour()<10)Serial.print(0);
Serial.print(datetime.hour(),DEC);
Serial.print(":");
if(datetime.minute()<10)Serial.print(0);
Serial.print(datetime.minute(),DEC);
Serial.print(":");
if(datetime.second()<10)Serial.print(0);
Serial.println(datetime.second(),DEC);
}
Como posso dizer ao arduino para no dia "D" na hora "H" no minutos "M" para colocar a saída X no estado 1 e vice versa?
solução que tenho em mente para Domino, as 12:10
adicionei esta linha no setup:
Código (C):
pinMode(13, OUTPUT);
adicionei no final do código:
Código (C):
if (datetime.dayOfWeek() = 1 && datetime.hour() >=12 && datetime.minute() >=10) digitalWrite(13, HIGH);
else (digitalWrite(13, LOW));
else (digitalWrite(13, LOW));
mas obtenho o seguinte erro:
Tiny_RTC_I2C_-_para_ih.ino: In function 'void show_time_and_date(DateTime)':
Tiny_RTC_I2C_-_para_ih.ino:81: error: lvalue required as left operand of assignment