Boa noite
preciso de ajuda com
RTC.get(rtc,true);
dá o seguintes erro
botoes_31223.ino: In function 'void loop()':
botoes_31223:235: error: no matching function for call to 'DS1307RTC::get(int [7], int)'
C:\Users\Antonio\Documents\Arduino\libraries\DS1307RTC/DS1307RTC.h:17: note: candidates are: static time_t DS1307RTC::get()
#include <LiquidCrystal.h> //Inclui a biblioteca do LCD
#include <Wire.h>
#include <Time.h>
#include <DallasTemperature.h>
#include <OneWire.h>
#include <DS1307RTC.h>
#define ONE_WIRE_BUS 10
#define RELAY13 //pino do rele
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress insideThermometer = { 0x28, 0xDF, 0x63, 0x51, 0x05, 0x00, 0x00, 0xC3 };
// Pinos de comando dos botões do relógio
#define clockSet A0
#define clockUp 9
#define clockDown 8
//Estados de Clock
#define stClockRunning 0
#define stSetDay 1
#define stSetMonth 2
#define stSetYear 3
#define stSetHour 4
#define stSetMinute 5
#define stSetSecond 6
int pinorelay13 = 13;
int stat = stClockRunning;
int rtc[7];
int rele = 7;
int led = 13;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //configuração dos pinos do lcd
void Print(int number)
{
lcd.print(number/10);
lcd.print(number%10);
}
// Preenchimento do display LCD
void printTime()
{
lcd.setCursor(2,1); Print(hour());
lcd.print(":"); Print(minute());
lcd.print(":"); Print(second());
lcd.setCursor(3,0); Print(day());
lcd.print("/"); Print(month());
lcd.print("/"); Print(year());
lcd.setCursor(0,0);
lcd.noCursor(); // Cursor invisível
lcd.noBlink(); // Efeito blink desligado
if (stat != stClockRunning)
lcd.print("*");
else
lcd.print(" ");
simbolorelogio();
lcd.setCursor(0,1);
lcd.write(3);
switch(stat)
{
case stSetDay:
lcd.setCursor(1,0);
lcd.print("d ");
lcd.setCursor(4,0);
lcd.cursor(); // Cursor visível
lcd.blink(); // Cursor piscando
break;
case stSetMonth:
lcd.setCursor(1,0);
lcd.print("m ");
lcd.setCursor(7,0);
lcd.cursor(); // Cursor visível
lcd.blink(); // Cursor piscando
break;
case stSetYear:
lcd.setCursor(1,0);
lcd.print("a ");
lcd.setCursor(12,0);
lcd.cursor(); // Cursor visível
lcd.blink(); // Cursor piscando
break;
case stSetHour:
lcd.setCursor(1,0);
lcd.print("h ");
lcd.setCursor(3,1);
lcd.cursor(); // Cursor visível
lcd.blink(); // Cursor piscando
break;
case stSetMinute:
lcd.setCursor(1,0);
lcd.print("M ");
lcd.setCursor(6,1);
lcd.cursor(); // Cursor visível
lcd.blink(); // Cursor piscando
break;
case stSetSecond:
lcd.setCursor(1,0);
lcd.print("s ");
lcd.setCursor(9,1);
lcd.cursor(); // Cursor visível
lcd.blink(); // Cursor piscando
break;
}
}
// Lê pino usando limiar, como um interruptor, isto é,
// interruptor pressionado primeira vez liga, pela segunda vez desliga
int readPinSwitch(int pin, int threshold)
{
if (digitalRead(pin))
{
unsigned long tt = millis();
while (digitalRead(pin));
if ((millis() - tt) > threshold)
return 1;
else
return 0;
}
else
return 0;
}
//Lê pino usando limiar
int readPin(int pin, int threshold)
{
if (digitalRead(pin))
{
unsigned long tt = millis();
while ((digitalRead(pin) && (millis() - tt) <= threshold));
if (digitalRead(pin))
return 1;
else
return 0;
}
else
return 0;
}
// obter novo status, se houver
int getStat()
{
if (readPinSwitch(clockSet,300))
if (stat == stSetSecond)
return stClockRunning;
else
return stat+1;
else
return stat;
}
// definir Arduino e tempo do RTC
void setRTCTime(int hour, int minute, int second, int day, int month, int year)
{
// define tempo do Arduino
setTime(hour,minute,second,day,month,year);
time_t t = now();
// define tempo do RTC
RTC.set(t);
}
void simbolorelogio()
{
byte relogio[8] = {
B00000,
B01110,
B10101,
B10111,
B10001,
B01110,
B00000,
B00000};
lcd.createChar(3, relogio); // Cria o caractere personalizado de um relogio
}
void printTemperature(DeviceAddress deviceAddress)
{
float tempC = sensors.getTempC(deviceAddress);
if (tempC == -127.00) {
lcd.print("Error");
}
else
{
lcd.setCursor(11,1);
lcd.print(tempC);
lcd.print("");
}
}
void setup()
{
pinMode(rele, OUTPUT); //define o pino 10 como saída
pinMode(led, OUTPUT); //define o led (pino 13) do arduino como como saída
digitalWrite (rele, LOW); //desliga relé
digitalWrite(led, LOW); //desliga led
pinMode(pinorelay13, OUTPUT); //Define o pino como saida
sensors.begin();
sensors.setResolution(insideThermometer, 10);
// Start the I2C interface
Wire.begin();
// Start the serial interface
Serial.begin(9600);
lcd.begin(16, 2);
lcd.clear(); // start with a blank screen
pinMode(clockUp,INPUT); // configura os pinos dos botões como entrada
pinMode(clockDown,INPUT);
pinMode(clockSet,INPUT);
lcd.begin(16, 2); // Seta o display para 16 colunas and 2 linhas
setSyncProvider(RTC.get); // função para obter o tempo do RTC
if(timeStatus()!= timeSet) // verifica status do RTC e retorna erro
{
lcd.setCursor(0,0);
lcd.print("Erro do RTC:");
lcd.setCursor(0,1);
lcd.print("Ajuste o Relogio");
delay(3000);
lcd.clear();
}
}
int oldStat = stat;
unsigned long t=millis();
void loop()
{
RTC.get(rtc,true);
/*
Comando utilizado apenas pra ficar enviando via USB a hora atual
para que possam monitorar no "serial monitor" do simulador Arduino
e ver se esta tudo funcionando de acordo
*/
for(int i=0; i<7; i++)
{
Serial.print(rtc[i]); // print os vários valores
Serial.print(" ");
}
// ligar às 22:22:22
if (rtc[2] == 11 && rtc[1] == 50 && rtc[0] == 00) {
digitalWrite(rele, HIGH);
digitalWrite(led, HIGH);
}
// desligar às 11:11:11
if (rtc[2] == 11 && rtc[1] == 52 && rtc[0] == 00) {
digitalWrite(rele, LOW);
digitalWrite(led, LOW);
}
Serial.println();
/*
O codigo abaixo significa que, quando o RTC estiver no segundo 22,
ele irá acionar o relé e o led. Para utilizar o minuto como referencia,
alterar rtc[0] para rtc[1], e assim sussecivamente
*/
if (rtc[2] == 11 && rtc[1] == 11 && rtc[0] == 11) {
digitalWrite(rele, HIGH);
digitalWrite(led, HIGH);
}
delay(1000);
{
//Aciona o rele
digitalWrite(pinorelay13, HIGH);
delay(50); //Aguarda 2 Horas
//Desliga o rele
digitalWrite(pinorelay13, LOW);
delay(50); //Aguarda 5 segundos e reinicia o processo
sensors.requestTemperatures();
printTemperature(insideThermometer);
lcd.setCursor(17,1);
delay(04/33/20); //
//Desliga o rele
delay(04/36/20); //Aguarda 5 segundos
int value = 0;
printTime(); // rotina que imprime o tempo no lcd
delay(100);
stat=getStat();
if (stat != oldStat)
{
t=millis();
oldStat = stat;
}
else
if ((stat != stClockRunning) && ((millis() - t) > 30000)) //tempo em milisegundos que o ajuste do relógio ficará disponível para ser alterado
stat=stClockRunning;
switch(stat)
{
case stClockRunning:
break;
case stSetDay:
// inicializa value
value=day();
//si botao UP (para cima) for pressionado
while(readPin(clockUp,200))
{
value++;
if (value > 31)
value=1;
setRTCTime(hour(),minute(),second(),value,month(),year());
printTime();
}
//si botao DOWN (para baixo) for pressionado
while(readPin(clockDown,200))
{
value--;
if (value < 1)
value=31;
setRTCTime(hour(),minute(),second(),value,month(),year());
printTime();
}
break;
// ver comentários em stSetDay
case stSetMonth:
value=month();
while(readPin(clockUp,200))
{
value++;
if (value > 12)
value=1;
setRTCTime(hour(),minute(),second(),day(),value,year());
printTime();
}
while(readPin(clockDown,200))
{
value--;
if (value < 1)
value=12;
setRTCTime(hour(),minute(),second(),day(),value,year());
printTime();
}
break;
case stSetYear:
value=year();
while(readPin(clockUp,200))
{
value++;
if (value > 2050)
value=2000;
setRTCTime(hour(),minute(),second(),day(),month(),value);
printTime();
}
while(readPin(clockDown,200))
{
value--;
if (value < 2000)
value=2050;
setRTCTime(hour(),minute(),second(),day(),month(),value);
printTime();
}
break;
case stSetHour:
value=hour();
while(readPin(clockUp,200))
{
value++;
if (value > 23)
value=0;
setRTCTime(value,minute(),second(),day(),month(),year());
printTime();
}
while(readPin(clockDown,200))
{
value--;
if (value < 1)
value=24;
setRTCTime(value,minute(),second(),day(),month(),year());
printTime();
}
break;
case stSetMinute:
value=minute();
while(readPin(clockUp,200))
{
value++;
if (value > 59)
value=0;
setRTCTime(hour(),value,second(),day(),month(),year());
printTime();
}
while(readPin(clockDown,200))
{
value--;
if (value < 0)
value=59;
setRTCTime(hour(),value,second(),day(),month(),year());
printTime();
}
break;
case stSetSecond:
value=minute();
while(readPin(clockUp,200))
{
value++;
if (value > 59)
value=0;
setRTCTime(hour(),minute(),value,day(),month(),year());
printTime();
}
while(readPin(clockDown,200))
{
value--;
if (value < 0)
value=59;
setRTCTime(hour(),minute(),value,day(),month(),year());
printTime();
}
}
}
}