Bonjour,
Je voudrais savoir comment réduire ou modifier la résolution du capteur DS18B20 en 9-10-11 ou 12 bits.
Merci par avance,
Cordialement,
Alain
il y a de nombreuses bibliothèques pour le DS18B20
par exemple celle de @robtillaart
offre dans son constructeur la possibilité de choisir le résolution
la valeur par défaut est 9
les autres bibliothèques ont généralement une option similaire. Par exemple si vous prenez
vous avez une fonction
qui permet de préciser la résolution
Bonjour,
Merci pour votre réponse.
J'utilise la bibliothèque Dallas qui ne permettrait pas cette modification ?
Cordialement
Alain
Bonjour @retraite
setResolution() existe également dans la bibliothèque DallasTemperature de Miles Burton
A définir globalement pour tous les capteurs présents sur le bus ou capteur par capteur :
// get global resolution
uint8_t getResolution();
// set global resolution to 9, 10, 11, or 12 bits
void setResolution(uint8_t);
// returns the device resolution: 9, 10, 11, or 12 bits
uint8_t getResolution(const uint8_t*);
// set resolution of a device to 9, 10, 11, or 12 bits
bool setResolution(const uint8_t*, uint8_t,
bool skipGlobalBitResolutionCalculation = false);
Merci pour cette information, mais en tant que débutant je voudrais savoir la syntaxe à écrire dans le programme pour ne pas avoir d'erreur à la compilation.
Cordialement
Alain
je viens de faire un ajout au messsage précédent avec la syntaxe
Pardonnez moi mais c'est un peu du chinois pour moi, comment intégrer tout cela dans mon programme.
Alain
si vous regardez les exemples, vous verrez comment faire
...
si vous postez votre programme, on peut vous dire exactement comment faire aussi
Certes, comment faire pour poster le programme SVP.
C'est vrai que ce serait plus simple.
Alain
-
Assurez vous d'indenter le code correctement dans l'outil de développement avant de le copier pour le coller ici. (Cela se fait en pressant ctrlT sur PC ou cmdT sur un Mac)
-
ensuite vous sélectionnez tout le code
-
puis dans le menu édition vous choisissez
Copier pour le forum
(ça va copier le code et rajouter au début et à la fin du code des balises pour que le code apparaisse correctement formaté ici) -
ensuite vous collez simplement dans votre post ce que vous avez copié
Vous allez me trouver stupide mais je ne comprends pas la méthode.
Pour parlez "d'indenter" le programme, avec ctrl T, je n'ai jamais vu ce verbe (à faire où)
Je peux sélectionner mon programme qui est dans l'IDE arduino
Où est le menu "édition" ?
Comment coller le résultat sur notre dial ?
Mille excuses
Alain
dans la barre des menus de l'application...
vous ne savez pas copier / coller du texte ?
il y a le raccourci Clavier ou dans le menu édition du navigateur web, il y a "coller"
indenter veux dire organiser le code en sortes paragraphes et sous paragraphes, avec des décalages en début de lignes pour représenter les blocs
par exemple si votre code ressemble à cela
void setup() {pinMode(LED_BUILTIN, OUTPUT); Serial.begin(115200);}
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
if (Serial.available())
{Serial.print("reçu:");
Serial.println((char) Serial.read());
}
}
C'est moche et illisible.
Indenter le code, ça veut dire l'organiser pour qu'il soit lisible
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(115200);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
if (Serial.available())
{
Serial.print("reçu:");
Serial.println((char) Serial.read());
}
}
Lisez les recommandations listées dans "Les bonnes pratiques du Forum Francophone”
```cpp
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal.h>
// Initialisation du capteur de température
OneWire oneWire(2); // Broche 2 pour la communication de données
DallasTemperature sensors(&oneWire);
float calibrationOffset = 0; // Ajustez cette valeur selon la calibration
// Initialisation de l'écran LCD ; .............
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
void setup() {
// Démarre les communications avec le capteur et l'écran
sensors.begin();
lcd.begin(16, 2);
lcd.print("Alain Veronique");
// Affichage initial sur LCD
lcd.setCursor(0, 2);
lcd.print(" Temp:");
}
void loop() {
sensors.requestTemperatures();
float temperature = sensors.getTempCByIndex(0) + calibrationOffset;
lcd.setCursor(7, 1);
lcd.print(temperature);
lcd.print((char)178);
lcd.print("C");
delay(2000); // Mise à jour toutes les secondes
}
Voici mon code issu de l'IDE
Je vous précise tout de même que j'ai 73 ans et que j'ai débuté Arduino il y a un mois ce qui explique que je ne peut tout connaître.
Cordialement
Alain
Un sensors.setResolution(9);
après le sensors.begin();
devrait faire l'affaire pour la plus basse résolution et donc la conversion la plus rapide
73ans , c'est jeune par rapport à certains aidants de ce forum, aucun d'entre eux n'ayant la prétention de tout connaître
Il me surprendrait beaucoup que Dallas ait écrit une bibliothèque.
Dallas est une société qui a été achetée par la société Maxim à une époque où Arduino n'existait pas encore.
Il y a maintenant quelques années, Maxim a été acheté par la société Analog Devices.
Quand tu cites un nom de bibliothèque, il faut donner le nom de son auteur.
Gardes bien en tête que l'univers Arduino est un peu un gros foutoir et que son univers est plus impitoyable que celui de la série télé Dallas ![]()
Bernard
Un jeune de presque 79 ans.
Pas de souci - on a tous commencé sans rien savoir et a tout âge ! Ça permet de remuer les neurones c’est très bien ![]()
Bonsoir,
Merci à al1fch pour sa solution, ça fonctionne très bien.
Bonne soirée à tous
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.
