Ynt: Ynt: arduino webserver "epic fail" hatası

Başlatan Emre MERMİ, 26 Nisan 2015, 16:25:07

Emre MERMİ

merhaba arkadaşlar,

Coşkun hocamın kitabındaki webserver uygulaması üzerinde değişiklik yaptım aynı şekilde birkaç tane daha çıkış ekledim ama 3. çıkıştan sonraki çıkışlarda hep "epic fail" hatası aldım başka pinleri denedim olmadı ne yaptıysam olmadı. ne yapabilirim yardımcı olur musunuz ? Şimdiden teşekkürler.

kodlar;
/*
  Arduino ile Basit bir Web Sunucusu 
  Web sunucusuna gönderilen istekler ile 2 adet LED kontrol ediliyor.
  
  8 ve 9 nolu dijital pinlere 2 Adet LED Bağlı (470 Ohm'luk dirençler ile)
    
  Arduino Ethernet Eklentisi ve WebDuino kütüphanesi kullanılmıştır.
  WebDuino Kütüphanesi: [url]https://github.com/sirleech/Webduino[/url]
*/

#include "SPI.h"
#include "Ethernet.h"
#include "WebServer.h"
#include "AFMotor.h"


#define LED1 6
#define LED2 7
#define FAN1 8
#define FAN2 9
static uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
boolean LED1Durum = false;
boolean LED2Durum = false;
boolean FAN1Durum = false;
boolean FAN2Durum = false;
boolean a = 0;
boolean b = 0;
boolean c = 0;
boolean d = 0;
AF_DCMotor motor4(4);
AF_DCMotor motor3(3);
AF_DCMotor motor2(2);
AF_DCMotor motor1(1);


static uint8_t ip[] = { 192, 168, 1, 188 };

/* Bir webserver nesnesi oluşturuyoruz.
Bütün gelen dosya istekleri kök dizin olarak görülmesi için
önek bölümünü boş bırakıyoruz. Bütün istekler
http://webserver-adresi/dosya-adi şeklinde gelecek.  */

#define ONEK ""
WebServer webserver(ONEK, 80);

/* Ana sayfa isteği geldiğinde çağırılacak fonksiyon */
void anaSayfa(WebServer &server, WebServer::ConnectionType baglantiTipi, char *, bool)
{

  server.httpSuccess();

  if (baglantiTipi != WebServer::HEAD)
  {
    LEDdurumlariniGoster(server);
  }
}

void led1AcKomut(WebServer &server, WebServer::ConnectionType type, char *, bool)
{
  server.httpSuccess();

  if (type != WebServer::HEAD)
  {
    digitalWrite(LED1,HIGH);
    LEDdurumlariniGoster(server);
  }
}

void led1KapatKomut(WebServer &server, WebServer::ConnectionType type, char *, bool)
{
  server.httpSuccess();

  if (type != WebServer::HEAD)
  {
    digitalWrite(LED1,LOW);   
    LEDdurumlariniGoster(server);
  }
}

void led2AcKomut(WebServer &server, WebServer::ConnectionType type, char *, bool)
{
  server.httpSuccess();

  if (type != WebServer::HEAD)
  {
     digitalWrite(LED2,HIGH);    
     LEDdurumlariniGoster(server);
  }
}

void led2KapatKomut(WebServer &server, WebServer::ConnectionType type, char * , bool)
{
  server.httpSuccess();

  if (type != WebServer::HEAD)
  {
    digitalWrite(LED2,LOW);
    LEDdurumlariniGoster(server);
  }
}

void FAN1AcKomut(WebServer &server, WebServer::ConnectionType type, char *, bool)
{
  server.httpSuccess();

  if (type != WebServer::HEAD)
  {
     digitalWrite(FAN1,HIGH);    
     LEDdurumlariniGoster(server);
  }
}

void FAN1KapatKomut(WebServer &server, WebServer::ConnectionType type, char * , bool)
{
  server.httpSuccess();

  if (type != WebServer::HEAD)
  {
    digitalWrite(FAN1,LOW);
    LEDdurumlariniGoster(server);
  }
}

void FAN2AcKomut(WebServer &server, WebServer::ConnectionType type, char *, bool)
{
  server.httpSuccess();

  if (type != WebServer::HEAD)
  {
    digitalWrite(FAN2,HIGH);
    LEDdurumlariniGoster(server);
  }
}

