Prometo que antes de consultar esto he buscado pero no me aclaro con lo que he encontrado. ![]()
He configurado un Arduino Nano con un RTC DS1307 para temporizar dos alimentadores automáticos de un Acuario, que se encienden 4 veces al día.
Funcionan con 3.3v, les he colocado a cada uno un reductor de voltaje (AMS1117) de manera de hacerlos funcionar con los 5v de las salidas del Arduino.
Este el el sketch:
#include <Wire.h>
#include <DS1307new.h>
uint16_t startAddr = 0x0000; // Start address to store in the NV-RAM
uint16_t lastAddr; // new address for storing in NV-RAM
uint16_t TimeIsSet = 0xaa55; // Helper that time must not set again
byte AlimentadorA=2;
byte GatilloA=4;
byte AlimentadorB=6;
byte GatilloB=8;
void setup()
{
ConfiguraRTC();
pinMode(AlimentadorA, OUTPUT);
pinMode(GatilloA, OUTPUT);
pinMode(AlimentadorB, OUTPUT);
pinMode(GatilloB, OUTPUT);
AlimentadorA = LOW;
AlimentadorB = LOW;
GatilloA = LOW;
GatilloB = LOW;
}
void loop()
{
VerHoraDS1307();
if ((RTC.hour==12||RTC.hour==14||RTC.hour==16||RTC.hour==18) && (RTC.minute<6))
{digitalWrite(AlimentadorA, HIGH);}
else
{digitalWrite(AlimentadorA= LOW);}
if ((RTC.hour==12||RTC.hour==14||RTC.hour==16||RTC.hour==18) && (RTC.minute==0) && (RTC.second<10))
{digitalWrite(GatilloA= HIGH);}
else
{digitalWrite(GatilloA= LOW);}
}
void VerHoraDS1307()
{
RTC.getTime();
if (RTC.hour < 10) // correct hour if necessary
{Serial.print("0"); Serial.print(RTC.hour, DEC);}
else
{Serial.print(RTC.hour, DEC); }
Serial.print(":");
if (RTC.minute < 10) // correct minute if necessary
{Serial.print("0");
Serial.print(RTC.minute, DEC); }
else
{Serial.print(RTC.minute, DEC); }
Serial.print(":");
if (RTC.second < 10) // correct second if necessary
{Serial.print("0"); Serial.print(RTC.second, DEC); }
else
{Serial.print(RTC.second, DEC);}
Serial.print(" ");
if (RTC.day < 10) // correct date if necessary
{Serial.print("0"); Serial.print(RTC.day, DEC);}
else
{Serial.print(RTC.day, DEC); }
Serial.print("-");
if (RTC.month < 10) // correct month if necessary
{Serial.print("0"); Serial.print(RTC.month, DEC); }
else
{Serial.print(RTC.month, DEC);}
Serial.print("-");
Serial.print(RTC.year, DEC); // Year need not to be changed
Serial.println(" ");
delay(1000); // wait a second
}
void ConfiguraRTC()
{
Serial.begin(9600);
RTC.setRAM(0, (uint8_t *)&startAddr, sizeof(uint16_t));// Store startAddr in NV-RAM address 0x08
/* Uncomment the next 2 lines if you want to SET the clock
Comment them out if the clock is set.
DON'T ASK ME WHY: YOU MUST UPLOAD THE CODE TWICE TO LET HIM WORK
AFTER SETTING THE CLOCK ONCE.
//TimeIsSet = 0xffff;
//RTC.setRAM(54, (uint8_t *)&TimeIsSet, sizeof(uint16_t));*/
RTC.getRAM(54, (uint8_t *)&TimeIsSet, sizeof(uint16_t));
if (TimeIsSet != 0xaa55)
{ RTC.stopClock();
RTC.fillByYMD(2017,4,30);
RTC.fillByHMS(13,0,0);
RTC.setTime();
TimeIsSet = 0xaa55;
RTC.setRAM(54, (uint8_t *)&TimeIsSet, sizeof(uint16_t));
RTC.startClock(); }
else
{ RTC.getTime(); }
}
Pero al compilar me aparece el siguiente error:
Arduino:1.8.1 (Windows 7), Tarjeta:"Arduino Nano, ATmega328"
C:\Users\Lunita\Documents\Arduino\libraries\Prueba_DS1307\Prueba_DS1307.ino\Prueba_DS1307.ino.ino: In function 'void loop()':
Prueba_DS1307.ino:32: error: too few arguments to function 'void digitalWrite(uint8_t, uint8_t)'
{digitalWrite(AlimentadorA= LOW);}
^
In file included from sketch\Prueba_DS1307.ino.ino.cpp:1:0:
C:\Users\Lunita\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\cores\arduino/Arduino.h:134:6: note: declared here
void digitalWrite(uint8_t, uint8_t);
^
Prueba_DS1307.ino:34: error: too few arguments to function 'void digitalWrite(uint8_t, uint8_t)'
{digitalWrite(GatilloA= HIGH);}
^
In file included from sketch\Prueba_DS1307.ino.ino.cpp:1:0:
C:\Users\Lunita\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\cores\arduino/Arduino.h:134:6: note: declared here
void digitalWrite(uint8_t, uint8_t);
^
Prueba_DS1307.ino:36: error: too few arguments to function 'void digitalWrite(uint8_t, uint8_t)'
{digitalWrite(GatilloA= LOW);}
^
In file included from sketch\Prueba_DS1307.ino.ino.cpp:1:0:
C:\Users\Lunita\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\cores\arduino/Arduino.h:134:6: note: declared here
void digitalWrite(uint8_t, uint8_t);
^
Se encontraron múltiples librerías para "Wire.h"
Usado: C:\Users\Lunita\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\libraries\Wire
No usado: C:\Program Files (x86)\Arduino\libraries\Wire
Se encontraron múltiples librerías para "DS1307new.h"
Usado: C:\Program Files (x86)\Arduino\libraries\ds1307new-master
No usado: C:\Program Files (x86)\Arduino\libraries\ds1307
Se encontraron múltiples librerías para "OneWire.h"
Usado: C:\Users\Lunita\Documents\Arduino\Libraries\libraries\OneWire
No usado: C:\Program Files (x86)\Arduino\libraries\OneWire
exit status 1
too few arguments to function 'void digitalWrite(uint8_t, uint8_t)'
Este reporte podría tener más información con
"Mostrar salida detallada durante la compilación"
opción habilitada en Archivo -> Preferencias.