em o meu problema....
Estou querendo adicionar ao projeto um LCD 5110 para me dar informações como IP, temperatura, luminosidade, etc... mais não estou conseguindo de forma nenhuma, quando eu passo o meu codigo altera no IDE esta tudo certo, mais quando eu subo o codigo para o Arduino acontece que ou funciona os reles ou funciona o LCD
AJUDEM AI!!!!!!!!!!
O CODIGO
#include <SPI.h>#include <Ethernet.h>#include <LCD5110_Basic.h>
LCD5110 myGLCD(9,10,11,12,13);extern uint8_t SmallFont[]; //Configurações do Ethernet Shieldbyte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };byte ip[] = { 192,168,25, 177 }; // ip que o arduino assumirábyte gateway[] = { 192,168,25, 1 }; // ip do roteadorbyte subnet[] = { 255, 255, 0, 0 }; // String que representa o estado dos dispositivoschar Luz[7] = "0000L#"; EthernetServer server(8090); // Cria o servidor na porta 8081 // String onde é guardada as msgs recebidaschar msg[7] = "0000L#"; void setup() { Ethernet.begin(mac, ip, gateway, subnet); server.begin(); myGLCD.InitLCD(); myGLCD.setFont(SmallFont); pinMode(5,OUTPUT); pinMode(6,OUTPUT); pinMode(7,OUTPUT); pinMode(8,OUTPUT); pinMode(3,OUTPUT); pinMode(4,OUTPUT);} void loop() { EthernetClient client = server.available();
myGLCD.clrScr(); myGLCD.print("Homeduino", CENTER, 0); myGLCD.print("IP:192.168.25.17", RIGHT, 8); myGLCD.print("Iluminacao", LEFT, 16); myGLCD.print("Projeto ", LEFT, 24); myGLCD.print("Por: ", LEFT, 32); myGLCD.print("KARLOS PEREIRA", LEFT, 40); delay (5000); // SE receber um caracter... if (client) { // guarda o caracter na string 'msg' msg[1]=msg[2]; msg[2]=msg[3]; msg[3]=msg[4]; msg[4]=msg[5]; msg[5]=msg[6]; msg[6] = client.read(); if (msg[6]=='#') { switch(msg[5]) { case 'R': // Se receber o comando 'R#' envia de volta o status dos // dispositivos. (Que é a string 'Luz') client.write(Luz); break; case 'P': // Caso P#, aciona o pino do portão pequeno por 1s. digitalWrite(3,LOW); delay(1000); digitalWrite(3,HIGH); break; case 'G': // Caso G#, aciona o pino do portão pequeno por 1s. digitalWrite(4,LOW); delay(1000); digitalWrite(4,HIGH); break; case 'L': // Caso L#, ele copia os 4 bytes anteriores p/ a // string 'Luz' e cada byte representa um // dispositivo, onde '1'=ON e '0'=OFF Luz[0]=msg[1]; Luz[1]=msg[2]; Luz[2]=msg[3]; Luz[3]=msg[4]; if (Luz[0]=='1') digitalWrite(5,LOW); else digitalWrite(9,HIGH); if (Luz[1]=='1') digitalWrite(6,LOW); else digitalWrite(10,HIGH); if (Luz[2]=='1') digitalWrite(7,LOW); else digitalWrite(11,HIGH); if (Luz[3]=='1') digitalWrite(8,LOW); else digitalWrite(12,HIGH); break; } } }}
_________________________________________________________________________
_________________________________________________________________________
O CODIGO PHP
<html><head></head><body> <?php$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);// Se conecta ao IP e Porta:socket_connect($sock,"192.168.25.177", 8090); // Executa a ação correspondente ao botão apertado.if(isset($_POST['bits'])) { $msg = $_POST['bits']; if(isset($_POST['Fora' ])){ if($msg[0]=='1') { $msg[0]='0'; } else { $msg[0]='1'; }} if(isset($_POST['Quarto1'])){ if($msg[1]=='1') { $msg[1]='0'; } else { $msg[1]='1'; }} if(isset($_POST['Quarto2'])){ if($msg[2]=='1') { $msg[2]='0'; } else { $msg[2]='1'; }} if(isset($_POST['Sala' ])){ if($msg[3]=='1') { $msg[3]='0'; } else { $msg[3]='1'; }} if(isset($_POST['Pequeno'])){ $msg = 'P#'; } if(isset($_POST['Grande' ])){ $msg = 'G#'; } socket_write($sock,$msg,strlen($msg));} socket_write($sock,'R#',2); //Requisita o status do sistema. // Espera e lê o status e define a cor dos botões de acordo.$status = socket_read($sock,6);if (($status[4]=='L')&&($status[5]=='#')) { if ($status[0]=='0') $cor1 = 'lightcoral'; else $cor1 = 'lightgreen'; if ($status[1]=='0') $cor2 = 'lightcoral'; else $cor2 = 'lightgreen'; if ($status[2]=='0') $cor3 = 'lightcoral'; else $cor3 = 'lightgreen'; if ($status[3]=='0') $cor4 = 'lightcoral'; else $cor4 = 'lightgreen'; echo "<form method =\"post\" action=\"PaginaPHP.php\">"; echo "<input type=\"hidden\" name=\"bits\" value=\"$status\">"; echo "<button style=\"width:200; background-color: $cor1 ;font: bold 14px Arial\" type = \"Submit\" Name = \"Fora\">Sala</button></br></br>"; echo "<button style=\"width:70; background-color: $cor2 ;font: bold 14px Arial\" type = \"Submit\" Name = \"Quarto1\">Quarto Casal</button></br></br>"; echo "<button style=\"width:70; background-color: $cor3 ;font: bold 14px Arial\" type = \"Submit\" Name = \"Quarto2\">Quarto Solteiro</button></br></br>"; echo "<button style=\"width:70; background-color: $cor4 ;font: bold 14px Arial\" type = \"Submit\" Name = \"Sala\">Cozinha</button></br></br></br>"; echo "<button style=\"width:90;font: bold 14px Arial\" type = \"Submit\" Name = \"Pequeno\">Portao Pequeno</button></br></br>"; echo "<button style=\"width:90;font: bold 14px Arial\" type = \"Submit\" Name = \"Grande\">Portao Grande</button></br></br>"; echo "</form>";}// Caso ele não receba o status corretamente, avisa erro.else { echo "Falha ao receber status da casa."; }socket_close($sock);?> </body></html>
______________________________________________________________________________
______________________________________________________________________________…
olar meu ar-condicionado, e também minha TV da sala.
Logo no início do projeto, várias dúvidas surgiram.
Eu consigo realizar a leitura dos códigos de IR do meu controle remoto (decodificação tipo NEC), porém quando subo o código para envio do IR, eu não tenho nenhuma resposta do ar-condicionado. E foi aí que eu me deparei com uma dificuldade muito grande de DEBUG, pois não sei se meu LED emissor está enviando sinal, e se está, qual tipo de sinal está enviando.
Preciso de um código, que trabalhe emissor, e receptor juntos! Para que eu consiga ler no próprio ARDUINO, o que o LED emissor de IR está enviando. Por exemplo, se eu digitar algo na serial (serial monitor) ele envia um código NEC pré-cadastrado, e print no monitor serial o código que foi recebido.
Outra dificuldade que me deparei, é que necessito controlar 2 dispositivos, cada um em um cômodo, e em todo lugar que eu vejo, os exemplos dessa biblioteca utilizam a porta digital 3 do arduino para enviar os comandos, e o pior, até onde eu percebi, isso não é customizável. Eu até poderia utilizar uma mesma porta para controlar ambos dispositivos, mas acredito que isso não é o ideial pois o sinal seria enviado aos 2 aparelhos.
Portanto, necessito de um código que trabalhe com amis de uma porta digital para envio dos códigos IR
Seguem os códigos que estou utilizando:
LEITURA
#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
irrecv.resume(); // Receive the next value
}
delay(100);
}
ENVIO
#include <IRremote.h> IRsend irsend; void setup() { } void loop() { irsend.sendNEC(0x68B92, 32); delay(100);
…
Adicionado por Igor Ayres ao 8:35 em 13 janeiro 2015
vel ao entendimento, e consequentemente mais didático. Mas evitarei fazer isso caso se trate de algo com detalhes muito técnicos, já que partes muito técnicas costumam ser um tanto indigestas para a maioria das pessoas.
Começo assim pela questão do uso da Serial, que no seu Sistema original aparentemente estava sendo usada para testes e "debug" via Monitor Serial do Arduino.
Vi que no último código, vc comentou (ou eliminou) as linhas referentes aos "prints" via Serial. Para que vc ainda tenha esta funcionalidade quando precisar, implementei uma técnica onde vc simplesmente "liga" ou "desliga" esta funcionalidade logo no início do código. Desta forma vc não precisa se preocupar em comentar ou descomentar as linhas onde usa a Serial. Simplesmente onde está escrito "Serial.xyz" basta substituir por "Serial_xyz", onde "xyz" é a função sendo executada (print, println, begin, etc).
Veja o trecho logo no início do código, onde é possível "ligar" ou "desligar" o uso das funções da Serial:
(clique na figura para "zoom")
Onde está marcado na cor amarelo, vc pode habilitar ou desabilitar o uso da Serial. No caso, está com o valor "0", e assim a Serial está "desabilitada". Onde marquei em roxo e azul, é definida a pasta e o arquivo onde está o código necessário para uso desta funcionalidade.
Além de facilitar o uso, a vantagem disto é que quando vc "desabilitar" a Serial, as funções usadas no código não terão efeito, e portanto não consomem área de Memória (seja RAM, seja Flash).
Apenas para visualizar a simplicidade da implementação, segue o trecho de código que está no arquivo "Serial_ON_OFF_01.h", mostrando como a implementação "ON/OFF" é feita:
(clique na figura para "zoom")
Note que nesta primeira implementação, não acrescentei todas as funções da Serial, mas sim apenas as mais utilizadas (além da "Serial_delay", que nada mais é do que um "alias" para o "delay" do Arduino).
Caso vc não precise de nenhuma outra função, não precisa fazer mais nada no arquivo "Serial_ON_OFF_01.h". Mas caso vc precise acrescentar outras funções da Serial, basta seguir o padrão mostrado: acrescente na região marcada na cor verde a função função "Serial_xyz" usada, e repetindo a função "Serial_xyz" na região marcada na cor amarela.
A parte marcada na cor laranja, apenas serve para forçar um erro no momento da compilação, caso a opção ON/OFF não tenha sido selecionada corretamente (ou seja, nem "0", nem "1").
Veja um exemplo do uso desta funcionalidade no código principal, conforme mostrado na figura a seguir:
(clique na figura para "zoom")
Note as duas áreas marcadas na cor cinza. Elas só terão efeito se vc habilitou a Serial no início do código (colocando "1" na definição de "Serial_ON"). Do contrário, nenhum código será gerado para as duas linhas marcadas na cor cinza (e também nenhuma RAM será consumida).
Esta funcionalidade se torna mais necessária quando seu código evolui, e vc precisa fazer testes e depuração. E quando isso ocorre, seu código também aumenta em tamanho, e portanto este ON/OFF facilita muito quando vc tiver concluído tudo e quiser eliminar o uso da Serial no código final, sem precisar comentar as linhas onde vc usou as funções da Serial.
Ah claro, não dê atenção aos números das linhas nos trechos de código mostrados nas figuras anteriores, pois estes números irão mudar no código final.
Agora irei iniciar a implementação restante. Na verdade só irei adaptar o que já tenho implementado, pois como eu disse anteriormente, já implementei isso para um amigo que também fez uma automação residencial e também usou o Blynk.
Aparentemente, está claro para mim a forma que vc está usando, mas caso eu tenha alguma dúvida eu perguntarei aqui.
abrçs,
Elcids…
Adicionado por Elcids Chagas ao 14:23 em 4 janeiro 2022