Antes que nada decir que he estado buscando aquí y por la web, y no encuentro como comenzar con la TFT táctil de 7 pulgadas.
El proyecto consiste en automatizar un acuario de 500 litros, tengo el Sketch funcionando conectado el Mega con un DS3231, 4 sensores de temperatura, un buzzer de alarma y un módulo de 8 relés.
Pongo el Sketch por si a alguien le interesa:
#include <DS3231.h>
#include <Wire.h>
#include <OneWire.h>
#include <DallasTemperature.h>
DS3231 Clock;
byte year, month, date, DoW, hour, minute, second;
byte Buzzer1=6; byte LedsColor=7; byte FuenteTC420=8; byte SolenoideCO2=9; byte ElectroBomba=10; byte Agitador=11;
byte BombasPeristalticas=12; byte LamparaUV=13; byte LuzDeLuna=14; byte CalentadorSuelo=22; byte TemperaturaAgua=24;
byte VentiladoresLeds=26; byte VentiladoresCircuitos=28;
//Se establecen los 4 pines -entre paréntesis- de los Sensores de Temperatura:
OneWire ourWire1(2); OneWire ourWire2(3); OneWire ourWire3(4); OneWire ourWire4(5);
//Se declaran las tres variables u objetos para los 4 Sensores:
DallasTemperature SensorSuelo(&ourWire1); DallasTemperature SensorAgua(&ourWire2);
DallasTemperature SensorLeds(&ourWire3); DallasTemperature SensorCircuitos(&ourWire4);
void setup() {
Wire.begin(); // Se inicia la interfaz I2c
//Se inician los pines de salida:
pinMode(Buzzer1,OUTPUT); pinMode(LedsColor,OUTPUT); pinMode(FuenteTC420,OUTPUT); pinMode(SolenoideCO2,OUTPUT);
pinMode(ElectroBomba,OUTPUT); pinMode(Agitador,OUTPUT); pinMode(BombasPeristalticas,OUTPUT); pinMode(LamparaUV,OUTPUT);
pinMode (LuzDeLuna,OUTPUT); pinMode(CalentadorSuelo,OUTPUT); pinMode(TemperaturaAgua,OUTPUT); pinMode(VentiladoresLeds,OUTPUT);
pinMode(VentiladoresCircuitos,OUTPUT);
Serial.begin(9600);
//Se inician los cuatro Sensores de temperatura:
SensorSuelo.begin(); SensorAgua.begin(); SensorLeds.begin(); SensorCircuitos.begin();
}
void loop() {
delay(100);
//Preparan los Sensores para la lectura:
SensorSuelo.requestTemperatures(); byte temp1= SensorSuelo.getTempCByIndex(0);
SensorAgua.requestTemperatures(); byte temp2= SensorAgua.getTempCByIndex(0);
SensorLeds.requestTemperatures(); byte temp3= SensorLeds.getTempCByIndex(0);
SensorCircuitos.requestTemperatures();byte temp4= SensorCircuitos.getTempCByIndex(0);
//Se lee e imprime la temperatura de los cuatro Sensores en grados Celsius:
Serial.print("TEMPERATURA DEL SUELO "); Serial.print(temp1); Serial.println(" GRADOS");
Serial.print("TEMPERATURA DEL AGUA "); Serial.print(temp2); Serial.println(" GRADOS");
Serial.print("TEMPERATURA DE LOS LEDS ");Serial.print(temp3); Serial.println(" GRADOS");
Serial.print("TEMPERATURA DEL CIRCUITO ");Serial.print(temp4); Serial.println(" GRADOS");
//Se activa el pin correspondiente según cada registro de temperatura:
if (temp1<=26) {Serial.println("ON CABLE CALENTADOR (Pin 22)"); digitalWrite(CalentadorSuelo,1);}
else {Serial.println("OFF CABLE CALENTADOR (Pin 22)"); digitalWrite(CalentadorSuelo,0);}
//En el caso de la temperatura del agua mayor de 28 grados se apaga el calentador y se activa el Buzzer1:
if (temp1>=29) {Serial.println("TEMPERATURA DEL SUELO MAYOR DE 29 GRADOS (Pin 22)!!!");
digitalWrite(CalentadorSuelo,0);
analogWrite(Buzzer1,494); delay(1000); digitalWrite(Buzzer1, 0); delay(100);}
if (temp3>39) {Serial.println("ON VENTILADORES DE LEDS (Pin 26)"); digitalWrite(VentiladoresLeds,1);}
else {Serial.println("OFF VENTILADORES DE LEDS (Pin 26)"); digitalWrite(VentiladoresLeds,0);}
if (temp4>29) {Serial.println("ON VENTILADORES DEL CIRCUITO (Pin 28)"); digitalWrite(VentiladoresCircuitos,1);}
else {Serial.println("OFF VENTILADORES DEL CIRCUITO (Pin 28)"); digitalWrite(VentiladoresCircuitos,0);}
Clock.getTime(year, month, date, DoW, hour, minute, second); //Se rescata la información del Reloj DS3231
if (hour<10) {Serial.print(0); Serial.print(hour, DEC); Serial.print(":");} //Agrega un cero para el formato de 2 cifras
else {Serial.print(hour,DEC); Serial.print(":");}
if (minute<10) {Serial.print(0); Serial.print(minute, DEC); Serial.print(":");}//Agrega un cero para el formato de 2 cifras
else {Serial.print(minute,DEC); Serial.print(":");}
if (second<10) {Serial.print(0); Serial.println(second, DEC);} //Agrega un cero para el formato de segundos de 2 dígitos
else {Serial.println(second,DEC);}
//Rele que enciende el circuito de Leds de 3 watts de colores cuatro veces al día:
if ((hour==12||hour==13||hour==14||hour==15) && (minute<30))
{digitalWrite(LedsColor, 1);
Serial.println("PIN-7-ON----> Leds de 3 Watts de Colores (12/13/14/15 Hs durante 30 min)");}
else
{digitalWrite(LedsColor, 0);
Serial.println("PIN-7-OFF---> Leds de 3 Watts de Colores (12/13/14/15 Hs durante 30 min)");}
//Rele que enciende la Fuente de Alimentación de 12 voltios (30 Amperios) que alimenta Leds 10w
if (hour>=10 && hour<22)
{digitalWrite(FuenteTC420, 1);
Serial.println("PIN-8-ON----> Fuente de 12V Leds efecto Amanecer-Anochecer (de 10 a 22 Hs)");}
else
{digitalWrite(FuenteTC420, 0);
Serial.println("PIN-8-OFF---> Fuente de 12V Leds efecto Amanecer-Anochecer (de 10 a 22 Hs)");}
//Rele que enciende el Solenoide de CO2 durante 10 horas:
if (hour>=10 && hour<20)
{digitalWrite(SolenoideCO2, 1);
Serial.println("PIN-9-ON----> Solenoide CO2 (de 10 a 20 Hs)");}
else
{digitalWrite(SolenoideCO2, 0);
Serial.println("PIN-9-OFF---> Solenoide CO2 (de 10 a 20 Hs)");}
//Rele que enciende la Electrobomba durante 5 minutos cuatro veces al día:
if ((hour==0|hour==6||hour==12||hour==18) && (minute<5))
{digitalWrite(ElectroBomba, 1);
Serial.println("PIN-10-ON----> Electrobomba de Agua (00/06/12/18 Hs 5 min)");}
else
{digitalWrite(ElectroBomba, 0);
Serial.println("PIN-10-OFF---> Electrobomba de Agua (00/06/12/18 Hs 5 min)");}
//Rele que enciende un agitador de líquidos para antialgas:
if ((hour==0|hour==6||hour==12||hour==18) && (minute>=5 && minute<=10))
{digitalWrite(Agitador, 1);
Serial.println("PIN-11-ON---->Agitador (00/06/12/18 Hs durante 5 min)");}
else
{digitalWrite(Agitador, 0);
Serial.println("PIN-11-OFF--->Agitador (00/06/12/18 Hs durante 5 min)");}
//Rele que enciende las bombas Peristálticas de fertilizantes:
if ((hour==0||hour==6||hour==12||hour==18) && (minute==10) && (second<15))
{digitalWrite(BombasPeristalticas, 1);
Serial.println("PIN-12-ON----> Bombas Peristálticas (00:10/06:10/12:10/18:10 Hs 15 seg)");}
else
{digitalWrite(BombasPeristalticas, 0);
Serial.println("PIN-12-OFF---> Bombas Peristálticas (00:10/06:10/12:10/18:10 Hs 15 seg)");}
//Rele que enciende la Lámpara Germicida:
if (hour>=8 && hour<12 || hour>=20 && hour<24)
{digitalWrite(LamparaUV, 1);
Serial.println("PIN-13-ON----> Lampara UV 9 watt (8 a 12 y 20 a 24 Hs)");}
else
{digitalWrite(LamparaUV, 0);
Serial.println("PIN-13-OFF---> Lampara UV 9 watt (8 a 12 y 20 a 24 Hs)");}
//Rele que enciende los Leds azules (luz de luna):
if (hour>=22 || hour<10) {digitalWrite(LuzDeLuna, 1); Serial.println("PIN-14-ON----> Luz de Luna (de 22 a 10 Hs)");}
else {digitalWrite(LuzDeLuna, 0); Serial.println("PIN-14-OFF---> Luz de Luna (de 22 a 10 Hs)");}
}
Quiero comenzar con el siguiente display:
Pero ahora mismo no sé cómo conectar el display al Arduino, ni que librería/as utilizar, vamos, que estoy en pañales.
Una ayudita, por favor.