Go Down

Topic: Preciso de ajuda com alguns comandos POR FAVOR  (Read 3315 times) previous topic - next topic

edmorty55

Bom dia a todos, estou iniciando agora com Arduino e não tenho muito conhecimento com programação nem nada disso, mais estou me aperfeiçoando, juntando tudo e algumas lógicas eu já consegui fazer alguns projetos, portanto agora estou "travado" em um probleminha que não consigo resolver.
Eu estou usando ethernet shield, fiz uma página web para gerenciar meus projetos, do tipo ligar a tv e meu aparelho de som, já capturei todos os comandos dos controles com tais funções de liga/desliga etc... Todos funcionam perfeitamente, mas quando eu preparo todos eles no sketch pra poder acionar na página web, por exemplo: quero ligar a tv , depois quero ligar o som e ativar o modo aux do som já que ele está conectado ao computador, ai se eu apertar ligar a tv, ele não executa o comando que eu to mandando, as vezes ele executa 2 comandos de uma só vez do tipo ligar a tv e desligar o som, outro exemplo: eu aperto na página web para ativar o modo aux do som ai o sensor IR desliga a TV.....
Pessoal vou deixar imagem da minha página web e vou também citar as partes do código que eu to usando que com certeza algo está muito errado,obrigado a todos.

Code: [Select]

            client.println("HTTP/1.1 200 OK");
            client.println("Content-Type: text/html");
            client.println();
            client.println("<HTML>");
            client.println("<BODY>");
            client.println("<center><H3>Sistema de controle CASA</H3></center>");
            client.println("<br />");
            client.println("<H1>CONTROLE HOME THEATER</H1>");
            client.println("<hr />");
            client.println("<br />");
            client.println("<a href=\"/ligahome\">LIGA/DESLIGA - Home</a>");
            client.println("<br />");
            client.println("<br />");
            client.println("<a href=\"/?ligatv\">LIGA/DESLIGA - TV</a>");
            client.println("<br />");
            client.println("<br />");
            client.println("<a href=\"/?aux\">AUX</a>");
            client.println("<br />");
            client.println("<br />");
            client.println("<a href=\"/volumemais\">VOLUME +</a><br />");
            client.println("<br />");
            client.println("<a href=\"/volumemenos\">VOLUME -</a><br />");   
            client.println("<br />");
            client.println("<br />");
            client.println("<a href=\"/ligatudo\">LIGAR TV e HOME</a><br />");           
            client.println("<br />");
            client.println("<br />");
            client.println("<H1>CONTROLE DE LUZES</H1>");
            client.println("<hr />");
            client.println("<br />");
            client.println("<a href=\"/?rliga\">LIGAR LUZ</a><br />");
            client.println("<br />");
            client.println("<br />");
            client.println("<a href=\"/tv\">TV</a><br />");
            client.println("</BODY>");
            client.println("</HTML>");


Agora a parte dos comandos que o arduino tem que mandar para os aparelhos, tv e som.

Code: [Select]

             void ("ligatv"); {
              irsend.sendNEC(0x20DF10EF, 32);
              }
              void ("aux"); {
              irsend.sendNEC(0xDF9867, 32);
              }
              void ("volumemais"); {
              irsend.sendNEC(0xDF22DD, 32);
              }   
              void ("volumemenos"); {
              irsend.sendNEC(0xDFA25D, 32);
              }
              void ("ligatudo"); {
              irsend.sendNEC(0x20DF10EF, 32); // TV
              }
              void ("tv");{
              irsend.sendNEC(0x20DF10EF, 32); // TV
              }


Os comandos não estão tudo em ordem acima porque eu fiquei fuçando tentando achar um jeito de cada um funcionar adequadamente quando eu executar algum deles em especifico, já que está tudo sendo executado aleatório, eu aperto um comando na página web sai outro...

Foto a seguir da minha página web simples.

https://imgur.com/btJbbPJ

hugo007

#1
Dec 02, 2019, 06:50 pm Last Edit: Dec 02, 2019, 06:50 pm by hugo007
Quote
void ("ligatv"); {
              irsend.sendNEC(0x20DF10EF, 32);
              }
