ds18b20 вывод температуры на web
- Войдите на сайт для отправки комментариев
Сб, 30/03/2013 - 23:43
Добрый день уважаемые!
Посмотрите пожалуйста мой код, хочу чтоб при заходе на веб страницу ардуины выводилось показание температуры, но что то не выходит каменный цветок...
#include <OneWire.h>
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 192, 168, 0, 111 }; // ip in lan
byte gateway[] = { 192, 168, 0, 1 }; // internet access via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(80); //server port
int valReley1 = 0;
OneWire ds(10); // линия 1-Wire будет на pin 10
String readString;
//////////////////////
void setup(){
//start Ethernet
Ethernet.begin(mac, ip, gateway, gateway, subnet);
server.begin();
//enable serial data print
Serial.begin(9600);
Serial.println("web temp test 1.0"); // so I can keep track of what is loaded
}
void loop(){
byte i;
byte present = 0;
byte data[12];
byte addr[8];
if ( !ds.search(addr)) {
Serial.print("No more addresses.\n");
ds.reset_search();
}
if ( OneWire::crc8( addr, 7) != addr[7]) {
Serial.print("CRC is not valid!\n");
}
if ( addr[0] != 0x10) {
Serial.print("Device is not a DS18S20 family device.\n");
}
ds.reset();
ds.select(addr);
ds.write(0x44,1); // запускаем конвертацию
delay(1000); // скорее всего достаточно 750ms
// we might do a ds.depower() here, but the reset will take care of it.
present = ds.reset();
ds.select(addr);
ds.write(0xBE); // считываем ОЗУ датчика
for ( i = 0; i < 9; i++) { // обрабатываем 9 байт
data[i] = ds.read();
}
// высчитываем температуру :)
int HighByte, LowByte, TReading, Tc_100;
LowByte = data[0];
HighByte = data[1];
TReading = (HighByte << 8) + LowByte;
Tc_100 = TReading/2;
Serial.print(" T = ");Serial.print(Tc_100);
Serial.println();
// Create a client connection
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();
//read char by char HTTP request
if (readString.length() < 100) {
//store characters to string
readString += c;
//Serial.print(c);
}
//if HTTP request has ended
if (c == '\n') {
Serial.println(readString); //print to serial monitor for debuging
client.println("HTTP/1.1 200 OK"); //send new page
client.println("Content-Type: text/html");
client.println();
client.println("<HTML>");
client.println("<HEAD>");
client.println("<TITLE>Arduino Bistab Relay Control</TITLE>");
client.println("<meta http-equiv='refresh' content='30;URL=http://192.168.0.111/'>");
client.println("</HEAD>");
client.println("<BODY>");
client.print("<hr>Температура = "); client.print(Tc_100);
client.println("</BODY>");
client.println("</HTML>");
delay(1);
//stopping client
client.stop();
//clearing string for next read
readString="";
}
}
}
}
}
Мало данных, чтобы помочь.
Что конкретно "не выходит"?
IP-адрес из нужной сети?
В порт данные о температуре выводятся, а вот веб не отображает страницу...
т.е. ситуация такая - порт молчит, как только загружаем страницу, в порт сыпятся показания температуры, но страница не загружается....