Ajuda para adicionar mais botões em Arduino

Bom Dia

Seguindo estes códigos abaixo ( alex.php o codigo arduinocodigo.txt ) Estes cogidos estão funcionando corretamente. porem ele só tem 6 botoes, eu preciso adicionar mais botoes e compramos já uma Arduíno com mais entradas.

Em anexo contem o arquivo alex10.php e codigo 10 botoes arduino qual estamos tentando deixar rodando porem este código quando eu passo no arduino ela passa normalmente, mas quando vou carregar a internet com ip e clico no arquivo ele demora demora e demora e nisso percebo que no xampp a porta do apache fica alta e nao carrega mais nada.

Lembrando que código acima postado funciona normalmente

A pergunta fica aonde esta problema e como adicionar mais botoes.

alex.php (4.41 KB)

ArduinoCodigo.txt (2.22 KB)

Codigo10Botoes Arduino.txt (2.63 KB)

alex10.php (2.41 KB)

Importas-te de fazer copy paste do codigo de 10 botoes?
colcaste algum Serial Print para determinar onde estava o problema?

Muito obrigado pela resposta.

Acabei estudando e olha só os códigos.

Código do Arduíno abaixo Eu preciso de 10 botoes meu arduino tem 15 entradas, preciso só usar 10 botoes


#include <SPI.h>
#include <Ethernet.h>

//Configurações do Ethernet Shield
byte mac = { 0x90, 0xA2, 0xDA, 0x00, 0x9B, 0x36 };
byte ip = { 192,168,1, 100 }; // ip que o arduino assumirá
byte gateway = { 192,168,1, 1 }; // ip do roteador
byte subnet = { 255, 255, 255, 0 };

// String que representa o estado dos dispositivos
char Luz[7] = “0000L#”;

EthernetServer server(8383); // Cria o servidor na porta 8081

// String onde é guardada as msgs recebidas
char msg[7] = “0000L#”;

void setup() {
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
pinMode(A0,OUTPUT);
pinMode(A1,OUTPUT);
pinMode(A2,OUTPUT);
pinMode(A3,OUTPUT);
pinMode(A4,OUTPUT);
pinMode(A5,OUTPUT);
pinMode(A6,OUTPUT);
pinMode(A7,OUTPUT);
pinMode(A8,OUTPUT);
pinMode(A9,OUTPUT);
pinMode(A10,OUTPUT);
pinMode(A11,OUTPUT);
pinMode(A12,OUTPUT);
pinMode(A13,OUTPUT);

}

void loop() {
EthernetClient client = server.available();
// 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(1,HIGH);
delay(1000);
digitalWrite(1,LOW);
break;
case ‘G’:
// Caso G#, aciona o pino do portão pequeno por 1s.
digitalWrite(1,HIGH);
delay(1000);
digitalWrite(1,LOW);
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(0,HIGH); else digitalWrite(0,LOW);
if (Luz[1]==‘1’) digitalWrite(1,HIGH); else digitalWrite(1,LOW);
if (Luz[2]==‘1’) digitalWrite(2,HIGH); else digitalWrite(2,LOW);
if (Luz[3]==‘1’) digitalWrite(3,HIGH); else digitalWrite(3,LOW);

break;

}
}
}
}


Código PHP

Pagina html com PHP

AUTOMAÇÃO RESIDENCIAL GRUPO UNIÃO DIET

HOBART DO BRASIL

<?php $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); // Se conecta ao IP e Porta: socket_connect($sock,"192.168.1.100", 8383);

