Arama butonu
Bu konudaki kullanıcılar: 1 misafir
14
Cevap
2752
Tıklama
0
Öne Çıkarma
arduino uno+ethernet shield web server üstünden led kontrolu
C
10 yıl
Yüzbaşı
Konu Sahibi

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

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1, 177);

EthernetServer server(80);

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

}

void loop()
{
if (digitalRead(8))
{
client.print (" LED is < font color=’green’ >ON< /font >");
}else{
client.print (" LED is < font color=’red’ >OFF< /font >");
}
client.println ( "< br / >" );
client.print ( "" );
client.print ( "< P > < INPUT type= \”radio\” name=\”status\” value=\”1\” >ON" );
client.print ( "< P > < INPUT type= \”radio\” name=\”status\” value=\”0\” >OFF" );
client.print ( "< P > < INPUT type= \”submit\” value=\”Submit\” > < /FORM >" );
break;
if (c == '\n') {
currentLineIsBlank = true;
buffer="";
} else if (c == '\r') {
if(buffer.indexOf("GET /?status=1")>=0)
digitalWrite(8,HIGH);

if(buffer.indexOf("GET /?status=0")>=0)
digitalWrite(8,LOW);
}
else {
}
}


çıktıyı oluşturmak için örnek çeşitlerinden faydalanmaya çalıştım void setup da kütüphane ve server işlemlerini gerçekleştirdim sorun çıkarmadı
void loop içerisinde sırasıyla web arayüzü butonları daha sonra sayfa üzerinden butonlara tıklayınca led yanıp sönemsini istediğim komutları yazdım fakat client,break,buffer,c komutları için was not declared in this scope hatası almaktayım sorunun çözümü için arduino programlama hk. bilgi sahibi olan forum sakinlerinden yardım istemekteyim iyi günler dilerim.

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



C
10 yıl
Yüzbaşı

Takip açıklama gelirse güzel olur benimde projelerimin arasında bu ethernet olayı



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
K
10 yıl
Yüzbaşı

kod yanlış. bunu dene istersen.

 

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


byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(10, 0, 0, 20);
EthernetServer server(80);

String HTTP_req;
boolean LED_status = 0;

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

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

if (client) {
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
HTTP_req += c;
if (c == '\n' && currentLineIsBlank) {

client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();

client.println("<!DOCTYPE html>");
client.println("<html>");
client.println("<head>");
client.println("<title>Arduino LED Kontrol</title>");
client.println("</head>");
client.println("<body>");
client.println("<h1>LED</h1>");
client.println("<p>ledi acip kapamak icin tiklayin</p>");
client.println("<form method=\"get\">");
ProcessCheckbox(client);
client.println("</form>");
client.println("</body>");
client.println("</html>");
Serial.print(HTTP_req);
HTTP_req = "";
break;
}

if (c == '\n') {

currentLineIsBlank = true;
}
else if (c != '\r') {

currentLineIsBlank = false;
}
}
}
delay(1);
client.stop();
}
}


void ProcessCheckbox(EthernetClient cl)
{
if (HTTP_req.indexOf("LED2=2") > -1) { // see if checkbox was clicked

if (LED_status) {
LED_status = 0;
}
else {
LED_status = 1;
}
}

if (LED_status) { // switch LED on
digitalWrite(2, HIGH);

cl.println("<input type=\"checkbox\" name=\"LED2\" value=\"2\" \
onclick=\"submit();\" checked>LED2");
}
else {
digitalWrite(2, LOW);

cl.println("<input type=\"checkbox\" name=\"LED2\" value=\"2\" \
onclick=\"submit();\">LED2");
}
}





< Bu mesaj bu kişi tarafından değiştirildi kasirga_ -- 18 Nisan 2015; 22:20:46 >
Bu mesaja 1 cevap geldi.
C
10 yıl
Yüzbaşı
Konu Sahibi

