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-адрес из нужной сети?
В порт данные о температуре выводятся, а вот веб не отображает страницу...
т.е. ситуация такая - порт молчит, как только загружаем страницу, в порт сыпятся показания температуры, но страница не загружается....