collapse

* Links de Robótica

* Posts Recentes

Ajuda com TRIAC por senso
[Ontem às 18:00]


TV LG White Screen por almamater
[15 de Novembro de 2017, 08:37]


Pergunta sobre prototipagem ( Pesquisa ) por luisjustin
[14 de Novembro de 2017, 23:22]


Medir Agua que está no Poço por Njay
[14 de Novembro de 2017, 13:28]


Amplificador audio por beirao
[12 de Novembro de 2017, 23:43]


Power_OK Enermax por edeweld
[12 de Novembro de 2017, 17:15]


Driver motor por beirao
[11 de Novembro de 2017, 17:40]


Preciso de uma fonte de corrente constante ? por samc
[09 de Novembro de 2017, 14:18]


Pressoestato 0-10V por artur36
[07 de Novembro de 2017, 23:22]


Ideias para construir um quadrúpede simples por Njay
[07 de Novembro de 2017, 18:39]

Autor Tópico: Controlo de relays atraves da rede (com shield ENC28J60)  (Lida 1522 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline poliveira1978

  • Mini Robot
  • *
  • Mensagens: 333
Controlo de relays atraves da rede (com shield ENC28J60)
« em: 19 de Setembro de 2011, 22:49 »
Alterações ao código, deixa de haver entradas estáticas no código, é tudo gerado com um ciclo de 2 a maxrelays +2 (o relay 0 corresponde ao pino 2, para não interferir com o tx e rx do arduino):   
Código: [Seleccione]
 
#include "etherShield.h"
#include "ETHER_28J60.h"
#include <stdio.h>

static uint8_t mac[6] = {0x54, 0x55, 0x58, 0x10, 0x00, 0x24};
static uint8_t ip[4] = {xxx, xxx, xxx, xxx}; //alterar para um ip válido na LAN
static uint16_t port = 80;

ETHER_28J60 e;
#define maxrelays 8

void setup()
{
  e.setup(mac, ip, port);
  for(int(relay)=2;relay<(maxrelays+2);relay++)
  {
    pinMode(relay,OUTPUT);
    digitalWrite(relay,HIGH); //o relay desliga com o pino HIGH
  }
}

void loop()
{
  char* params;
  while (params = e.serviceRequest())
  {
    e.print("<html><head><title>Web Controlled Relays</title></head><body><table  border=\"1\" width=\"20%\"><tr><td>Relay</td><td>Status</td>");
    for(int(relay)=2;relay<(maxrelays+2);relay++)
    {
      char resp[3];
      sprintf(resp, "%s%d","?", relay); // "?" -> string; relay -> inteiro
      if (strcmp(params,resp) == 0) digitalWrite(relay,!digitalRead(relay));
      if (strcmp(params,"?allon") == 0) for (int(relay)=2;relay<maxrelays+2;relay++) digitalWrite(relay,LOW);
      if (strcmp(params,"?alloff") == 0) for (int(relay)=2;relay<maxrelays+2;relay++) digitalWrite(relay,HIGH);
      e.print("<tr><td>");
      e.print(relay);
      e.print("</td><td><a href=?");
      e.print(relay);
      e.print(">");
      if (digitalRead(relay)==LOW) e.print("ON");
      if (digitalRead(relay)==HIGH) e.print("OFF");
      e.print("</a></td></tr>");     
    }
    e.print("</table><br><a href=\"?allon\">All On</a><br><a href=\"?alloff\">All Off</a></body></html>");
    e.respond();
  }
}
« Última modificação: 09 de Outubro de 2011, 17:20 por poliveira1978 »