Liczba postów: 4
Liczba wątków: 1
Dołączył: Apr 2020
Reputacja:
0
Witam mój pierwszy post.
Posiadam płytkę ESP8266 .Do płytki chcę podłączyć dwa (2) termometry DS18B20 wodoodporny.
Ale każdy pod inny pin .
Problem mam taki ze pokazuje mi tylko wartość z jednego pina 15 .
Jak pokazać wartości z drugiego termometru .
Odczytuje mi tylko z pina 15 bez względu czy je zamiennie oba sa sprawne jak odczytać dane z pin 13 .
Chodzi mi o opis pinu 13 czy dobrze podałem zmienne do odczytania z minu 13.
Jak to zrobić .
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266HTTPClient.h>
#include <OneWire.h>
#include <DallasTemperature.h>
const int oneWireBus = 15;
const int oneWireBus_1 = 13;
OneWire oneWire(oneWireBus);
DallasTemperature sensors(&oneWire);
OneWire oneWire_1(oneWireBus_1);
DallasTemperature sensors_1(&oneWire_1);
Pozdrawiam
Liczba postów: 2,376
Liczba wątków: 0
Dołączył: Oct 2017
Reputacja:
240
Twój zapis wygląda OK, ale nie pokazujesz całego kodu. W tej użytej bibliotece do DS jest przykład Multibus_Simple, otwórz zmień nr na 13 i 15, sprawdź czy działa. Jak nie działa na 13 to spróbuj innych pinów, może masz coś nie tak z płytką.
Liczba postów: 4
Liczba wątków: 1
Dołączył: Apr 2020
Reputacja:
0
Mam układ w pracy ale pamiętam ze tak sprawdzałem zamieniałem piny i termometry żeby sprawdzić czy działa i działał tylko na jednym . I na 13 i na 15 jak zamieniałem zawsze na pierwszej zmiennej.
Drugi cały czas wysyłał stała temperaturę jak pamiętam -125 czy podobnie
Wrzucanie do bazy działa .
Moim zdaniem jest coś zle z pinem jak podaje drugim
Cały kod przesyłam kolego
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266HTTPClient.h>
#include <OneWire.h>
#include <DallasTemperature.h>
const int oneWireBus = 15;
const int oneWireBus_1 = 13;
OneWire oneWire(oneWireBus);
DallasTemperature sensors(&oneWire);
OneWire oneWire_1(oneWireBus_1);
DallasTemperature sensors_1(&oneWire_1);
int Led_OnBoard = 2;
const char* ssid = "P";
const char* password = "p";
const char *host = "172.0.0.20";
void setup() {
// put your setup code here, to run once:
delay(1000);
pinMode(Led_OnBoard, OUTPUT);
Serial.begin(115200);
WiFi.mode(WIFI_OFF);
delay(1000);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.println("");
Serial.print("Connecting");
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
digitalWrite(Led_OnBoard, LOW);
delay(250);
Serial.print(".");
digitalWrite(Led_OnBoard, HIGH);
delay(250);
}
digitalWrite(Led_OnBoard, HIGH);
Serial.println("");
Serial.println("Connected to Network/SSID");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {
sensors.requestTemperatures();
float temperatureC = sensors.getTempCByIndex(0);
float temperatureC_1 = sensors.getTempCByIndex(1);
Serial.print(temperatureC);
Serial.print(temperatureC_1);
delay(5000);
HTTPClient http;
String LdrValueSend, postData;
float ldrvalue=temperatureC;
LdrValueSend = String(ldrvalue);
//Post Data
postData = "mq7val=" + LdrValueSend;
http.begin("http://172.0.0.20/arduino/baza.php"); //Specify request destination
http.addHeader("Content-Type", "application/x-www-form-urlencoded"); //Specify content-type header
float httpCode = http.POST(postData); //Send the request
String payload = http.getString(); //Get the response payload
//Serial.println("LDR Value=" + ldrvalue);
Serial.println(httpCode); //Print HTTP return code
Serial.println(payload); //Print request response payload
Serial.println("LDR Value=" + LdrValueSend);
http.end();
delay(4000);
digitalWrite(Led_OnBoard, LOW);
delay(1000);
digitalWrite(Led_OnBoard, HIGH);
}
Liczba postów: 884
Liczba wątków: 19
Dołączył: Jun 2018
Reputacja:
43
09-04-2020, 19:34
(Ten post był ostatnio modyfikowany: 09-04-2020, 19:42 przez Jarewa0606.)
A czemu nie odczytujesz po adresie?
A gdzie masz "sensors.begin();"
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą.
Liczba postów: 4
Liczba wątków: 1
Dołączył: Apr 2020
Reputacja:
0
Ok działa a teraz jeszcze jedno pytanie.
Zasilanie termometrów mam z pinów od płytki ESP8266 .
I jak jest podłączone płytka do prądu to się nie uruchamia dopóki nie wyciągnę plusa (+) od tremometrów.
Jak by przy włączaniu prądu plusy z termometrów zawieszają płytkę.
Dopiero jak bym je odłączył + potem podłączył jak zacznie płytka migać to będzie działać .
Jaka może byc przyczyna .
Liczba postów: 884
Liczba wątków: 19
Dołączył: Jun 2018
Reputacja:
43
Przyczyna zawsze jest jedna. Nie zapoznanie sie z dokumentacja układu...
Zwolnij "PIN15" on słuzy do innych celów...
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą.
Liczba postów: 4
Liczba wątków: 1
Dołączył: Apr 2020
Reputacja:
0
Super forum i dzięki . Tak sprawdziłem zmieniłem pin i wszystko oki.
Jeszcze jedno pytanie .Pokazuje mi temperaturę z 2 czujników .Wszystko oki .
Potem wysyła post zmienne i w php odbieram i zapisuje do bazy .
Problem jest taki ze wysyła tylko jedna zmienna jak wyłączę jeden pin prześle druga .
Php dobrze odbiera zmienne bo raz zapisuje do bazy jedna taz druga jak wyłączę pin
Jak przekazać wynik dwóch zmiennych post.
Chodzi mi głownie o ten zapis bo mysle ze tu jest błąd
postData = "mq7val=" + pierwszy;
postData_1 ="mq4val=" + drugi ;
żeby jednym post poszły wyniki z dwóch zmiennych
void loop() {
sensors.requestTemperatures();
sensors_1.requestTemperatures();
float temperatureC = sensors.getTempCByIndex(0);
float temperatureC_1 = sensors_1.getTempCByIndex(0);
Serial.print(temperatureC);
Serial.print(temperatureC_1);
delay(5000);
// put your main code here, to run repeatedly:
HTTPClient http; //Declare object of class HTTPClient
String pierwszy, postData;
float temp = temperatureC; //Read Analog value of LDR
pierwszy = String(temp); //String to interger conversion
String drugi, postData_1;
float ldrvalue_1 = temperatureC_1; //Read Analog value of LDR
drugi = String(ldrvalue_1); //String to interger conversion
//Post Data
postData = "mq7val=" + pierwszy;
postData_1 ="mq4val=" + drugi ;
http.begin("http://172.0.0.20/arduino/baza.php"); //Specify request destination
http.addHeader("Content-Type", "application/x-www-form-urlencoded"); //Specify content-type header
float httpCode = http.POST(postData); //Send the request
float httpCode_1 = http.POST(postData_1); //druga wartosc
String payload = http.getString(); //Get the response payload
//Serial.println("LDR Value=" + ldrvalue);
Serial.println(httpCode); //Print HTTP return code
Serial.println(httpCode_1); //drugi
Serial.println("Pierwszy=" + pierwszy);
Serial.println("Drugi=" + drugi);//drugi
http.end(); //Close connection
delay(4000); //Here there is 4 seconds delay plus 1 second delay below, so Post Data at every 5 seconds
digitalWrite(Led_OnBoard, LOW);
delay(1000);
digitalWrite(Led_OnBoard, HIGH);
}