Boas,
Não mostras como na tua pagina interpretas o que estas a passar por GET para no final acionares a tua função.

A tua função está mal declarada...
O correcto será:
Code: [Select]

void ligatv()
{
     irsend.sendNEC(0x20DF10EF, 32);
}
Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B

edmorty55

#2
Dec 02, 2019, 07:20 pm Last Edit: Dec 02, 2019, 07:21 pm by edmorty55
Poderia me ajudar a corrigir esse código amigo? Preciso muito e não tenho ideia de como fazer

hugo007

Como?
Não disponibilizas o código todo ...
De qualquer modo ja te demonstrei como deves ter as funções criadas.Tenta
Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B

edmorty55

Como?
Não disponibilizas o código todo ...
De qualquer modo ja te demonstrei como deves ter as funções criadas.Tenta
Olá amigo, gostaria de tirar mais uma dúvida com você e agradecer imensamente pela ajuda que já me deu ao citar a função correta, veja como ficou as partes

Primeira parte:
Code: [Select]

if (readString.indexOf("?tv") > 0) //checks for on
          {
            ligatv();
            Serial.println("LIGADO");
          }
          else {
            if (readString.indexOf("?home") > 0) //checks for off
            {
              ligahome();
              Serial.println("LIGADO");
            }
          }

          if (readString.indexOf("?ligatudo") > 0) //checks for on
          {
            ligatudo();
            Serial.println("LIGADO");
          }
          else {
            if (readString.indexOf("?aux") > 0) //checks for off
            {
              aux();
              Serial.println("LIGADO");
            }
          }

          if (readString.indexOf("?volmais") > 0) //checks for on
          {
            volmais();
            Serial.println("LIGADO");
          }
          else {
            if (readString.indexOf("?volmenos") > 0) //checks for off
            {
              volmenos();
              Serial.println("LIGADO");
            }
          }
          readString = "";


HTML, só to colocando a parte que faz a função que eu citei no primeiro post
Code: [Select]

          client.println("<a href=\"/?home\">LIGA/DESLIGA - Home</a>");
          client.println("<br />");
          client.println("<br />");
          client.println("<a href=\"/?tv\">LIGA/DESLIGA - TV</a>");
          client.println("<br />");
          client.println("<br />");
          client.println("<a href=\"/?ligatudo\">LIGA TUDO</a>");
          client.println("<br />");
          client.println("<br />");
          client.println("<a href=\"/?aux\">AUX</a>");
          client.println("<br />");
          client.println("<br />");
          client.println("<a href=\"/?volmais\">VOLUME +</a><br />");
          client.println("<br />");
          client.println("<a href=\"/?volmenos\">VOLUME -</a><br />");


Terceira parte que é a que o amigo me ajudou a corrigir

Code: [Select]

void ligatv() {
  irsend.sendNEC(0x20DF10EF, 32);
}
void ligahome() {
  irsend.sendNEC(0xDF30CF, 32);
}
void ligatudo() {
  irsend.sendNEC(0x20DF10EF, 32); //TV
  delay(1000);
  irsend.sendNEC(0xDF30CF, 32); //HOME
  delay(4000);
  irsend.sendNEC(0xDF9867, 32); //AUX
}

void aux() {
  irsend.sendNEC(0xDF9867, 32);
}
void volmais() {
  irsend.sendNEC(0xDF22DD, 32); //TV
}
void volmenos() {
  irsend.sendNEC(0xDFA25D, 32);
}


Observe que nesse void ligatudo(), nele eu pretendo ligar a tv, 1 segundo depois ligar o som e 4 segundos depois ativar o modo auxiliar do som, está funcionando, porém de forma diferente do que eu imaginei, quando aperto a função ligatudo na página web, tudo é ligado do jeito que eu to pedindo ai e depois tudo é desligado e em seguida tudo ligado mais uma vez, até da certo mais faz o void repetir 2 vezes

hugo007

Quote
até da certo mais faz o void repetir 2 vezes
Se colocares um  Serial.println vez ele a escrever duas vezes na consola?
Code: [Select]

