13 Ekim 2014 Pazartesi

Arduino ile İnternet Üzerinden Led Kontrolü


Bir önceki çalışmamızda  oluşturduğumuz web server üzerine  arduino analog pinlerinin değerlerini yazmıştık. Yani sadece sayfa üzerine veri yazdırdık.

Bu çalışmamızda hem sayfaya veri yazdıracağız hemde sayfadaki komuta göre arduino üzerine takdığımız ledi kontrol edeceğiz.

Aşağıdaki kod üzerinde gerekli açıklamalar mevcut. Bu linkten çalışma videosunu izleyebilirsiniz.

Çalışma kaynak kodu:


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

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 1, 177); // yerel ağ bağlantısına göre değiştirilmesi gereken ip adresi
EthernetServer server(80);

String HTTP_req;        
boolean led_durum = 0; // ledin ON yada OFF olduğunu tutan değişken

int led=8; // ledin bağlanacağı arduino pini

void setup()
{
    Ethernet.begin(mac, ip);  
    server.begin();           
    Serial.begin(9600);       
    
    pinMode(led,OUTPUT);
}

void loop()
{
    EthernetClient net_alc = server.available();  

    if (net_alc) {  
        boolean satir_kontrol = true;
        while (net_alc.connected()) {
            if (net_alc.available()) {  
                char c = net_alc.read(); 
                HTTP_req += c;  
                
                if (c == '\n' && satir_kontrol) {
                   
                  // Alttaki satrlar HTML programlama ile ilgilidir. 
                  // HTML kaynak kodlarına bakmanızda fayda var.
                    net_alc.println("HTTP/1.1 200 OK");
                    net_alc.println("Content-Type: text/html");
                    net_alc.println("Connection: close");
                    net_alc.println();                    
                    net_alc.println("<!DOCTYPE html>");
                    net_alc.println("<html>");
                    net_alc.println("<head>");
                    net_alc.println("<title>Arduino Internet Led Kontrol</title>");
                    net_alc.println("</head>");
                    net_alc.println("<body>");
                    net_alc.println("<h1>ADUINO ILE INTERNET UZERINDEN LED YAKIP SONDURME</h1>");
                    net_alc.println("<p>Ledi acip kapatmak icin kutucuga tiklayiniz.</p>");
                    net_alc.println("<form method=\"get\">");
                    LedKontrol(net_alc);
                    net_alc.println("<p>Blogu ziyaret ediniz:</p>");
                    net_alc.println("<div style=\"font-size:25px;\">golmuhendis.blogspot.com.tr</div>");
                    net_alc.println("</form>");
                    net_alc.println("</body>");
                    net_alc.println("</html>");
                    Serial.print(HTTP_req);
                    HTTP_req = "";    
                    break;
                }
                
                if (c == '\n') {
                    
                    satir_kontrol = true;
                } 
                else if (c != '\r') {
                   
                    satir_kontrol = false;
                }
            } 
        } 
        delay(1);     
        net_alc.stop(); 
    } 
}

void LedKontrol(EthernetClient deger)
{
    if (HTTP_req.indexOf("LED=1") > -1) {  
      
        if (led_durum) {
            led_durum = 0;
        }
        else {
            led_durum = 1;
        }
    }
    
    if (led_durum) {    
        digitalWrite(led, HIGH);
        deger.println("<input type=\"radio\" name=\"LED\" value=\"1\" \
        onclick=\"submit();\" checked>LED");
    }
    else {              
        digitalWrite(led, LOW);        
        deger.println("<input type=\"radio\" name=\"LED\" value=\"1\" \
        onclick=\"submit();\">LED");
    }
       
}





1 yorum:

  1. Güzel bir pylaşım olmuş
    Arduino ile artık gömülü sistemler tamamen insanların hizmetine sunulmuş vaziyette.Bunun yanı sıra beaglebone,raspberry pi hatta intel galileo ile daha birçok firma da pazara karşı kayıtsız kalmadı ve seçeneklerimiz inanılmaz derecede genişledi

    http://elektro-blogger.blogspot.com.tr

    YanıtlaSil