// Executa a ação correspondente ao botão apertado.
if(isset($_POST[‘bits’])) {
$msg = $_POST[‘bits’];
if(isset($_POST[‘Sala’ ])){ 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[‘Cozinha’ ])){ if($msg[3]==‘1’) { $msg[3]=‘0’; } else { $msg[3]=‘1’; }}
if(isset($_POST[‘Jardim’ ])){ if($msg[4]==‘1’) { $msg[4]=‘0’; } else { $msg[4]=‘1’; }}
if(isset($_POST[‘Garagem’ ])){ if($msg[5]==‘1’) { $msg[5]=‘0’; } else { $msg[5]=‘1’; }}
if(isset($_POST[‘Abre Portao’ ])){ if($msg[6]==‘1’) { $msg[6]=‘0’; } else { $msg[6]=‘1’; }}
if(isset($_POST[‘Fecha Portao’ ])){ if($msg[7]==‘1’) { $msg[7]=‘0’; } else { $msg[7]=‘1’; }}
if(isset($_POST[‘Ar-cond’ ])){ if($msg[8]==‘1’) { $msg[8]=‘0’; } else { $msg[8]=‘1’; }}
if(isset($_POST[‘Alarme’ ])){ if($msg[9]==‘1’) { $msg[9]=‘0’; } else { $msg[9]=‘1’; }}
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”;
if ($status[4]==‘0’) $cor5 = “lightcoral”;
else $cor5 = “lightgreen”;
if ($status[5]==‘0’) $cor6 = “lightcoral”;
else $cor6 = “lightgreen”;
if ($status[6]==‘0’) $cor7 = “lightcoral”;
else $cor7 = “lightgreen”;
if ($status[7]==‘0’) $cor8 = “lightcoral”;
else $cor8 = “lightgreen”;
if ($status[8]==‘0’) $cor9 = “lightcoral”;
else $cor8 = “lightgreen”;
if ($status[9]==‘0’) $cor10 = “lightcoral”;
else $cor8 = “lightgreen”;
if ($status[10]==‘0’) $cor11 = “lightcoral”;
else $cor11 = “lightgreen”;

echo “<form method =“post” action=“PaginaPHP.php”>”;
echo “<input type=“hidden” name=“bits” value=”$status">";
echo "<button style=“width:70; background-color: $cor1 ;font: bold 14px Arial” type = “Submit” Name = “Sala”>Sala

";
echo "<button style=“width:70; background-color: $cor2 ;font: bold 14px Arial” type = “Submit” Name = “Quarto1”>Quarto1

";
echo "<button style=“width:70; background-color: $cor3 ;font: bold 14px Arial” type = “Submit” Name = “Quarto2”>Quarto2

";
echo "<button style=“width:70; background-color: $cor4 ;font: bold 14px Arial” type = “Submit” Name = “Cozinha”>Cozinha

";
echo "<button style=“width:70; background-color: $cor5 ;font: bold 14px Arial” type = “Submit” Name = “Jardim”>Jardim

";
echo "<button style=“width:70; background-color: $cor6 ;font: bold 14px Arial” type = “Submit” Name = “Garagem”>Garagem

";
echo "<button style=“width:70; background-color: $cor7 ;font: bold 14px Arial” type = “Submit” Name = “Abre Portao”>Abre Portão

";
echo "<button style=“width:70; background-color: $cor8 ;font: bold 14px Arial” type = “Submit” Name = “Fecha portao”>Fecha Portão

";
echo "<button style=“width:70; background-color: $cor9 ;font: bold 14px Arial” type = “Submit” Name = “Ar-Cond”>Ar-cond

";
echo "<button style=“width:70; background-color: $cor10 ;font: bold 14px Arial” type = “Submit” Name = “Alarme”>Alarme

";

}
// Caso ele não receba o status corretamente, avisa erro.
else { echo “Falha ao receber status da casa.”; }
socket_close($sock);
?>


Quando eu executo esse código

Notice: Uninitialized string offset: 6 in C:\xampp\htdocs\PaginaPHP.php on line 49

Notice: Uninitialized string offset: 7 in C:\xampp\htdocs\PaginaPHP.php on line 51

Notice: Uninitialized string offset: 8 in C:\xampp\htdocs\PaginaPHP.php on line 53

Notice: Uninitialized string offset: 9 in C:\xampp\htdocs\PaginaPHP.php on line 55

Notice: Uninitialized string offset: 10 in C:\xampp\htdocs\PaginaPHP.php on line 57

Notice: Undefined variable: cor9 in C:\xampp\htdocs\PaginaPHP.php on line 70
Ar-cond

Notice: Undefined variable: cor10 in C:\xampp\htdocs\PaginaPHP.php on line 71

Tu fazes string parsing da mensagem... Mas apenas lês um caracter... Não será melhor esperar por uma mensagem completa?

O php envia 9 bytes... O arduino lê 7...

Procura pela função client.available() e muda a forma como recebes as mensagens.