void ligatudo() {

  Serial.println("Iniciando a sequencia ");//debug only

  irsend.sendNEC(0x20DF10EF, 32); //TV
  delay(1000);
  irsend.sendNEC(0xDF30CF, 32); //HOME
  delay(4000);
  irsend.sendNEC(0xDF9867, 32); //AUX
}

Se sim é porque isto:
 if (readString.indexOf("?ligatudo") > 0) //checks for on
esta a ser interpretado duas vezes, o que pode significar que tens de arranjar uma forma mais eficiente.
Testa e reporta o que aconteceu
Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B

edmorty55

#6
Dec 03, 2019, 06:28 pm Last Edit: Dec 03, 2019, 07:00 pm by edmorty55
Se colocares um  Serial.println vez ele a escrever duas vezes na consola?
Code: [Select]

void ligatudo() {

  Serial.println("Iniciando a sequencia ");//debug only

  irsend.sendNEC(0x20DF10EF, 32); //TV
  delay(1000);
  irsend.sendNEC(0xDF30CF, 32); //HOME
  delay(4000);
  irsend.sendNEC(0xDF9867, 32); //AUX
}

Se sim é porque isto:
 if (readString.indexOf("?ligatudo") > 0) //checks for on
esta a ser interpretado duas vezes, o que pode significar que tens de arranjar uma forma mais eficiente.
Testa e reporta o que aconteceu

Boa tarde, no monitor serial aparece isso quando eu executo a função
Code: [Select]

Iniciando a sequencia
LIGADO

GG
EGE
TGET
 GET
/GET /
?GET /?
lGET /?l
iGET /?li
gGET /?lig
aGET /?liga
tGET /?ligat
uGET /?ligatu
dGET /?ligatud
oGET /?ligatudo
 GET /?ligatudo
HGET /?ligatudo H
TGET /?ligatudo HT
TGET /?ligatudo HTT
PGET /?ligatudo HTTP
/GET /?ligatudo HTTP/
1GET /?ligatudo HTTP/1
.GET /?ligatudo HTTP/1.
1GET /?ligatudo HTTP/1.1

GET /?ligatudo HTTP/1.1


Iniciando a sequencia
LIGADO

GG
EGE
TGET
 GET
/GET /
?GET /?
lGET /?l
iGET /?li
gGET /?lig
aGET /?liga
tGET /?ligat
uGET /?ligatu
dGET /?ligatud
oGET /?ligatudo
 GET /?ligatudo
HGET /?ligatudo H
TGET /?ligatudo HT
TGET /?ligatudo HTT
PGET /?ligatudo HTTP
/GET /?ligatudo HTTP/
1GET /?ligatudo HTTP/1
.GET /?ligatudo HTTP/1.
1GET /?ligatudo HTTP/1.1

GET /?ligatudo HTTP/1.1


Iniciando a sequencia
LIGADO

GG
EGE
TGET
 GET
/GET /
fGET /f
aGET /fa
vGET /fav
iGET /favi
cGET /favic
oGET /favico
nGET /favicon
.GET /favicon.
iGET /favicon.i
cGET /favicon.ic
oGET /favicon.ico
 GET /favicon.ico
HGET /favicon.ico H
TGET /favicon.ico HT
TGET /favicon.ico HTT
PGET /favicon.ico HTTP
/GET /favicon.ico HTTP/
1GET /favicon.ico HTTP/1
.GET /favicon.ico HTTP/1.
1GET /favicon.ico HTTP/1.1

GET /favicon.ico HTTP/1.1





hugo007

Coloca todo o código, só com isso não da para entender o fluxo que o programa está a tomar.
Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B

edmorty55

Coloca todo o código, só com isso não da para entender o fluxo que o programa está a tomar.

Essa parte do código que se refere a led, são 2 fitas rgb que tem no quarto, tem um microfone que escuta a música e as fitas se iluminam com as batidas do som.

Pode conter comentários que não fazem sentido aí mais é que eu não tenho total conhecimento de tudo.

Go Up