Elektrik Elektronik Teknolojisi Alanı Temrinleri

 
Hoşgeldiniz Ziyaretçi. Lütfen giriş yapın veya kayıt olun.

Kullanıcı adınızı, şifrenizi ve aktif kalma süresini giriniz

Gönderen Konu: 6. Arduino ethernet shield ile 2 adet rölenin kontrolü  (Okunma sayısı 3356 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

25 Haziran 2015, 22:01:32
Çevrimdışı Hasan ERTÜRK
*
İleti: 498
Karma 3
Profili Görüntüle Spina Bifida 
Bu dersimizde arduino ethernet shild kullanarak 2 adet röleyi internet tarayıcınız üzerinden açıp kapatma uygulaması yapacağız. Uygulamayı yapabilmek için öncelikle arduino programınıza weduino kütüphanesinin ekli olması gereklidir. Webduino kütüphanesi ekli değilse öncelikle webduino kütüphanesini ekleyiniz.

Arduino kodlarımız:
Kod:
Kodlari sadece uyeler gorebilir. Lutfen Uye Olun ya da Giris Yapin.
ISIS Devre şeması:


ARES Baskı Devresi:


Tarayıcı arayüzü:


Devrenin bitmiş hali:



« Son Düzenleme: 30 Eylül 2016, 20:45:12 Gönderen: fatek »



07 Ocak 2017, 20:52:14
Yanıtla #1
Çevrimdışı hacmeh
*
İleti: 2
Karma 0
Profili Görüntüle 
Hocam röle sayısını 4'e çıkarınca 4. röleyi açıyor fakat kapatmaya basınca sayfa hatası veriyor. sorun neden kaynaklanıyor olabilir acaba.

kod aşağıdaki gibi yaptım.


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

#define RELAY1 2
#define RELAY2 3
#define RELAY3 6
#define RELAY 7
static uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
boolean ROLE1Durum = false;
boolean ROLE2Durum = false;
boolean ROLE3Durum = false;
boolean ROLEDurum = false;

static uint8_t ip[] = { 192, 168, 1, 10 };
#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 ROLE1AcKomut(WebServer &server, WebServer::ConnectionType type, char *, bool)
{
  server.httpSuccess();

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

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

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

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

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

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

  if (type != WebServer::HEAD)
  {
    digitalWrite(RELAY2,LOW);
    LEDdurumlariniGoster(server);
  }
}
void ROLE3AcKomut(WebServer &server, WebServer::ConnectionType type, char *, bool)
{
  server.httpSuccess();

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

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

  if (type != WebServer::HEAD)
  {
    digitalWrite(RELAY3,LOW);   
    LEDdurumlariniGoster(server);
  }
}
void ROLEAcKomut(WebServer &server, WebServer::ConnectionType type, char *, bool)
{
  server.httpSuccess();

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

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

  if (type != WebServer::HEAD)
  {
    digitalWrite(RELAY,LOW);
    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>"
     "<link rel='stylesheet' type='text/css' href='http://temrinlerim.org/ethernet.css' />"
    "</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("<h2>OGUZELi MESLEKi VE TEKNiK ANADOLU LiSESi</h2>");
    server.print("<h2>AKILLI EV UYGULAMASI</h2>");
    server.print("<h2>-----------------------</h2>");
    server.print("<h2>KLiMA:</h2>");
    if(digitalRead(RELAY1))
    {
server.print("AÇIK<BR /><BR />");
      server.println("<a href=\"ROLE1Kapat\"> KAPAT</a>");
    }
    else
    {
server.print("KAPALI<BR /><BR />");
      server.println("<a href=\"ROLE1Ac\"> AÇ</a>");
    }
    server.print("<h2>KOMBi:</h2>");
    if(digitalRead(RELAY2))
    {
server.print("AÇIK<BR /><BR />");
      server.println("<a href=\"ROLE2Kapat\"> KAPAT</a>");
    }
    else
    {
server.print("KAPALI<BR /><BR />");
      server.println("<a href=\"ROLE2Ac\"> AÇ</a>");
    }
    server.print("<h2>SALON AYD.:</h2>");
    if(digitalRead(RELAY3))
    {
server.print("AÇIK<BR /><BR />");
     server.println("<a href=\"ROLE3Kapat\"> KAPAT</a>");
    }
    else
    {
server.print("KAPALI<BR /><BR />");
      server.println("<a href=\"ROLE3Ac\"> AÇ</a>");
   }
    server.print("<h2>MUTFAK AYD.:</h2>");
    if(digitalRead(RELAY))
    {
server.print("AÇIK<BR /><BR />");
      server.println("<a href=\"ROLEKapat\"> KAPAT</a>");
    }
    else
  {
server.print("KAPALI<BR /><BR />");
      server.println("<a href=\"ROLEAc\"> AÇ</a>");
    } 
}
   
void setup()
{
  // LED Pinlerini çıkış olarak ayarlıyoruz
  pinMode(RELAY1,OUTPUT);
  pinMode(RELAY2,OUTPUT);
  pinMode(RELAY3,OUTPUT);
  pinMode(RELAY,OUTPUT);
  digitalWrite(RELAY1,LOW);
  digitalWrite(RELAY2,LOW);
  digitalWrite(RELAY3,LOW);
  digitalWrite(RELAY,LOW);

  /* 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("ROLE1Ac", &ROLE1AcKomut);
  webserver.addCommand("ROLE1Kapat", &ROLE1KapatKomut);
  webserver.addCommand("ROLE2Ac", &ROLE2AcKomut);
  webserver.addCommand("ROLE2Kapat", &ROLE2KapatKomut);
  webserver.addCommand("ROLE3Ac", &ROLE3AcKomut);
  webserver.addCommand("ROLE3Kapat", &ROLE3KapatKomut);
  webserver.addCommand("ROLEAc", &ROLEAcKomut);
  webserver.addCommand("ROLEKapat", &ROLEKapatKomut);

  /* 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);
}

07 Ocak 2017, 20:54:54
Yanıtla #2
Çevrimdışı hacmeh
*
İleti: 2
Karma 0
Profili Görüntüle 
4. röleye kapat komutu gidince
aşağıdaki hatayı veriyor web de

EPIC FAIL