void FAN2KapatKomut(WebServer &server, WebServer::ConnectionType type, char *, bool)
{
  server.httpSuccess();

  if (type != WebServer::HEAD)
  {
    digitalWrite(FAN2,LOW);   
    LEDdurumlariniGoster(server);
  }
}

void MOTOR1AcKomut(WebServer &server, WebServer::ConnectionType type, char *, bool)
{
  server.httpSuccess();

  if (type != WebServer::HEAD)
  {
     motor1.run(FORWARD);
     a=1;
    LEDdurumlariniGoster(server);
  }
}

void MOTOR1KapatKomut(WebServer &server, WebServer::ConnectionType type, char *, bool)
{
  server.httpSuccess();

  if (type != WebServer::HEAD)
  {
    motor1.run(RELEASE);  
   a=0; 
    LEDdurumlariniGoster(server);
  }
}

void MOTOR2AcKomut(WebServer &server, WebServer::ConnectionType type, char *, bool)
{
  server.httpSuccess();

  if (type != WebServer::HEAD)
  {
     motor2.run(FORWARD);
     b=1;
    LEDdurumlariniGoster(server);
  }
}

void MOTOR2KapatKomut(WebServer &server, WebServer::ConnectionType type, char *, bool)
{
  server.httpSuccess();

  if (type != WebServer::HEAD)
  {
    motor2.run(RELEASE);  
   c=0; 
    LEDdurumlariniGoster(server);
  }
}

void MOTOR3AcKomut(WebServer &server, WebServer::ConnectionType type, char *, bool)
{
  server.httpSuccess();

  if (type != WebServer::HEAD)
  {
     motor3.run(FORWARD);
     c=1;
    LEDdurumlariniGoster(server);
  }
}

void MOTOR3KapatKomut(WebServer &server, WebServer::ConnectionType type, char *, bool)
{
  server.httpSuccess();

  if (type != WebServer::HEAD)
  {
    motor3.run(RELEASE);  
   c=0; 
    LEDdurumlariniGoster(server);
  }
}

void MOTOR4AcKomut(WebServer &server, WebServer::ConnectionType type, char *, bool)
{
  server.httpSuccess();

  if (type != WebServer::HEAD)
  {
     motor4.run(FORWARD);
     d=1;
    LEDdurumlariniGoster(server);
  }
}

void MOTOR4KapatKomut(WebServer &server, WebServer::ConnectionType type, char *, bool)
{
  server.httpSuccess();

  if (type != WebServer::HEAD)
  {
    motor4.run(RELEASE);  
   d=0; 
    LEDdurumlariniGoster(server);
  }
}

void LEDdurumlariniGoster(WebServer &server)
{
   /* 
   P() makrosu ile string'leri RAM yerine program
   belleğine kaydedebiliyoruz. Server'a gönderirken de
   printP() fonksiyonunu kullanıyoruz
   */
    P(htmlHead) =
    "<html>"
    "<head>"
    "<title>Arduino Web Sunucusu</title>"
    "</head>"
    "<body>";
    
    server.printP(htmlHead);
    /*
    LED'lerin durumlarını yazdırıyoruz ve açma / kapama
    işlemleri için linkleri yazdırıyoruz
    */
    server.print("<h1>LED1:</h1>");
    if(digitalRead(LED1))
    {
      server.print("AÇIK");
      server.println("<a href=\"led1Kapat\"> KAPAT</a>");
    }
    else
    {
      server.print("KAPALI");
      server.println("<a href=\"led1Ac\"> AÇ</a>");
    }
    server.print("<h1>LED2:</h1>");
    if(digitalRead(LED2))
    {
      server.println("AÇIK");
      server.println("<a href=\"led2Kapat\"> KAPAT</a>");
    }
    else
    {
      server.println("KAPALI");
      server.println("<a href=\"led2Ac\"> AÇ</a>");
    }
      server.print("<h1>FAN1:</h1>");
    if(digitalRead(FAN1))
    {
      server.print("AÇIK");
      server.println("<a href=\"FAN1Kapat\"> KAPAT</a>");
    }
    else
    {
      server.print("KAPALI");
      server.println("<a href=\"FAN1Ac\"> AÇ</a>");
    }
     
    server.print("<h1>FAN2:</h1>");
        
    if(digitalRead(FAN2))
    {
      server.print("AÇIK");
      server.println("<a href=\"FAN2Kapat\"> KAPAT</a>");
    }
    else
    {
      server.print("KAPALI");
      server.println("<a href=\"FAN2Ac\"> AÇ</a>");
    }
    server.print("<h1>MOTOR1:</h1>");
        if(a==1)
    {
      server.print("AÇIK");
      server.println("<a href=\"MOTOR1Kapat\"> KAPAT</a>");
    }
    else
    {
      server.print("KAPALI");
      server.println("<a href=\"MOTOR1Ac\"> AÇ</a>");
    }
    server.print("<h1>MOTOR2:</h1>");
        if(b==1)
    {
      server.print("AÇIK");
      server.println("<a href=\"MOTOR2Kapat\"> KAPAT</a>");
    }
    else
    {
      server.print("KAPALI");
      server.println("<a href=\"MOTOR2Ac\"> AÇ</a>");
    }
    server.print("<h1>MOTOR3:</h1>");
         if(c==1)
    {
      server.print("AÇIK");
      server.println("<a href=\"MOTOR3Kapat\"> KAPAT</a>");
    }
    else
    {
      server.print("KAPALI");
      server.println("<a href=\"MOTOR3Ac\"> AÇ</a>");
    }
    server.print("<h1>MOTOR4:</h1>");
           if(d==1)
    {
      server.print("AÇIK");
      server.println("<a href=\"MOTOR4Kapat\"> KAPAT</a>");
    }
    else
    {
      server.print("KAPALI");
      server.println("<a href=\"MOTOR4Ac\"> AÇ</a>");
    }
}

