first commit
This commit is contained in:
81
dallas/dallas.ino
Executable file
81
dallas/dallas.ino
Executable file
@@ -0,0 +1,81 @@
|
||||
#include <OneWire.h> // Inclusion de la librairie OneWire
|
||||
|
||||
#define DS18B20 0x28 // Adresse 1-Wire du DS18B20
|
||||
#define BROCHE_ONEWIRE 2 // Broche utilisée pour le bus 1-Wire
|
||||
|
||||
OneWire ds(BROCHE_ONEWIRE); // Création de l'objet OneWire ds
|
||||
|
||||
// Fonction récupérant la température depuis le DS18B20
|
||||
// Retourne true si tout va bien, ou false en cas d'erreur
|
||||
boolean getTemperature(float *temp){
|
||||
byte data[9], addr[8];
|
||||
// data : Données lues depuis le scratchpad
|
||||
// addr : adresse du module 1-Wire détecté
|
||||
|
||||
if (!ds.search(addr)) { // Recherche un module 1-Wire
|
||||
ds.reset_search(); // Réinitialise la recherche de module
|
||||
return false; // Retourne une erreur
|
||||
}
|
||||
|
||||
if (OneWire::crc8(addr, 7) != addr[7]) // Vérifie que l'adresse a été correctement reçue
|
||||
return false; // Si le message est corrompu on retourne une erreur
|
||||
|
||||
if (addr[0] != DS18B20) // Vérifie qu'il s'agit bien d'un DS18B20
|
||||
return false; // Si ce n'est pas le cas on retourne une erreur
|
||||
|
||||
ds.reset(); // On reset le bus 1-Wire
|
||||
ds.select(addr); // On sélectionne le DS18B20
|
||||
|
||||
ds.write(0x44, 1); // On lance une prise de mesure de température
|
||||
delay(800); // Et on attend la fin de la mesure
|
||||
|
||||
ds.reset(); // On reset le bus 1-Wire
|
||||
ds.select(addr); // On sélectionne le DS18B20
|
||||
ds.write(0xBE); // On envoie une demande de lecture du scratchpad
|
||||
|
||||
for (byte i = 0; i < 9; i++) // On lit le scratchpad
|
||||
data[i] = ds.read(); // Et on stock les octets reçus
|
||||
|
||||
// Calcul de la température en degré Celsius
|
||||
*temp = ((data[1] << 8) | data[0]) * 0.0625;
|
||||
|
||||
// Pas d'erreur
|
||||
return true;
|
||||
}
|
||||
|
||||
// setup()
|
||||
void setup() {
|
||||
Serial.begin(9600); // Initialisation du port série
|
||||
}
|
||||
|
||||
// loop()
|
||||
void loop() {
|
||||
float temp;
|
||||
|
||||
|
||||
float vol;
|
||||
int sensorValue = analogRead(A0);
|
||||
int sensorValue2 = analogRead(A1);
|
||||
int sensorValue3 = analogRead(A2);
|
||||
|
||||
vol = (float)sensorValue / 1024 * 5.0;
|
||||
Serial.print("Valeur 1=");
|
||||
Serial.print(sensorValue);
|
||||
Serial.print(" Valeur 2=");
|
||||
Serial.print(sensorValue2);
|
||||
Serial.print(" Valeur 3=");
|
||||
|
||||
Serial.println(sensorValue3);
|
||||
|
||||
// Lit la température ambiante à ~1Hz
|
||||
if(getTemperature(&temp)) {
|
||||
|
||||
// Affiche la température
|
||||
Serial.print("Temperature : ");
|
||||
Serial.print(temp);
|
||||
Serial.write(176); // caractère °
|
||||
Serial.write('C');
|
||||
Serial.println();
|
||||
}
|
||||
delay(1000);
|
||||
}
|
||||
Reference in New Issue
Block a user