IDE meldt: 'OneWire' does not name a type

Arduino specifieke Software
Berichten: 12
Geregistreerd: 22 Dec 2015, 12:51

IDE meldt: 'OneWire' does not name a type

Berichtdoor pedro » 18 Feb 2016, 14:45

Ik probeer een temp sensor DS18B20 uit te lezen via mn Arduino. Sketch geeft echter bovenstaande melding. Behoorlijk cryptisch vind ik . Iets is niet benoemd maak ik er uit op? Volledigheidshalve hier de sketch die ik compleet importeerde.
cpp code
#include <OneWire.h>

// OneWire DS18S20, DS18B20, DS1822 Temperature Example
//
// http://www.pjrc.com/teensy/td_libs_OneWire.html
//
// The DallasTemperature library can do all this work for you!
// http://milesburton.com/Dallas_Temperatu ... ol_Library

OneWire ds(10); // on pin 10 (a 4.7K resistor is necessary)

void setup(void) {
Serial.begin(9600);
}

void loop(void) {
byte i;
byte present = 0;
byte type_s;
byte data[12];
byte addr[8];
float celsius, fahrenheit;

if ( !ds.search(addr)) {
Serial.println("No more addresses.");
Serial.println();
ds.reset_search();
delay(250);
return;
}

Serial.print("ROM =");
for( i = 0; i < 8; i++) {
Serial.write(' ');
Serial.print(addr[i], HEX);
}

if (OneWire::crc8(addr, 7) != addr[7]) {
Serial.println("CRC is not valid!");
return;
}
Serial.println();

// the first ROM byte indicates which chip
switch (addr[0]) {
case 0x10:
Serial.println(" Chip = DS18S20"); // or old DS1820
type_s = 1;
break;
case 0x28:
Serial.println(" Chip = DS18B20");
type_s = 0;
break;
case 0x22:
Serial.println(" Chip = DS1822");
type_s = 0;
break;
default:
Serial.println("Device is not a DS18x20 family device.");
return;
}

ds.reset();
ds.select(addr);
ds.write(0x44, 1); // start conversion, with parasite power on at the end

delay(1000); // maybe 750ms is enough, maybe not
// we might do a ds.depower() here, but the reset will take care of it.

present = ds.reset();
ds.select(addr);
ds.write(0xBE); // Read Scratchpad

Serial.print(" Data = ");
Serial.print(present, HEX);
Serial.print(" ");
for ( i = 0; i < 9; i++) { // we need 9 bytes
data[i] = ds.read();
Serial.print(data[i], HEX);
Serial.print(" ");
}
Serial.print(" CRC=");
Serial.print(OneWire::crc8(data, 8), HEX);
Serial.println();

// Convert the data to actual temperature
// because the result is a 16 bit signed integer, it should
// be stored to an "int16_t" type, which is always 16 bits
// even when compiled on a 32 bit processor.
int16_t raw = (data[1] << 8) | data[0];
if (type_s) {
raw = raw << 3; // 9 bit resolution default
if (data[7] == 0x10) {
// "count remain" gives full 12 bit resolution
raw = (raw & 0xFFF0) + 12 - data[6];
}
} else {
byte cfg = (data[4] & 0x60);
// at lower res, the low bits are undefined, so let's zero them
if (cfg == 0x00) raw = raw & ~7; // 9 bit resolution, 93.75 ms
else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
//// default is 12 bit resolution, 750 ms conversion time
}
celsius = (float)raw / 16.0;
fahrenheit = celsius * 1.8 + 32.0;
Serial.print(" Temperature = ");
Serial.print(celsius);
Serial.print(" Celsius, ");
Serial.print(fahrenheit);
Serial.println(" Fahrenheit");
}

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: IDE meldt: 'OneWire' does not name a type

Berichtdoor nicoverduin » 18 Feb 2016, 16:11

Heb je de library "OneWire" wel in de "mijn documenten/Arduino/libraries" folder staan? M.a.w. als het goed is kreeg je voor deze melding er een dat "oneWire.h" niet gevonden is. Dat jij een boodschap cryptisch vind is meestal een gebrek aan kennis van de taal C/C++....
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: IDE meldt: 'OneWire' does not name a type

Berichtdoor shooter » 18 Feb 2016, 22:22

in regel 1 jawel de allereerste wordt nog een programma geladen (onewire)
en dat moet staan in de library subfolder van arduino en dan weer in een subfolder met de naam onewire.
ofwel iets van arduino/library/onewire/onewire.h
er staan er al een heel stel zoals je ziet, die worden gemaakt als je arduino installeert.
als het wel compileert, dan is de volgende stap natuurlijk om het in je uno te krijgen.
en als het erin ziet moet je de monitor starten.

en je hebt wel gelijk hoor, hij kan het niet vinden dat is cryptisch maar, is wel het enige wat een compiler kan, de oplossing is meestal simpel.
paul deelen
shooter@home.nl

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: akiliadica en 104 gasten