Bonjour,
J'ai fait l'acquisition d'un capteur de température DS18B20 étanche pour mon projet. J'ai voulu tester ce code là :
#include <OneWire.h>
int DS18S20_Pin = 2; //DS18S20 Signal pin on digital 2
//Temperature chip i/o
OneWire ds(DS18S20_Pin); // on digital pin 2
void setup(void) {
Serial.begin(9600);
}
void loop(void) {
float temperature = getTemp();
Serial.println(temperature);
delay(100); //just here to slow down the output so it is easier to read
}
float getTemp(){
//returns the temperature from one DS18S20 in DEG Celsius
byte data[12];
byte addr[8];
if ( !ds.search(addr)) {
//no more sensors on chain, reset search
ds.reset_search();
return -1000;
}
if ( OneWire::crc8( addr, 7) != addr[7]) {
Serial.println("CRC is not valid!");
return -1000;
}
if ( addr[0] != 0x10 && addr[0] != 0x28) {
Serial.print("Device is not recognized");
return -1000;
}
ds.reset();
ds.select(addr);
ds.write(0x44,1); // start conversion, with parasite power on at the end
byte present = ds.reset();
ds.select(addr);
ds.write(0xBE); // Read Scratchpad
for (int i = 0; i < 9; i++) { // we need 9 bytes
data[i] = ds.read();
}
ds.reset_search();
byte MSB = data[1];
byte LSB = data[0];
float tempRead = ((MSB << 8) | LSB); //using two's compliment
float TemperatureSum = tempRead / 16;
return TemperatureSum;
}
Je fais "verifier" et j'ai comme erreur :
DS18S20:6: error: 'OneWire' does not name a type
DS18S20.ino: In function 'float getTemp()':
DS18S20:27: error: 'ds' was not declared in this scope
DS18S20:33: error: 'OneWire' has not been declared
DS18S20:43: error: 'ds' was not declared in this scope
J'me dis donc que le ".h" n'est pas pris en compte. J'ai essayer de le changer de place, de le mettre dans un dossier demander dans le "reamdme" mais rien n'y fait..