Bonjour, existe t'il une sorte d'option dans l'IDE Arduino ou VS Code qui permettrai de montrer dans différents endroit d'un programme des parties ayant rapport les unes avec les autres? Je sais ce n'est pas claire mais je ne sais pas trop comment formuler.
Je prend un exemple: dans différent endroit d'un programme on à une led bleu et une rouge que l'on fait s'allumer ou s'éteindre pour signaliser tel ou tel chose. En début de programme on va déclarer chacune des leds (le port, leur état, etc ...).
Si je supprime la déclaration de la bleu, comment savoir ce qui s'y rapporte dans le programme pour être sur de tout supprimé?
68tjs
July 15, 2022, 10:40am
2
Tu supprimes.
Tu compiles.
Le compilateur va hurler s'il lui manque quelque chose.
Tu regardes les messages d'erreurs.
Au besoin dans le fichier preferences de l'IDE, tu actives le mode "bavard" pour avoir plus de détails.
Autre solution : le compilateur est "intelligent", s'il trouve "quelque chose" qui n'est jamais utilisé, il prend la décision de le supprimer.
Bonjour patricedu29
Je ne sais pas si VS Code est assez évolué, mais l'IDE Arduino 2.0 et Visual Micro (dans Microchip Studio) te signalent, entre autre, des déclarations inexistantes. Ainsi quand
te sera signalé, dans l'IDE 2.0 par
dans Visual Micro.
Mais le mieux à faire est qu tu mettes en ligne un programme pour que l'on puisse voire comment le simplifier.
A+
Cordialement
jpbbricole
J'en était encore avec l'ancienne version de l'IDE. Je viens d'installer le nouveau, sa ressemble de très prêt à VS CODE. Je vais essayer de voir ce que cela donne.
Question, est ce que la libraire HTTPClient.h c'est la même chose que HttpClient.h ?
Ça fait une heure que je la cherche et rien à faire. Elle n'est pas présente dans le gestionnaire de l'IDE et Google ne me trouve que du HttpClient.
J'ai trouvé les autres librairies mais pas celle ci : #include <HTTPClient.h>
Bonjour patricedu29
Peux-tu mettre ton programme en ligne ou un lien où tu l'a trouvé.
Cordialement
jpbbricole
//################# LIBRARIES ################
/*Libraries*/
#include <Wire.h>
#define ETH_CLK_MODE ETH_CLOCK_GPIO17_OUT
#define ETH_PHY_POWER 12
#include <WiFi.h>
#include <HTTPClient.h>
#include <OneWire.h>
#include <DallasTemperature.h>
/*Constant Variables*/
#define Attempts 10 /* Nº of conection retries */
#define uS_TO_S_FACTOR 1000000 /* Conversion factor for micro seconds to seconds */
#define TIME_TO_SLEEP 60/* Time ESP32 will go to sleep (in seconds) */
/*Sensorial Data to be uploaded*/
float temp1;
float temp2;
/*Smart Konnect - URL & User credentials*/
String iotserver="<YOUR SMART-KONNECT URL GOES HERE>"; // Plataform URL
String my_api_id = "<YOUR API-ID GOES HERE>"; // Insert your ID here
String my_api_key = "<YOUR API-KEY GOES HERE>"; //Insert your API_KEY here
/* WIFI Information */
const char* ssid = ""; //Insert your Wifi SSID here
const char* password =""; //Insert Wifi password here
void SK_upload_ESP(){
int httpCode;
String payload;
/*Build Header & Begin Connection*/
HTTPClient http; //Declare object of class HTTPClient
http.begin(iotserver); //Specify request destination
http.addHeader("Content-Type", "application/json");
/*Build paylod*/
String sendInfo="{\"api_id\": \""+String(my_api_id)+"\",";
sendInfo+="\"api_key\": \""+String(my_api_key)+"\",";
sendInfo+="\"temperature1\": \""+String(temp1)+"\",";
sendInfo+="\"temperature2\": \""+String(temp2)+"\"}";
Serial.println(sendInfo);
/*Post payload*/
httpCode = http.POST(sendInfo); //Send the request
payload = http.getString(); //Get the response payload
/*Print Result*/
Serial.println(httpCode); //Print HTTP return code
Serial.println(payload); //Print request response payload
/*Close Connection*/
http.end();
}
void StartWiFi(const char* ssid, const char* password)
{
int connAttempts = 0;
Serial.print(F("\r\nConnecting to: ")); Serial.println(String(ssid));
WiFi.begin(ssid, password);
while ((WiFi.status() != WL_CONNECTED) and (connAttempts<Attempts))
{
delay(500);
Serial.print(".");
connAttempts++;
}
if (WiFi.status() != WL_CONNECTED) {
Serial.println(F("Connection Failed!"));
}
else{
Serial.print(F("WiFi connected with IP: "));
Serial.println(WiFi.localIP());
Serial.println(WiFi.RSSI());
}
}
// Data wire is plugged TO GPIO 4
#define ONE_WIRE_BUS 4
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
void setup(){
// start serial port
Serial.begin(115200);
// Start up the library
sensors.begin();
}
void loop(){
while (true){
if (WiFi.status() == WL_CONNECTED){
sensors.requestTemperatures();
temp1 = sensors.getTempFByIndex(0);
temp2 = sensors.getTempFByIndex(1);
Serial.println(temp1);
Serial.println(temp2);
SK_upload_ESP();
delay(60000);
}else{
/*Connect Wifi*/
StartWiFi(ssid, pass);
delay(500);
}
}
}
Bonjour patricedu29
Où as tu trouvé ce programme (lien)
As tu essayé de compiler avec HttpClient.h?
Cordialement
jpbbricole
Oui j'ai essayé mais du coup il me trouve des erreurs lors de la compilation
Bonjour patricedu29
Il me semble avoir trouvé la bonne ici , dans la collection Espressif.
J'ai recherché guithub HTTPClient.h .
Cordialement
jpbbricole
Il surligne ça:
Ligne 39 HttpClient http; //Declare object of class HTTPClient
Et en bas de l'IDE voila ce qu'il met:
Compilation error: no matching function for call to 'HttpClient::HttpClient()'
HTTPClient fait partie du package de base ESP32. Il n'y a rien de particulier à faire.
A vérifier :
travailles-tu sur ESP32 ?
as-tu sélectionné une carte ESP32 ?
C'est une ESP8266MOD
Dans l'IDE j'ai choisi cette carte.
Le problème c'est que c'est le programme qui pose problème, car j'en est essayé un autre et il fonctionne parfaitement.
Voici l'autre programme, lui n'utilise pas la librairie HTTPClient.h comme on peu le voir
/*********
Rui Santos
Complete project details at https://RandomNerdTutorials.com
*********/
// Import required libraries
#ifdef ESP32
#include <WiFi.h>
#include <ESPAsyncWebServer.h>
#else
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <Hash.h>
#include <ESPAsyncTCP.h>
#include <ESPAsyncWebServer.h>S
#endif
#include <OneWire.h>
#include <DallasTemperature.h>
// Data wire is connected to GPIO 4
#define ONE_WIRE_BUS 4
// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature sensor
DallasTemperature sensors(&oneWire);
// Variables to store temperature values
String temperatureF = "";
String temperatureC = "";
// Timer variables
unsigned long lastTime = 0;
unsigned long timerDelay = 30000;
// Replace with your network credentials
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";
// Create AsyncWebServer object on port 80
AsyncWebServer server(80);
String readDSTemperatureC() {
// Call sensors.requestTemperatures() to issue a global temperature and Requests to all devices on the bus
sensors.requestTemperatures();
float tempC = sensors.getTempCByIndex(0);
if(tempC == -127.00) {
Serial.println("Failed to read from DS18B20 sensor");
return "--";
} else {
Serial.print("Temperature Celsius: ");
Serial.println(tempC);
}
return String(tempC);
}
String readDSTemperatureF() {
// Call sensors.requestTemperatures() to issue a global temperature and Requests to all devices on the bus
sensors.requestTemperatures();
float tempF = sensors.getTempFByIndex(0);
if(int(tempF) == -196){
Serial.println("Failed to read from DS18B20 sensor");
return "--";
} else {
Serial.print("Temperature Fahrenheit: ");
Serial.println(tempF);
}
return String(tempF);
}
const char index_html[] PROGMEM = R"rawliteral(
<!DOCTYPE HTML><html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
<style>
html {
font-family: Arial;
display: inline-block;
margin: 0px auto;
text-align: center;
}
h2 { font-size: 3.0rem; }
p { font-size: 3.0rem; }
.units { font-size: 1.2rem; }
.ds-labels{
font-size: 1.5rem;
vertical-align:middle;
padding-bottom: 15px;
}
</style>
</head>
<body>
<h2>ESP DS18B20 Server</h2>
<p>
<i class="fas fa-thermometer-half" style="color:#059e8a;"></i>
<span class="ds-labels">Temperature Celsius</span>
<span id="temperaturec">%TEMPERATUREC%</span>
<sup class="units">°C</sup>
</p>
<p>
<i class="fas fa-thermometer-half" style="color:#059e8a;"></i>
<span class="ds-labels">Temperature Fahrenheit</span>
<span id="temperaturef">%TEMPERATUREF%</span>
<sup class="units">°F</sup>
</p>
</body>
<script>
setInterval(function ( ) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("temperaturec").innerHTML = this.responseText;
}
};
xhttp.open("GET", "/temperaturec", true);
xhttp.send();
}, 10000) ;
setInterval(function ( ) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("temperaturef").innerHTML = this.responseText;
}
};
xhttp.open("GET", "/temperaturef", true);
xhttp.send();
}, 10000) ;
</script>
</html>)rawliteral";
// Replaces placeholder with DS18B20 values
String processor(const String& var){
//Serial.println(var);
if(var == "TEMPERATUREC"){
return temperatureC;
}
else if(var == "TEMPERATUREF"){
return temperatureF;
}
return String();
}
void setup(){
// Serial port for debugging purposes
Serial.begin(115200);
Serial.println();
// Start up the DS18B20 library
sensors.begin();
temperatureC = readDSTemperatureC();
temperatureF = readDSTemperatureF();
// Connect to Wi-Fi
WiFi.begin(ssid, password);
Serial.println("Connecting to WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
// Print ESP Local IP Address
Serial.println(WiFi.localIP());
// Route for root / web page
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
request->send_P(200, "text/html", index_html, processor);
});
server.on("/temperaturec", HTTP_GET, [](AsyncWebServerRequest *request){
request->send_P(200, "text/plain", temperatureC.c_str());
});
server.on("/temperaturef", HTTP_GET, [](AsyncWebServerRequest *request){
request->send_P(200, "text/plain", temperatureF.c_str());
});
// Start server
server.begin();
}
void loop(){
if ((millis() - lastTime) > timerDelay) {
temperatureC = readDSTemperatureC();
temperatureF = readDSTemperatureF();
lastTime = millis();
}
}
Et tu penses pouvoir compiler un sketch ESP32 sur un ESP8266 ?
Sur ESP8266 :
WiFi.h s'appelle ESP8266WiFi.h
HTTPClient.h s'appelle ESP8266HTTPClient.h
Mais à mon avis tu auras bien d'autre problèmes ...
Et c'est bien un sketch ESP8266, comme tu peux le voir.
J'en encore pas mal de chemin à parcourir mais je suis plein de bonne volonté ....
C'était écrit en gros en plus ....
Je te crois sur parole mais sur ma carte c'est mentionner nul part WEMOS D1 Mini mais uniquement ESP8266MOD.
C'est un clone de D1 mini.
Mais de toutes façons compiler ton sketch ESP32 pour cette carte n'est pas gagné.
Je ne dis pas que c'est impossible, mais cela réclame pas mal de compétences.