valla hocam ilgin için çok tşk ederim kodları yazan/bulan eline sağlık Allah razı olsun senden, ethernet shield'ım da sorun cıkmıstı 1 e 1 değişim için gonderdım 2-3 gune gelir arduino 1.6.2 ye attım kodları hata vermedi ethernet shield'ın led pin i 8 diye biliyordum ben 2'de çalışır umarım ledler kaba taslak şöyle bi deneme yapmak istiyordum bende örneğin;
< Resime gitmek için tıklayın >
< Resime gitmek için tıklayın >
< Resime gitmek için tıklayın >

yazdığınız 2 nolu pin ve ip adresleri biraz kafamı karıştırdı ardunionun hazır orneklerınde pin 8 ve ip 192.168.1.177 olarak gösteriyordu sanırsam keyfi ip ataması yapilabiliyor ethernet shield'ım gelince hemen deneyeceğim tekrardan tşk ederim





< Bu mesaj bu kişi tarafından değiştirildi ChiefMeister -- 18 Nisan 2015; 22:46:02 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @kasirga_
K
10 yıl
Yüzbaşı

shield deki pini tam bilmiyorum ben direk led taktım pin2 ye :) ip tabi kendi ağına göre keyfi .


Bu mesaja 1 cevap geldi.
C
10 yıl
Yüzbaşı
Konu Sahibi

shield'ım gelince hemen deneyeceğim hocam tekrardan çok tşk ederim


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @kasirga_
C
10 yıl
Binbaşı

birkaç ekleme ile 4-8 kanal röle kontrolü yapılabilir deniyor, ama ben beceremedim bir türlü.
bt, ir, rf ile röle kontrol ediyorum ama wifi ve ethernet'i beceremedim biraz uğraşalım izinli günümüzde..


Bu mesaja 1 cevap geldi.
C
10 yıl
Yüzbaşı

Benim modemin TP-LINK. Yani modem arayüzünehttp://192.168.0.1/ ile ulaşabiliyorum.
Arduinonun kendi sitesinde verdiği web server örneğini buna göre değiştiriyorum "192.168.0.177" yapıyorum mesela.
Fakat bunu chrome'a yazdığımda web adresi kullanılamıyor diyor.
Sorun nedir acaba? İyi forumlar.


Bu mesaja 1 cevap geldi.
C
10 yıl
Yüzbaşı
Konu Sahibi

mac adresininizi doğru tanımladığınızdan emin olun ethernet shield'ın arkasında sticker ustunde gelir mac adresi genelde, ip değerini istediğiz biçimde değiştirip deneyin

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED } gibi 0* harfler-rakamlar girilecek
< Resime gitmek için tıklayın >





< Bu mesaj bu kişi tarafından değiştirildi ChiefMeister -- 20 Nisan 2015; 23:22:04 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @crazyslamdunker
C
10 yıl
Yüzbaşı

ürünü çinden sipariş ettim, maalesef yazmıyor. modem arayüzünden baktım göremedim.
bilgisayara direkt bağlayınca şu adresi görüntüledim bunu 0x00 şeklinde programa yazınca değişiklik olmadı.
< Resime gitmek için tıklayın >





< Bu mesaj bu kişi tarafından değiştirildi crazyslamdunker -- 21 Nisan 2015; 1:04:56 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @ChiefMeister
C
10 yıl
Yüzbaşı
Konu Sahibi

önce kodlamanızın doğruluğunu arduino programı üzerinden kontrol ettirin sorun yoksa hata vermiyorsa, çalışıtır-cmd-ipconfig -all komutu ile bilgisayara takılı tüm medyaları kontorol edin cihanız takılı iken listelenecektir oradan net bir şekilde mac adresini görebilirsiniz gönderdiğiniz adres ile eşleşiyorsa kodlamanızda bu komutu gateway ve subnet i kaldırıp bu şekilde düzenleyin ; Ethernet.begin(mac, ip) , kullandığınız ip'de sorun olabilir shield takılı iken gene ipconfig -a xxx.xxx.xxx.xxx den atamak istediğiniz adrese kontrol amaçlı ping atın geri dönüş sağlanıyorsa ip sorunsuz demektir, shield a ethernet.begin komutu ile sadece mac yada ip ile bağlanmayı deneyin sizin için biraz forumları karıştırdım sorununuzu çözmek adına sıkça uygulanan problemi çözebilcek yöntemler bunlarmış tabi sizin shield klon mu değil mi bilemicem klonlar hakkında pek bir bilgim yok bende yeni sayılırım bu işte aslında sizide yanlış yönlendirmek istemem bunlarla sonuca varamazsanız kasirga_ hocamın bu konuda deneyimi olabilir belki umarım sorununuz en kısa sürede çözüm bulur iyi forumlar dilerim..





< Bu mesaj bu kişi tarafından değiştirildi ChiefMeister -- 21 Nisan 2015; 2:11:06 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @kasirga_ , @crazyslamdunker
C
10 yıl
Yüzbaşı

Cevap için teşekkür ederim mac adresinden emin oldum, kodu şu şekilde değiştirdim, fakat yine adrese giremedim.

byte mac[] = {
0xF4, 0x6D, 0x04, 0x57, 0x4D, 0x5D
};
IPAddress ip(192, 168, 0, 177);

ipconfig -a xxx.xxx.xxx.xxx bu komutu anlayamadım.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @ChiefMeister
C
10 yıl
Yüzbaşı
Konu Sahibi

şu şekilde shield takılı iken ipconfig -a 192.168.0.177 yada shield a bağlanmak istediğiniz heran gibir bir adres'e ping atıyoruz eğer sorun yoksa bu şekilde geri dönüş olacaktır. varsa bağlantı zaman aşımına uğradı yada paket loss %100 gibi uyarılar verecektir. isterseniz kullandığınız kodlamayı buraya atın ne eksik ne fazla net bir şekilde görebiliriz.
< Resime gitmek için tıklayın >





< Bu mesaj bu kişi tarafından değiştirildi ChiefMeister -- 21 Nisan 2015; 3:11:04 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @kasirga_ , @crazyslamdunker
C
10 yıl
Yüzbaşı

< Resime gitmek için tıklayın >

arduinonun kendi örneğindeki ip ve mac adresini değiştirdim sadece.

/*
Web Server

A simple web server that shows the value of the analog input pins.
using an Arduino Wiznet Ethernet shield.

Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13
* Analog inputs attached to pins A0 through A5 (optional)

created 18 Dec 2009
by David A. Mellis
modified 9 Apr 2012
by Tom Igoe

*/

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

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
0xF4, 0x6D, 0x04, 0x57, 0x4D, 0x5D
};
IPAddress ip(192, 168, 0, 177);

// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);

void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}


// start the Ethernet connection and the server:
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}


void loop() {
// listen for incoming clients
EthernetClient client = server.available();
if (client) {
Serial.println("new client");
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
// if you've gotten to the end of the line (received a newline
// character) and the line is blank, the http request has ended,
// so you can send a reply
if (c == '\n' && currentLineIsBlank) {
// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close"); // the connection will be closed after completion of the response
client.println("Refresh: 5"); // refresh the page automatically every 5 sec
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
// output the value of each analog input pin
for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
int sensorReading = analogRead(analogChannel);
client.print("analog input ");
client.print(analogChannel);
client.print(" is ");
client.print(sensorReading);
client.println("<br />");
}
client.println("</html>");
break;
}
if (c == '\n') {
// you're starting a new line
currentLineIsBlank = true;
}
else if (c != '\r') {
// you've gotten a character on the current line
currentLineIsBlank = false;
}
}
}
// give the web browser time to receive the data
delay(1);
// close the connection:
client.stop();
Serial.println("client disconnected");
}
}


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @ChiefMeister
C
10 yıl
Yüzbaşı
Konu Sahibi

kusura bakmayın biraz geç cevap verdim shield ım yeni geldi bendede aynı problem varmısbiraz araştırdım sorun basıt shield takılı iken ağ bağlantısından ayarlardan
shield'ınızın ip sini bulun daha sonra atıyorum ipsi 170.0.0.200 ise kodlamanızda IPAddress ip(170,0,0,201-202-203); dilediğiniz gibi değiştirin çalışacaktır.




Bu mesajda bahsedilenler: @crazyslamdunker
DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.