DallasTemperature и EthernetServer
- Войдите на сайт для отправки комментариев
Втр, 21/01/2014 - 15:50
В общем по отдельности DallasTemperature и EthernetServer работают отлично, и делают что надо, но если их объеденить, то EthernetServer перестаёт нормально работать
#include <SPI.h> #include <Ethernet.h> #include <string.h> #include <OneWire.h> #include <DallasTemperature.h> DallasTemperature sensors(new OneWire(53)); EthernetServer server(80); void setup() { byte mac[] = {0x07, 0xF3, 0x08, 0x45, 0x2C, 0xB5}; byte ip[] = {192, 168, 1, 11}; Serial.begin(9600); sensors.begin(); pinMode(51, OUTPUT); pinMode(48, OUTPUT); digitalWrite(51, HIGH); digitalWrite(48, HIGH); Ethernet.begin(mac, ip); } void loop() { EthernetClient client = server.available(); if (client) { String response; while (client.connected()) { if (!client.available()) continue; char c; do { response += c = client.read(); } while (c != -1); String get = response.substring(0, response.indexOf("\r\n")); get.replace("GET ", ""); get.replace(" HTTP/1.1", ""); client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html\r\n"); sensors.requestTemperatures(); float temp1 = sensors.getTempCByIndex(0); float temp2 = sensors.getTempCByIndex(1); if(get == "/") { Serial.println(1); client.print("<!doctype html><html><head><meta charset='utf-8'></head><body>Температура на улице <b>"); Serial.println(2); client.print(temp1); client.print("</b> °C<br>Температура в квартире <b>"); client.print(temp2); client.print("</b> °C</body></html>"); } else if(get == "/cron") { client.print("["); client.print(temp1, DEC); client.print(","); client.print(temp2, DEC); client.print("]"); } else { client.print("404 Not Found"); } delay(100); client.stop(); } } }
Проблема в методе client.print(), после вызова sensors.requestTemperatures() или sensors.getTempCByIndex() выше указаный метод просто перестаёт работать и браузер просто ждёт, если же закоментировать sensors.requestTemperatures() и sensors.getTempCByIndex() то отрабатывает нормально. Что делать?
Mega2560
SPI
Чем был обусловлен выбор 53 вывода для подключения датчика?
Возле него есть земля, а 5в получаю с 51, провода вобщем короткие. Спасибо за намёк!))
Изернет шилд подключается к дуине по интерфейсу SPI, из описания Mega2560:
SPI: 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS). Посредством данных выводов осуществляется связь SPI, например, используя библиотеку SPI.
В общем перепаял провода подлинее, убрали их на другие пины и всё полетело! Спасибо, я 2 дня голову ломал!