Hola, buenos dias.
Este es mi primer mensaje (no vi que hubiera presentaciones), estoy aprendiendo Arduino y despues de unos sketch e pruebas, etc… me he decidido a crear un control de una caravana con una pantalla nextion.
El caso es que no soy capaz de enviarle la hora a un campo de texto de la pantalla. Si que lo puedo leer en el erial pero no envairlo.
Disculpad si el codigo no es muy legible, para mi es bastante complicado ya que llevo muy poco con esto.
#include <doxygen.h>
#include <NexButton.h>
#include <NexCheckbox.h>
#include <NexConfig.h>
#include <NexCrop.h>
#include <NexDualStateButton.h>
#include <NexGauge.h>
#include <NexGpio.h>
#include <NexHardware.h>
#include <NexHotspot.h>
#include <NexNumber.h>
#include <NexObject.h>
#include <NexPage.h>
#include <NexPicture.h>
#include <NexProgressBar.h>
#include <NexRadio.h>
#include <NexRtc.h>
#include <NexScrolltext.h>
#include <NexSlider.h>
#include <NexText.h>
#include <NexTimer.h>
#include <Nextion.h>
#include <NexTouch.h>
#include <NexUpload.h>
#include <NexVariable.h>
#include <NexWaveform.h>
#include <Wire.h>
#include "ABlocks_DS3231rtc.h"
#define DS3231_I2C_ADDRESS 0x68
DS3231rtc rtc; //creamos objeto
String rtc_time_text(){
char rtcbuffer[10];
sprintf(rtcbuffer,"%02d:%02d:%02d", rtc.getHour(), rtc.getMinute(), rtc.getSecond() ); //Consultamos la hora
return String(rtcbuffer);
}
String rtc_date_text(){
char rtcbuffer[12];
sprintf(rtcbuffer,"%02d/%02d/%04d", rtc.getDay(), rtc.getMonth(), (2000+rtc.getYear()) ); //Consultamos la fecha
return String(rtcbuffer);
}
NexDSButton bt0 = NexDSButton(1, 1, "bt0");
NexDSButton bt1 = NexDSButton(1, 2, "bt1");
NexDSButton bt2 = NexDSButton(1, 3, "bt2");
NexDSButton bt3 = NexDSButton(1, 4, "bt3");
NexDSButton bt4 = NexDSButton(1, 5, "bt4");
NexDSButton bt5 = NexDSButton(1, 6, "bt5");
NexDSButton bt6 = NexDSButton(1, 7, "bt6");
NexDSButton bt7 = NexDSButton(1, 8, "bt7");
NexText reloj = NexText(0,3,"t0");
NexTouch *nex_listen_list[] =
{
&bt0,
&bt1,
&bt2,
&bt3,
&bt4,
&bt5,
&bt6,
&bt7,
NULL
};
void encender(){
uint32_t estado;
bt0.getValue(&estado);
if (estado== 1)
{
digitalWrite(13,1);
}else{
digitalWrite(13,0);
}
}
void encender2(){
uint32_t estado;
bt1.getValue(&estado);
if (estado== 1)
{
digitalWrite(12,1);
}else{
digitalWrite(12,0);
}
}
void encender3(){
uint32_t estado;
bt2.getValue(&estado);
if (estado== 1)
{
digitalWrite(11,1);
}else{
digitalWrite(11,0);
}
}
void encender4(){
uint32_t estado;
bt3.getValue(&estado);
if (estado== 1)
{
digitalWrite(10,1);
}else{
digitalWrite(10,0);
}
}
void encender5(){
uint32_t estado;
bt4.getValue(&estado);
if (estado== 1)
{
digitalWrite(9,1);
}else{
digitalWrite(9,0);
}
}
void encender6(){
uint32_t estado;
bt5.getValue(&estado);
if (estado== 1)
{
digitalWrite(8,1);
}else{
digitalWrite(8,0);
}
}
void encender7(){
uint32_t estado;
bt6.getValue(&estado);
if (estado== 1)
{
digitalWrite(7,1);
}else{
digitalWrite(7,0);
}
}
void encender8(){
uint32_t estado;
bt7.getValue(&estado);
if (estado== 1)
{
digitalWrite(6,1);
}else{
digitalWrite(6,0);
}
}
void setup() {
nexInit();
bt0.attachPush(encender);
pinMode(13,OUTPUT);
bt1.attachPush(encender2);
pinMode(12,OUTPUT);
bt2.attachPush(encender3);
pinMode(11,OUTPUT);
bt3.attachPush(encender4);
pinMode(10,OUTPUT);
bt4.attachPush(encender5);
pinMode(9,OUTPUT);
bt5.attachPush(encender6);
pinMode(8,OUTPUT);
bt6.attachPush(encender7);
pinMode(7,OUTPUT);
bt7.attachPush(encender8);
pinMode(6,OUTPUT);
Serial.begin(9600);
rtc.begin(); //SDA conectado a pin A4 y SCL a A5
//quitar este comentario para programar hora inicio. rtc.setTime(56,00,17,12,4,20); //Fecha inicial, dejar como comentario despues de programar por primera vez.
byte buffer[2];
// Leemos los registros de temperatura
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.write(0x11); // La direccion de los registros de temperatura
Wire.endTransmission();
// Leemos 2 registros que son los unicos de temperatura
Wire.requestFrom(DS3231_I2C_ADDRESS, 2);
// Leemos de a un byte a la vez
buffer[0] = Wire.read();
buffer[1] = Wire.read();
// Mostramos la temperatura con DS3231 por el Monitor Serial
if (buffer[0] < 0xFF) { // Para evitar una falsa lectura que usualmente viene en 0xFF = -127C lo que es imposible
//Quitar omentario para motrar temperatura lcd.print(String("") + (buffer[0]-2) + "." + (buffer[1]/64*25) + "C"); //Mostramos la temperatura Con una correccion de -2 grados, Se puede cambiar o quitarpara ajustar sonda temperatura
}
// Leeremos la temperatura cada 1 segundo
delay(1000);
}
void loop() {
reloj.setText(rtc_time_text());
Serial.print(rtc_time_text()); // Mostramos hora
delay(1000);
Serial.print(rtc_date_text()); ///mostramos fecha
delay(1000);
nexLoop(nex_listen_list);
}