Olá...estou implementando em meu aquario um lcd 5" com arduino mega, estou ligando um relay de 2 canais. No menu do lcd touch no botão 1 funciona o relay1 mas se coloco em outro botão o relay2 não funciona, mesmo copiando e colando trocando somente de relay1 para relay2.
#include <tinyFAT.h>
#include <UTFT.h>
#include <UTFT_tinyFAT.h>
#include <UTFT_Geometry.h>
#include <UTouch.h>
#include <UTFT_Buttons.h>
int color = 0;
word colorlist[] = {VGA_WHITE, VGA_BLACK, VGA_RED, VGA_BLUE, VGA_GREEN, VGA_FUCHSIA, VGA_YELLOW, VGA_AQUA};
int bsize = 4;
int RELAY1 = 9;
int RELAY2 = 8;
boolean RELAY1Check = false;
boolean RELAY2Check = false;
// Declare which fonts we will be using
extern uint8_t SmallFont[];
extern uint8_t BigFont[];
extern uint8_t Dingbats1_XL[];
extern uint8_t SevenSegNumFont[];
UTFT myGLCD(CTE50, 38, 39, 40, 41);
UTFT_tinyFAT myFiles(&myGLCD);
UTouch myTouch(6,5,4,3,2);
UTFT_Buttons myButtons(&myGLCD, &myTouch);
UTFT_Geometry geo(&myGLCD);
char* files800[]={"PIC801.RAW", "PIC802.RAW", "PIC803.RAW", "PIC804.RAW", "PIC805.RAW", "PIC806.RAW", "PIC807.RAW", "PIC808.RAW", "", ""}; // 800x480
char* files[12];
int picsize_x, picsize_y;
boolean display_rendertime=false; // Set this to true if you want the rendertime to be displayed after a picture is loaded
boolean display_filename=false; // Set this to false to disable showing of filename
word res;
long sm, em;
int but1, but2, but3, but4, but5, but6, butX, butY, pressed_button;
boolean default_colors = true;
void setup() {
myGLCD.InitLCD();
myGLCD.clrScr();
file.initFAT();
Serial.begin(9600);
pinMode(RELAY1, OUTPUT);
digitalWrite(RELAY1,LOW);
Serial.begin(9600);
pinMode(RELAY2, OUTPUT);
digitalWrite(RELAY2,LOW);
myGLCD.setColor(255,255,255);
myGLCD.setFont(SmallFont);
picsize_x=myGLCD.getDisplayXSize();
picsize_y=myGLCD.getDisplayYSize();
switch (picsize_x)
{
case 800:
for (int z=0; z<sizeof(files800)/sizeof(*files800);z++)
files[z] = files800[z];
break;
}
myTouch.InitTouch(LANDSCAPE);
myTouch.setPrecision(PREC_MEDIUM);
myButtons.setTextFont(BigFont);
myButtons.setSymbolFont(Dingbats1_XL);
but1 = myButtons.addButton( 77, 57, 280, 68, "Button 1");
but2 = myButtons.addButton( 443, 57, 280, 68, "Button 2");
but3 = myButtons.addButton( 77, 152, 280, 68, "Button 3");
but4 = myButtons.addButton( 443, 152, 280, 68, "Button 4");
but5 = myButtons.addButton( 77, 248, 280, 68, "Button 5");
but6 = myButtons.addButton( 443, 248, 280, 68, "Button 6");
butX = myButtons.addButton(628, 354, 97, 68, "a", BUTTON_SYMBOL);
butY = myButtons.addButton( 77, 354, 280, 68, "I", BUTTON_SYMBOL | BUTTON_SYMBOL_REP_3X);
myGLCD.setColor(VGA_WHITE);
myGLCD.drawRect(0, 0, 799, 479);
myGLCD.drawRect(10, 10, 789, 469);
myGLCD.setFont(BigFont);
myGLCD.print("You pressed:", 393, 365);
myGLCD.setColor(VGA_BLACK);
myGLCD.setBackColor(VGA_WHITE);
myGLCD.setFont(BigFont);
myGLCD.print("None ", 393, 400);
}
void loop() {
int pressed_button;
int current_demo;
myButtons.drawButtons();
current_demo = 0;
while(current_demo==0) {
if (myTouch.dataAvailable() == true) {
pressed_button = myButtons.checkButtons();
//current_demo = 0;
if (pressed_button==butY) {
if (default_colors) {
myButtons.setButtonColors(VGA_YELLOW, VGA_RED, VGA_YELLOW, VGA_BLUE, VGA_GRAY);
myButtons.relabelButton(butY, "_");
myButtons.drawButtons();
default_colors=false;
}
else
{
myButtons.setButtonColors(VGA_WHITE, VGA_GRAY, VGA_WHITE, VGA_RED, VGA_BLUE);
myButtons.relabelButton(butY, "I");
myButtons.drawButtons();
default_colors=true;
}
}
if (pressed_button==but1){
myGLCD.print("Button 1", 393, 400);
current_demo = 1;
}else if (pressed_button==but2){
myGLCD.print("Button 2", 393, 400);
current_demo = 2;
}else if (pressed_button==but3){
myGLCD.print("Button 3", 393, 400);
current_demo = 3;
}else if (pressed_button==but4){
myGLCD.print("Button 4", 393, 400);
current_demo = 4;
}else if (pressed_button==but5){
myGLCD.print("Button 5", 393, 400);
current_demo = 5;
}else if (pressed_button==but6){
myGLCD.print("Button 6", 393, 400);
current_demo = 6;
}else if (pressed_button==-1){
myGLCD.print("None ", 393, 400);
}
}
if(current_demo != 0)
{
if(current_demo==1){
Demo1();
//myGLCD.InitLCD(LANDSCAPE);
//myGLCD.clrScr();
Serial.begin(9600);
} else if(current_demo==2){
Demo2();
//myGLCD.InitLCD(LANDSCAPE);
//myGLCD.clrScr();
Serial.begin(9600);
} else if(current_demo==3){
Demo3();
//myGLCD.InitLCD(LANDSCAPE);
//myGLCD.clrScr();
Serial.begin(9600);
} else if(current_demo==4){
Demo4();
myGLCD.InitLCD(LANDSCAPE);
myGLCD.clrScr();
} else if(current_demo==5){
Demo5();
myGLCD.InitLCD(LANDSCAPE);
myGLCD.clrScr();
} else if(current_demo==6){
Demo6();
myGLCD.InitLCD(LANDSCAPE);
myGLCD.clrScr();
}
}
}
}
void Demo6()
{
while(1){
}
}
void drawColorMarkerAndBrushSize(int col)
{
randomSeed(analogRead(0));
// Setup the LCD
myGLCD.InitLCD();
myGLCD.setFont(SmallFont);
// Clear the screen and draw the frame
myGLCD.clrScr();
myGLCD.setColor(255, 0, 0);
myGLCD.fillRect(0, 0, 319, 13);
myGLCD.setColor(64, 64, 64);
myGLCD.fillRect(0, 226, 319, 239);
myGLCD.setColor(255, 255, 255);
myGLCD.setBackColor(255, 0, 0);
myGLCD.print("* Universal Color TFT Display Library *", CENTER, 1);
myGLCD.setBackColor(64, 64, 64);
myGLCD.setColor(255,255,0);
myGLCD.print("a href="http://electronics.henningkarlsen.com>">http://electronics.henningkarlsen.com>", CENTER, 227);
myGLCD.setColor(0, 0, 255);
myGLCD.drawRect(0, 14, 319, 225);
}
void Demo5()
{
myGLCD.InitLCD();
myGLCD.clrScr();
myGLCD.setFont(BigFont);
myTouch.InitTouch();
myTouch.setPrecision(PREC_HI);
myGLCD.setColor(VGA_WHITE);
myGLCD.drawLine(32,0,32,myGLCD.getDisplayYSize()-1);
myGLCD.drawLine(myGLCD.getDisplayXSize()-32,0,myGLCD.getDisplayXSize()-32,myGLCD.getDisplayYSize()-1);
myGLCD.print("C", myGLCD.getDisplayXSize()-24, 8);
myGLCD.print("L", myGLCD.getDisplayXSize()-24, 24);
myGLCD.print("E", myGLCD.getDisplayXSize()-24, 40);
myGLCD.print("A", myGLCD.getDisplayXSize()-24, 56);
myGLCD.print("R", myGLCD.getDisplayXSize()-24, 72);
myGLCD.print("+", myGLCD.getDisplayXSize()-24, 136);
myGLCD.print("-", myGLCD.getDisplayXSize()-24, 200);
myGLCD.fillRect(myGLCD.getDisplayXSize()-32,96,myGLCD.getDisplayXSize()-1,128);
myGLCD.drawLine(myGLCD.getDisplayXSize()-32,160,myGLCD.getDisplayXSize()-1,160);
myGLCD.drawLine(myGLCD.getDisplayXSize()-32,192,myGLCD.getDisplayXSize()-1,192);
myGLCD.drawLine(myGLCD.getDisplayXSize()-32,224,myGLCD.getDisplayXSize()-1,224);
for (int i=0; i<8; i++)
{
myGLCD.setColor(colorlist[i]);
myGLCD.fillRect(0, (i*30), 24, (((i+1)*30)-1));
}
drawColorMarkerAndBrushSize(color);
while(1)
{
long x, y;
while (myTouch.dataAvailable() == true)
{
myTouch.read();
x = myTouch.getX();
y = myTouch.getY();
if ((x!=-1) and (y!=-1))
{
if (x>(31+bsize) and (x<myGLCD.getDisplayXSize()-(31+bsize)))
{
if (bsize==1)
myGLCD.drawPixel(x, y);
else
myGLCD.fillCircle(x, y, bsize);
}
else
{
if (x<(30+bsize))
{
if (y<240)
{
color = y / 30;
drawColorMarkerAndBrushSize(color);
while (myTouch.dataAvailable()) {};
delay(50);
}
}
else
{
if (y<96)
{
myGLCD.setColor(VGA_BLACK);
myGLCD.fillRect(33, 0, myGLCD.getDisplayXSize()-33, myGLCD.getDisplayYSize()-1);
myGLCD.setColor(colorlist[color]);
}
if ((y>128) and (y<160))
{
if (bsize<7)
{
bsize++;
drawColorMarkerAndBrushSize(color);
while (myTouch.dataAvailable()) {};
delay(50);
}
}
if ((y>160) and (y<192))
{
bsize=4;
drawColorMarkerAndBrushSize(color);
while (myTouch.dataAvailable()) {};
delay(50);
}
if ((y>192) and (y<224))
{
if (bsize>1)
{
bsize--;
drawColorMarkerAndBrushSize(color);
while (myTouch.dataAvailable()) {};
delay(50);
}
}
}
}
}
}
}
}
void Demo4()
{
myGLCD.InitLCD(LANDSCAPE);
myGLCD.clrScr();
myTouch.InitTouch(LANDSCAPE);
myTouch.setPrecision(PREC_MEDIUM);
picsize_x=myGLCD.getDisplayXSize();
picsize_y=myGLCD.getDisplayYSize();
for (int i=2; i<12; i++)
{
if (files[i]!="")
{
res=myFiles.loadBitmap(0, 0, picsize_x, picsize_y, files[i]);
if (res!=0)
{
if (res==0x10)
{
myGLCD.print("File not found...", 0, 0);
myGLCD.print(files[i], 0, 14);
}
else
{
myGLCD.print("ERROR: ", 0, 0);
myGLCD.printNumI(res, 56, 0);
}
delay(1000);
myGLCD.clrScr();
}
else
{
delay(1500);
}
}
}
}
void clearField()
{
myGLCD.setColor(VGA_BLACK);
myGLCD.fillRect(1,15,318,224);
delay(3000);
}
void Demo3(void)
{
//myGLCD.InitLCD(LANDSCAPE);
//myGLCD.clrScr();
myTouch.InitTouch(LANDSCAPE);
myTouch.setPrecision(PREC_MEDIUM);
Serial.begin(9600);
if(pressed_button==but3){ // then someone pressed button 1
if(RELAY2Check == false){ //Turn the relay ON
digitalWrite(RELAY2, HIGH);
RELAY2Check = true;
}
else if(RELAY2Check == true){ //Turn the relay OFF
digitalWrite(RELAY2, LOW);
RELAY2Check = false;
}
}
}
void Demo2(void)
{
//myGLCD.InitLCD(LANDSCAPE);
//myGLCD.clrScr();
myTouch.InitTouch(LANDSCAPE);
myTouch.setPrecision(PREC_MEDIUM);
Serial.begin(9600);
if(pressed_button==but2){ // then someone pressed button 1
if(RELAY2Check == false){ //Turn the relay ON
digitalWrite(RELAY2, HIGH);
RELAY2Check = true;
}
else if(RELAY2Check == true){ //Turn the relay OFF
digitalWrite(RELAY2, LOW);
RELAY2Check = false;
}
}
}
void Demo1(void)
{
//myGLCD.InitLCD(LANDSCAPE);
//myGLCD.clrScr();
myTouch.InitTouch(LANDSCAPE);
myTouch.setPrecision(PREC_MEDIUM);
Serial.begin(9600);
if(pressed_button==but1){ // then someone pressed button 1
if(RELAY1Check == false){ //Turn the relay ON
digitalWrite(RELAY1, HIGH);
RELAY1Check = true;
}
else if(RELAY1Check == true){ //Turn the relay OFF
digitalWrite(RELAY1, LOW);
RELAY1Check = false;
}
}
}
as funções do relay1 está igual a do relay2 mas só o 1 funciona:
int RELAY1 = 9;
int RELAY2 = 8;
boolean RELAY1Check = false;
boolean RELAY2Check = false;
void setup() {
Serial.begin(9600);
pinMode(RELAY1, OUTPUT);
digitalWrite(RELAY1,LOW);
Serial.begin(9600);
pinMode(RELAY2, OUTPUT);
digitalWrite(RELAY2,LOW);
void loop() {
if (pressed_button==but1){
myGLCD.print("Button 1", 393, 400);
current_demo = 1;
}else if (pressed_button==but2){
myGLCD.print("Button 2", 393, 400);
current_demo = 2;
if(current_demo==1){
Demo1();
//myGLCD.InitLCD(LANDSCAPE);
//myGLCD.clrScr();
Serial.begin(9600);
} else if(current_demo==2){
Demo2();
//myGLCD.InitLCD(LANDSCAPE);
//myGLCD.clrScr();
Serial.begin(9600);
void Demo2(void)
{
//myGLCD.InitLCD(LANDSCAPE);
//myGLCD.clrScr();
myTouch.InitTouch(LANDSCAPE);
myTouch.setPrecision(PREC_MEDIUM);
Serial.begin(9600);
if(pressed_button==but2){ // then someone pressed button 1
if(RELAY2Check == false){ //Turn the relay ON
digitalWrite(RELAY2, HIGH);
RELAY2Check = true;
}
else if(RELAY2Check == true){ //Turn the relay OFF
digitalWrite(RELAY2, LOW);
RELAY2Check = false;
}
}
}
void Demo1(void)
{
//myGLCD.InitLCD(LANDSCAPE);
//myGLCD.clrScr();
myTouch.InitTouch(LANDSCAPE);
myTouch.setPrecision(PREC_MEDIUM);
Serial.begin(9600);
if(pressed_button==but1){ // then someone pressed button 1
if(RELAY1Check == false){ //Turn the relay ON
digitalWrite(RELAY1, HIGH);
RELAY1Check = true;
}
else if(RELAY1Check == true){ //Turn the relay OFF
digitalWrite(RELAY1, LOW);
RELAY1Check = false;
}
}
}
Se alguém puder ajudar vlw
Tags:
Fiz esse Sketch aqui agora, faz o teste ai, espero ter ajudado!
//
//
// ............................................... CONTROLE DE SAIDAS ATRAVES DO TOUCH SCREEN 5" ...............................................................................
//
//
// Produzido por: Bruno Gonçalves
// Data : 13/06/2014
// IDE: Arduino 1.5.6-r6
// Nome : Controle de 6 Saidas Touch Screen
//
//
// Bibliotecas usadas
#include <UTFT.h> // Tela TTF
#include <UTouch.h> // Touch Screen
#include <UTFT_Buttons.h> // Botoes
#include <UTFT_Teclado.h> // Teclado
//Fontes usadas
extern uint8_t Ubuntu[];
UTFT Tela(ITDB50,38,39,40,41); // Variavel da Tela 5.0 polegadas
UTouch Touch(6,5,4,3,2); // Variavel do Touch Screen
UTFT_Buttons Botao(&Tela, &Touch); // Variavel dos botoes
UTFT_Teclado Teclado(&Tela, &Touch, &Botao); // Variavel do teclado
// Variaveis para controle das saidas
int contador1; //Contador para saida 1
int contador2; //Contador para saida 2
int contador3; //Contador para saida 3
int contador4; //Contador para saida 4
int contador5; //Contador para saida 5
int contador6; //Contador para saida 6
// ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void setup()
{
Serial.begin(9600);
Touch.iniciarTouch(); // Inicia a tela Touch Screen
Touch.setPrecisao(PREC_MEDIA); // Seta a precisão da tela para Média
Tela.iniciaLCD(HORIZONTAL); // Inicia o Painel LCD
Tela.alteraContraste(100);
// Declarando dos pinos 7 ao 12 como saidas digitais
pinMode(7,OUTPUT);// Saida para o botao 1
pinMode(8,OUTPUT);// Saida para o botao 2
pinMode(9,OUTPUT);// Saida para o botao 3
pinMode(10,OUTPUT);// Saida para o botao 4
pinMode(11,OUTPUT);// Saida para o botao 5
pinMode(12,OUTPUT);// Saida para o botao 6
// Contadores para fazer as funções dos botões entre ON e OFF
contador1 = 0; //Contador para saida 1
contador2 = 0; //Contador para saida 2
contador3 = 0; //Contador para saida 3
contador4 = 0; //Contador para saida 4
contador5 = 0; //Contador para saida 5
contador6 = 0; //Contador para saida 6
}
// ----------------------------------------------------------------------------------------------------
void loop() // Inicia o LOOP
{
// Variaveis para criar os botões
int Ba, Bb, Bc, Bd, Be, Bf, BotaoPressionado;
boolean sair = false;
//COMANDOS PARA LIBERAR AS SAIDAS ..........................................................................................................................................
//saida 1
if(contador1==1)
{
digitalWrite(7,1);
}
if(contador1==2)
{
digitalWrite(7,0);
contador1 = 0;
}
//saida 2
if(contador2==1)
{
digitalWrite(8,1);
}
if(contador2==2)
{
digitalWrite(8,0);
contador2 = 0;
}
//saida 3
if(contador3==1)
{
digitalWrite(9,1);
}
if(contador3==2)
{
digitalWrite(9,0);
contador3 = 0;
}
//saida 4
if(contador4==1)
{
digitalWrite(10,1);
}
if(contador4==2)
{
digitalWrite(10,0);
contador4 = 0;
}
//saida 5
if(contador5==1)
{
digitalWrite(11,1);
}
if(contador5==2)
{
digitalWrite(11,0);
contador5 = 0;
}
//saida 6
if(contador6==1)
{
digitalWrite(12,1);
}
if(contador6==2)
{
digitalWrite(12,0);
contador6 = 0;
}
//IMPRIME DADOS NO DISPLAY TOUCH SCREEN 5" .................................................................................................................................
while (true)
{
Tela.preencherTela(VGA_BLACK);
Botao.excluiTodosBotoes();
// coluna, linha, largura, altura, largura da caixa de texto, cor fundo, cor letra, fonte, frase a ser escrita, alinhamento
Tela.molduraCheia(2, 1, 797, 40, VGA_BLUE, VGA_BLUE);
Tela.alterarFonte(Ubuntu, VGA_WHITE, VGA_BLUE);
Tela.escreverString(" CONTROLE DE SAIDAS TOUCH ", 10, 5);
// Lin, Col, Larg, Alt, Fonte, Cor Letra, CorFundo, Label
Ba = Botao.novoBotao( 60, 10, 250, 200, Ubuntu, VGA_BLACK, VGA_LIME, "SAIDA 1");
Bb = Botao.novoBotao( 60, 270, 250, 200, Ubuntu, VGA_BLACK, VGA_LIME, "SAIDA 2");
Bc = Botao.novoBotao( 60, 530, 250, 200, Ubuntu, VGA_BLACK, VGA_LIME, "SAIDA 3");
Bd = Botao.novoBotao( 270, 10, 250, 200, Ubuntu, VGA_BLACK, VGA_LIME, "SAIDA 4");
Be = Botao.novoBotao( 270, 270, 250, 200, Ubuntu, VGA_BLACK, VGA_LIME, "SAIDA 5");
Bf = Botao.novoBotao( 270, 530, 250, 200, Ubuntu, VGA_BLACK, VGA_LIME, "SAIDA 6");
while(true)
{
//Verifica se algum lugar do touch foi pressionado, e se sim, apos isto verifica qual atraves das comparações abaixo
if (Touch.telaPressionada() == true)
{
BotaoPressionado = Botao.verificaBotaoPressionado();// verifica qual botao foi pressionado abaixo
// Comando para o botao SAIDA 1 .................................................................................................................................................
if (BotaoPressionado == Ba)
{
contador1++;
if(contador1==1)
{
Serial.println("Saida 1 Ligado");
}
if(contador1==2)
{
Serial.println("Saida 1 Desligada");
}
break;
}
else
// Comando para o botao SAIDA 2 .................................................................................................................................................
if (BotaoPressionado == Bb)
{
contador2++;
if(contador2==1)
{
Serial.println("Saida 2 Ligado");
}
if(contador2==2)
{
Serial.println("Saida 2 Desligada");
}
break;
}
else
// Comando para o botao SAIDA 3 .................................................................................................................................................
if (BotaoPressionado == Bc)
{
contador3++;
if(contador3==1)
{
Serial.println("Saida 3 Ligado");
}
if(contador3==2)
{
Serial.println("Saida 3 Desligada");
}
break;
}
else
// Comando para o botao SAIDA 4 .................................................................................................................................................
if (BotaoPressionado == Bd)
{
contador4++;
if(contador4==1)
{
Serial.println("Saida 4 Ligado");
}
if(contador4==2)
{
Serial.println("Saida 4 Desligada");
}
break;
}
else
// Comando para o botao SAIDA 5 .................................................................................................................................................
if (BotaoPressionado == Be)
{
contador5++;
if(contador5==1)
{
Serial.println("Saida 5 Ligado");
}
if(contador5==2)
{
Serial.println("Saida 5 Desligada");
}
break;
}
else
// Comando para o botao SAIDA 6 .................................................................................................................................................
if (BotaoPressionado == Bf)
{
contador6++;
if(contador6==1)
{
Serial.println("Saida 6 Ligado");
}
if(contador6==2)
{
Serial.println("Saida 6 Desligada");
}
break;
}
}
}
}
} // Fecha o LOOP
coloque apos os dados de pinMode..... declarando para saidas iniciarem desligadas, acho que fara o projeto ficar mais estavel ainda
// Força saidas iniciarem desligadas
digitalWrite(7,LOW); // Força começar desligada
digitalWrite(8,LOW); // Força começar desligada
digitalWrite(9,LOW); // Força começar desligada
digitalWrite(10,LOW); // Força começar desligada
digitalWrite(11,LOW); // Força começar desligada
digitalWrite(12,LOW); // Força começar desligada
aguardo resposta
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por