INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino Ethernet Relay
26.06.2014, 19:10
Beitrag #1
Arduino Ethernet Relay
Hallo,

Ich habe ein Sketch mit dem ich zwei Türen öffne. Nun wollte ich es ein wenig ändern.

Derzeit schalte ich den 2 Kanal Relay einzeln ein und aus. Da jedes mal zuerst das Erste danach der Zweite Kanal geschalten wird dachte ich mir ich automatisiere es ein wenig.

Die Funktion sollte so ablaufen:

1. Kanal 1 wird eingeschalten und nach 5 Sekunden automatisch wieder ausgeschalten.
2. Nach 15 Sekunden der Einschaltung vom Kanal 1, sollte Kanal 2 auch eingeschalten werden und nach 5 Sekunden wieder ausgeschalten werden.

Mein derzeitiger Code
Code:
#include <EtherCard.h>

static byte mymac[] = { 0x00,0x01,0x01,0x01,0x01,0x01  };
static byte myip[] = { 192,168,0,15 };

#define BUFFER_SIZE   500
byte Ethernet::buffer[BUFFER_SIZE];
BufferFiller bfill;

#define CS_PIN       10

#define RELAIS_1     2
#define RELAIS_2     3
bool relais1Status = false;
bool relais2Status = false;

const char http_OK[] PROGMEM =
"HTTP/1.0 200 OK\r\n"
"Content-Type: text/html\r\n"
"Pragma: no-cache\r\n\r\n";

const char http_Found[] PROGMEM =
"HTTP/1.0 302 Found\r\n"
"Location: /\r\n\r\n";

const char http_Unauthorized[] PROGMEM =
"HTTP/1.0 401 Unauthorized\r\n"
"Content-Type: text/html\r\n\r\n"
"<h1>401 Unauthorized</h1>";

void homePage()
{
  bfill.emit_p(PSTR("$F"
    "<title>Arduino Door Webserver</title>"
    "<div>Door 1: <a href=\"?relais1=$F\">$F</a></div>"
    "<div>Door 2: <a href=\"?relais2=$F\">$F</a></div>"),
  http_OK,
  relais1Status?PSTR("off"):PSTR("on"),
  relais1Status?PSTR("<button>ON</button>"):PSTR("<button>OFF</button>"),
  relais2Status?PSTR("off"):PSTR("on"),
  relais2Status?PSTR("<button>ON</button>"):PSTR("<button>OFF</button>"));
}

void setup()
{
  Serial.begin(115200);  

  pinMode(RELAIS_1, OUTPUT);
  pinMode(RELAIS_2, OUTPUT);

  if (ether.begin(BUFFER_SIZE, mymac, CS_PIN) == 0)
    Serial.println("Cannot initialise ethernet.");
  else
    Serial.println("Ethernet initialised.");

  ether.staticSetup(myip);
    
  Serial.println("Setting up DHCP");
  if (!ether.dhcpSetup())
    Serial.println( "DHCP failed");
  
  ether.printIp("My IP: ", ether.myip);
  
  ether.printIp("GW IP: ", ether.gwip);
  ether.printIp("DNS IP: ", ether.dnsip);

}

void loop()
{
  digitalWrite(RELAIS_1, relais1Status);
  digitalWrite(RELAIS_2, relais2Status);

  delay(1);   // necessary for my system
  word len = ether.packetReceive();   // check for ethernet packet
  word pos = ether.packetLoop(len);   // check for tcp packet

  if (pos) {
    bfill = ether.tcpOffset();
    char *data = (char *) Ethernet::buffer + pos;
    if (strncmp("GET /", data, 5) != 0) {
      // Unsupported HTTP request
      // 304 or 501 response would be more appropriate
      bfill.emit_p(http_Unauthorized);
    }
    else {
      Serial.print("----");
      Serial.print(data);
      Serial.println("----");
      data += 5;

      if (data[0] == ' ') {
        // Return home page
        homePage();
      }
      else if (strncmp("?relais1=on ", data, 12) == 0) {
        relais1Status = true;        
        bfill.emit_p(http_Found);
      }
      else if (strncmp("?relais2=on ", data, 12) == 0) {
        relais2Status = true;        
        bfill.emit_p(http_Found);
      }
      else if (strncmp("?relais1=off ", data, 13) == 0) {
        relais1Status = false;        
        bfill.emit_p(http_Found);
      }
      else if (strncmp("?relais2=off ", data, 13) == 0) {
        relais2Status = false;        
        bfill.emit_p(http_Found);
      }
      else {
        // Page not found
        bfill.emit_p(http_Unauthorized);
      }
    }

    ether.httpServerReply(bfill.position());    // send http response
  }
}

Hab nicht viel am Hut mit C Programmierung und würde mich über ein wenig Hilfe bei der Umsetzung sehr freuen.

lg
karadayi
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Arduino UNO und Ethernet Shield 2 POE und Fritzbox 3272 tr3 2 162 19.11.2016 10:46
Letzter Beitrag: tr3
  Ethernet Modul Enc28j60 Pin13 LED Schalten BennIY 16 519 27.09.2016 20:30
Letzter Beitrag: BennIY
  Wo kann ich hier noch Code spahren? (SPI-,Ethernet-,SD-,GSM-Library) avoid 4 384 05.06.2016 14:16
Letzter Beitrag: avoid
  Daten per Ethernet Shield 2 senden Mark79 3 868 22.03.2016 19:29
Letzter Beitrag: Mark79
  array von Php --> Arduino zu senden (ethernet) Mourti 0 447 27.01.2016 22:11
Letzter Beitrag: Mourti
  Port B vom Arduino Ethernet einlesen magifix 0 353 08.01.2016 10:46
Letzter Beitrag: magifix
  BARCODE Abfrage über Ethernet Shield Wampo 3 795 05.12.2015 12:11
Letzter Beitrag: Wampo
  Probleme mit SPI - Ethernet und nRF24L01 itsy 35 2.983 21.11.2015 19:59
Letzter Beitrag: ardu_arne
  3 Bewegungsmelder, Lichtsensor und Relay Frage ! b3ta 25 1.628 15.11.2015 14:01
Letzter Beitrag: hotsystems
  Problem mit der Ethernet Library (client.connect) ardu_arne 3 653 06.10.2015 17:06
Letzter Beitrag: ardu_arne

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste