Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
14
Cevap
2749
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



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şı

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şı

ü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şı

< 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
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.