ENC28J60 Destekleyen 4 Relay Kod (ÇALIŞIYOR)
  • Selam. Kod proje araştırmalarım esnasında bir rus arduino sitesinde yakaladığım ve enc 28j60 destekli 4 pin kumandalı kodu burada paylaşmak istiyorum. Otomatik olarak ip alıyor. Com penceresinden aldığınız ip görebilirsiniz. Ayrıca ip yazmanıza gerek yok.

    Kod üzerinde hiçbir değişiklik vs yapmadım. Dht11 ve MQ2 hali içinde çalışmalara başladım. Sitenin yöneticisine de bu şekli ile yollayabilirmisin şeklinde yorum yazdım :) Günlerdir kovalıyoruz, bir kere armut piş ağzıma düş diyelim. :)

    Teşekkürler.
    not: ethercard.h < taglarına almayı unutmayın, forumda normal konu içerisinde gözükmüyor >
    /*
    -----------------------
    Подключаємо піни "ENC28J60 Module" до Arduino Uno.
    VCC - 3.3V
    GND - GND
    SCK - Pin 13
    SO - Pin 12
    SI - Pin 11
    CS - Pin 10 Можна вибрати будь-який.
    ------------------
    */

    #include
    EtherCard.h
    // Подключаєм скачану бібліотеку. https://yadi.sk/d/R57sVoglbhTRN

    // MAC Address має бути унікальним у вашій мережі. Можна змінити.
    static byte mymac[] = {
    0x5A,0x5A,0x5A,0x5A,0x5A,0x5A };

    // ip статичний
    static byte myip[] = {
    192,168,1,222 };

    // Буфер, чим більше даних на Web сторінці, тим більше потрібне значення буфера.
    byte Ethernet::buffer[900];
    BufferFiller bfill;

    // Масив задіяних номерів пінів Arduino, для керування 4 реле.
    int LedPins[] = {
    2,3,4,5};

    // Масив для фіксації змін.
    boolean PinStatus[] = {
    1,2,3,4};

    //-------------

    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"
    "

    401 Unauthorized

    ";

    //------------

    // Робимо функцію для оформлення нашої Web сторінки.
    void homePage()
    {
    bfill.emit_p(PSTR("$F"
    "ArduinoPIN Webserver"
    "Relay 1: $F
    "
    "Relay 2: $F
    "
    "Relay 3: $F
    "
    "Relay 4: $F"),

    http_OK,
    PinStatus[1]?PSTR("off"):PSTR("on"),
    PinStatus[1]?PSTR("ON"):PSTR("OFF"),
    PinStatus[2]?PSTR("off"):PSTR("on"),
    PinStatus[2]?PSTR("ON"):PSTR("OFF"),
    PinStatus[3]?PSTR("off"):PSTR("on"),
    PinStatus[3]?PSTR("ON"):PSTR("OFF"),
    PinStatus[4]?PSTR("off"):PSTR("on"),
    PinStatus[4]?PSTR("ON"):PSTR("OFF"));
    }

    //------------------------



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

    // По замовчуванню в бібліотеці "ethercard" (CS-pin) = № 8.
    // if (ether.begin(sizeof Ethernet::buffer, mymac) == 0).
    // and change it to: Змінюємо (CS-pin) на 10.
    // if (ether.begin(sizeof Ethernet::buffer, mymac, 10) == 0).

    if (ether.begin(sizeof Ethernet::buffer, mymac,10) == 0);

    if (!ether.dhcpSetup());

    // Виводимо в Serial монітор IP адресу, яку нам автоматично присвоїв наш Router.
    // Динамічна IP адреса незручна, бо періодично змінюється.
    // Нам доведеться часто дізнаватися, яка адреса нашої Web сторінки.
    ether.printIp("My Router IP: ", ether.myip); // Виводимо в Serial монітор IP адресу, яку нам присвоїв Router.

    //Також ми можемо встановити статичну IP адресу нашої сторінки і звертатися до Arduino по ній

    //ether.staticSetup(myip);

    ether.printIp("My SET IP: ", ether.myip); // Виводимо в Serial монітор статичну IP адресу.
    //-----

    for(int i = 0; i <= 4; i++)<br /> {
    pinMode(LedPins[i],OUTPUT);
    digitalWrite (LedPins[i],HIGH);
    PinStatus[i]=false;
    }
    }

    // --------------------------------------

    void loop()
    {

    delay(1); // Смикаєм мікроконтролер.

    word len = ether.packetReceive(); // check for ethernet packet / перевірити ethernet пакети.
    word pos = ether.packetLoop(len); // check for tcp packet / перевірити TCP пакети.

    if (pos) {
    bfill = ether.tcpOffset();
    char *data = (char *) Ethernet::buffer + pos;
    if (strncmp("GET /", data, 5) != 0) {
    bfill.emit_p(http_Unauthorized);
    }


    else {

    data += 5;
    if (data[0] == ' ') {
    homePage(); // Return home page Якщо виявлено зміни на сторінці, запускаємо функцію.
    for (int i = 0; i <= 3; i++)digitalWrite(LedPins[i],!PinStatus[i+1]);<br /> }

    // "16" = кількість символів "?ArduinoPIN1=on ".
    else if (strncmp("?ArduinoPIN1=on ", data, 16) == 0) {
    PinStatus[1] = true;
    bfill.emit_p(http_Found);
    }
    else if (strncmp("?ArduinoPIN2=on ", data, 16) == 0) {
    PinStatus[2] = true;
    bfill.emit_p(http_Found);
    }
    else if (strncmp("?ArduinoPIN3=on ", data, 16) == 0) {
    PinStatus[3] = true;
    bfill.emit_p(http_Found);
    }
    else if (strncmp("?ArduinoPIN4=on ", data, 16) == 0) {
    PinStatus[4] = true;
    bfill.emit_p(http_Found);

    }


    //------------------------------------------------------


    else if (strncmp("?ArduinoPIN1=off ", data, 17) == 0) {
    PinStatus[1] = false;
    bfill.emit_p(http_Found);
    }
    else if (strncmp("?ArduinoPIN2=off ", data, 17) == 0) {
    PinStatus[2] = false;
    bfill.emit_p(http_Found);
    }
    else if (strncmp("?ArduinoPIN3=off ", data, 17) == 0) {
    PinStatus[3] = false;
    bfill.emit_p(http_Found);
    }
    else if (strncmp("?ArduinoPIN4=off ", data, 17) == 0) {
    PinStatus[4] = false;
    bfill.emit_p(http_Found);
    }



    //---------------------------


    else {
    // Page not found
    bfill.emit_p(http_Unauthorized);
    }
    }
    ether.httpServerReply(bfill.position()); // send http response
    }
    }




  • Demeeeeeeeee, armut pis ağzıma düş demeeeeeeee:)
  • :) Eyw hocam. Yarın akşam duman la sıcaklık biter :D

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook
Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.