void setup()
{
  // LED Pinlerini çıkış olarak ayarlıyoruz
  pinMode(LED1,OUTPUT);
  pinMode(LED2,OUTPUT);
  pinMode(FAN1,OUTPUT);
  pinMode(FAN2,OUTPUT);
  digitalWrite(LED1,LOW);
  digitalWrite(LED2,LOW);
  digitalWrite(FAN1,LOW);
  digitalWrite(FAN2,LOW);
  motor4.setSpeed(200);
  motor3.setSpeed(200);
  motor2.setSpeed(200);
  motor1.setSpeed(200);

  /* IP ve MAC adresi ile ethernet bağlantısını başlatıyoruz */
  Ethernet.begin(mac, ip);

  /* Web sunucuya gelen isteklere göre çağırılacak fonksiyonları listeye ekliyoruz */
  
  /* Varsayılan istek */
  webserver.setDefaultCommand(&anaSayfa);
  /* ana sayfa isteği geldiğinde */
  webserver.addCommand("index.html", &anaSayfa);
  /* Diğer istekler */
  webserver.addCommand("led1Ac", &led1AcKomut);
  webserver.addCommand("led1Kapat", &led1KapatKomut);
  webserver.addCommand("led2Ac", &led2AcKomut);
  webserver.addCommand("led2Kapat", &led2KapatKomut);
  webserver.addCommand("FAN1Ac", &FAN1AcKomut);
  webserver.addCommand("FAN1Kapat", &FAN1KapatKomut);
  webserver.addCommand("FAN2Ac", &FAN2AcKomut);
  webserver.addCommand("FAN2Kapat", &FAN2KapatKomut);
  webserver.addCommand("MOTOR1Ac", &MOTOR1AcKomut);
  webserver.addCommand("MOTOR1Kapat", &MOTOR1KapatKomut);
  webserver.addCommand("MOTOR2Ac", &MOTOR2AcKomut);
  webserver.addCommand("MOTOR2Kapat", &MOTOR2KapatKomut);
  webserver.addCommand("MOTOR3Ac", &MOTOR3AcKomut);
  webserver.addCommand("MOTOR3Kapat", &MOTOR3KapatKomut);
  webserver.addCommand("MOTOR4Ac", &MOTOR4AcKomut);
  webserver.addCommand("MOTOR4Kapat", &MOTOR4KapatKomut);

  /* Sunucuyu başlatıyoruz */
  webserver.begin();
}

void loop()
{
  char webserver_tampon[64];
  int boyut = 64;
  /* Sürekli olarak gelen istekleri işliyoruz */
  webserver.processConnection(webserver_tampon, &boyut);
}



http://i.hizliresim.com/JYXozq.png
http://i.hizliresim.com/zAgPpB.jpg

mesaj birleştirme:: 26 Nisan 2015, 18:23:29

led 1 ve led 2 coşkun hocamın kitabındaki örnekte bulunan linkler. geri kalanını ben ekledim. sonradan eklediğim FAN1 çalışıyor ama gerisi çalışmıyor.