Arduino Uno v3 + Ethernet Shield (W5100) + LED Display (SSD1306) + DS18B20
- Войдите на сайт для отправки комментариев
Ср, 21/01/2015 - 15:54
Доброго дня\вечера господа !
Сразу, хочу сказать, что я полный новичок в этом деле.
Вобщем решил собрать подобную штуку для удаленного мониторинга темепературы. Никак не могу заставить работать вместе Ethernet и дисплей. Получается такая картина, экран работает, показывает температуру. Сеть "работает", пингуется, но в браузере тишина. Если "заремарчить" код экарана, то с сетью все нормализуется. Ткните носом, что я делаю не так. Распиновку у шилда смотрел, экранчик и датчик на других сидят.
#include <OneWire.h> #include <DallasTemperature.h> #include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include <Ethernet.h> #define OLED_MOSI 3 //D0 #define OLED_CLK 5 //D1 #define OLED_DC 6 #define OLED_CS 7 #define OLED_RESET 8 byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; IPAddress ip(10,121,1,24); EthernetServer server(80); Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS); #define ONE_WIRE_BUS 9 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); void setup() { Serial.begin(9600); while (!Serial) { ; } Ethernet.begin(mac, ip); server.begin(); Serial.print("server is at "); Serial.println(Ethernet.localIP()); display.begin(SSD1306_SWITCHCAPVCC); sensors.begin(); } void loop() { sensors.requestTemperatures(); float tempC = sensors.getTempCByIndex(0); display.setTextSize(3); display.setTextColor(WHITE); display.setCursor(10,10); display.clearDisplay(); display.println(tempC); display.display(); EthernetClient client = server.available(); if (client) { Serial.println("new client"); boolean currentLineIsBlank = true; while (client.connected()) { if (client.available()) { char c = client.read(); // Serial.write(c); if (c == '\n' && currentLineIsBlank) { client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println("Connection: close"); client.println("Refresh: 5"); client.println(); client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.println(tempC); Serial.println(tempC); client.println("</html>"); break; } if (c == '\n') { currentLineIsBlank = true; } else if (c != '\r') { currentLineIsBlank = false; } } } delay(1); client.stop(); Serial.println("client disconnected"); } }