Arduino Uno v3 + Ethernet Shield (W5100) + LED Display (SSD1306) + DS18B20

Нет ответов
bugzzilla
Offline
Зарегистрирован: 21.01.2015

Доброго дня\вечера господа !

Сразу, хочу сказать, что я полный новичок в этом деле.

Вобщем решил собрать подобную штуку для удаленного мониторинга темепературы.  Никак не могу заставить работать вместе 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");
  }
}