• 02-04-2018, 01:35:06
    #1
    merhaba arkadaşlar

    kardeşimin ödevi var lamba yakıp söndürmek için otomasyon sistemi yapın demişler

    bende nette araştırdım böyle bir kod buldum

    zaman ayarlaması yapamadım bilgimde yok yardımcı olmanız mümkünmü

    sadece zaman eklenecek role arası atıyorum on yapınca 5 saniye sonra off'a geçsin gibi


    teşekkürler iyi forumlar
    /* 
     -----------------------
     Подключаємо піни "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"
    "<h1>401 Unauthorized</h1>";
    
    //------------
    
    // Робимо функцію для оформлення нашої Web сторінки. 
    void homePage()
    {
      bfill.emit_p(PSTR("$F"
        "<title>ArduinoPIN Webserver</title>" 
        "Relay 1: <a href=\"?ArduinoPIN1=$F\">$F</a><br />"
        "Relay 2: <a href=\"?ArduinoPIN2=$F\">$F</a><br />"  
        "Relay 3: <a href=\"?ArduinoPIN3=$F\">$F</a><br />"
        "Relay 4: <a href=\"?ArduinoPIN4=$F\">$F</a>"),   
    
      http_OK,
      PinStatus[1]?PSTR("off"):PSTR("on"),
      PinStatus[1]?PSTR("<font color=\"green\"><b>ON</b></font>"):PSTR("<font color=\"red\">OFF</font>"),
      PinStatus[2]?PSTR("off"):PSTR("on"),
      PinStatus[2]?PSTR("<font color=\"green\"><b>ON</b></font>"):PSTR("<font color=\"red\">OFF</font>"),
      PinStatus[3]?PSTR("off"):PSTR("on"),
      PinStatus[3]?PSTR("<font color=\"green\"><b>ON</b></font>"):PSTR("<font color=\"red\">OFF</font>"),
      PinStatus[4]?PSTR("off"):PSTR("on"),
      PinStatus[4]?PSTR("<font color=\"green\"><b>ON</b></font>"):PSTR("<font color=\"red\">OFF</font>"));
    }
    
    //------------------------
    
    
    
    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++)
      {
        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]);
          }
    
          // "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
      }
    }
  • 02-04-2018, 07:39:32
    #2
    Developer
    Selamlar,
    Aşağıdaki kodu
    for (int i = 0; i <= 3; i++)digitalWrite(LedPins[i],!PinStatus[i+1]);
    Şu şekilde değiştirin...
    for (int i = 0; i <= 3; i++){
        digitalWrite(LedPins[i],!PinStatus[i+1]);
    
    
        // 5 saniye yansın ve sönsün
        if(PinStatus[i+1] == true){
            delay(5000); // 5 saniye
            PinStatus[i+1] = false; // lambamizi sonduruyoruz
            digitalWrite(LedPins[i],!PinStatus[i+1]); // relay a digital pin araciligiyla gonderiyoruz
        }
        // 5 saniye yansın ve sönsün bitti
    }
  • 02-04-2018, 20:03:06
    #3
    selamlar öncelikle teşekkürler işten yeni geldim şimdi gördüm saolun

    dediğiniz gibi yaptım başka satırlar hata veriyor beceremedim bi türlü

    değişmiş hali le paylaşmanız mümkünmü acaba
  • 02-04-2018, 21:39:44
    #4
    Developer
    RadloF adlı üyeden alıntı: mesajı görüntüle
    selamlar öncelikle teşekkürler işten yeni geldim şimdi gördüm saolun

    dediğiniz gibi yaptım başka satırlar hata veriyor beceremedim bi türlü

    değişmiş hali le paylaşmanız mümkünmü acaba
    Selamlar,
    ENC28J60 ethernet modülünüz var değil mi?
    Muhtemelen kütüphaneyi eklemediniz
    https://github.com/jcw/ethercard/archive/master.zip indirip taslak > library > zip şeklinde bu kütüphaneyi ekleyebilirsiniz.
    Kodlarda bir sorun görünmüyor verdiği hatayı burada paylaşırsanız göz atarım.

    /* 
     -----------------------
     Подключаємо піни "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"
    "<h1>401 Unauthorized</h1>";
     
    //------------
     
    // Робимо функцію для оформлення нашої Web сторінки. 
    void homePage()
    {
      bfill.emit_p(PSTR("$F"
        "<title>ArduinoPIN Webserver</title>" 
        "Relay 1: <a href=\"?ArduinoPIN1=$F\">$F</a><br />"
        "Relay 2: <a href=\"?ArduinoPIN2=$F\">$F</a><br />"  
        "Relay 3: <a href=\"?ArduinoPIN3=$F\">$F</a><br />"
        "Relay 4: <a href=\"?ArduinoPIN4=$F\">$F</a>"),   
     
      http_OK,
      PinStatus[1]?PSTR("off"):PSTR("on"),
      PinStatus[1]?PSTR("<font color=\"green\"><b>ON</b></font>"):PSTR("<font color=\"red\">OFF</font>"),
      PinStatus[2]?PSTR("off"):PSTR("on"),
      PinStatus[2]?PSTR("<font color=\"green\"><b>ON</b></font>"):PSTR("<font color=\"red\">OFF</font>"),
      PinStatus[3]?PSTR("off"):PSTR("on"),
      PinStatus[3]?PSTR("<font color=\"green\"><b>ON</b></font>"):PSTR("<font color=\"red\">OFF</font>"),
      PinStatus[4]?PSTR("off"):PSTR("on"),
      PinStatus[4]?PSTR("<font color=\"green\"><b>ON</b></font>"):PSTR("<font color=\"red\">OFF</font>"));
    }
     
    //------------------------
     
     
     
    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 ix = 0; ix <= 4; ix++)
      {
        pinMode(LedPins[ix],OUTPUT); 
        digitalWrite (LedPins[ix],HIGH);
        PinStatus[ix]=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]);
             
             
                // 5 saniye yansın ve sönsün
                if(PinStatus[i+1] == true){
                    delay(5000); // 5 saniye
                    PinStatus[i+1] = false; // lambamizi sonduruyoruz
                    digitalWrite(LedPins[i],!PinStatus[i+1]); // relay a digital pin araciligiyla gonderiyoruz
                }
                // 5 saniye yansın ve sönsün bitti
            }
          }
     
          // "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
      }
    }