Go Down

Topic: problema libreria onewire (Read 1 time) previous topic - next topic

danidiscus

Jul 16, 2012, 08:09 pm Last Edit: Jul 16, 2012, 08:40 pm by danidiscus Reason: 1
ormai sono giorni che cerco di capire dove sbaglio, ma non riesco più a connettere, ormai sono fuso.
Arduino uno r3, libreria OneWire per lettura temo ds18b20, ho sempre lo stesso errore:sketch_jul16b:3: error: 'OneWire' does not name a type
sketch_jul16b.cpp: In function 'void writeTimeToScratchpad(byte*)':
sketch_jul16b:15: error: 'ow' was not declared in this scope
sketch_jul16b.cpp: In function 'void readTimeFromScratchpad(byte*, byte*)':
sketch_jul16b:26: error: 'ow' was not declared in this scope

aiutatemi.

flz47655

Hai installato la libreria?
In C:\arduino-1.0.1\libraries\ devi copiare la cartella OneWire che ti allego per comodità

Ciao

Michele Menniti

#2
Jul 16, 2012, 08:24 pm Last Edit: Jul 16, 2012, 08:26 pm by Michele Menniti Reason: 1
ciao, capisco l'emergenza ma la tua è un'entrata a gamba tesa :smiley-eek-blue:
Allora la prima cosa è gentilmente spostare il Topic nella specifica sezione software (sono attive proprio da oggi), la seconda è quella di dargli un titolo adeguato invece di questo urlo straziante :D, come scritto e riscritto nelle regole e nei consigli iniziali che, preso dalla preoccupazione avrai omesso di leggere  ;)
puoi fare queste cose gentilmente? aiuti te stesso e chi potrebbe  aiutarti ;)
intanto segui il consigli di flz, che magari sposterà anche lui replicandoi nel nuovo topic.
Grazie a tutti per la collaborazione.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

flz47655

Non ti ha risposto nessuno perché hai messo un titolo da non mettere mai! Dovevi scrivere ad esempio: "Problema libreria OneWire"
Ad ogni modo sembra che hai scordato di inserire

Code: [Select]
#include <OneWire.h>

Oppure non hai copiato i file della libreria (o tutti e due), il messaggio di errore dice che il compilatore non trova le funzioni che chiami..

Per provare la libreria che ti ho allegato prova questo codice in un nuovo sketch:

Code: [Select]

// Sample DS18B20
#include <OneWire.h>

// Sensor on pin 9
OneWire  ds(9);

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

byte deviceFounds = 0;
void loop() {
 byte data[12];
 byte addr[8];
 float celsius;
 
 // Search for the next device. The addrArray is an 8 byte array. If a device is found, addrArray is filled with the device's address and true is returned.
 // If no more devices are found, false is returned.
 if (!ds.search(addr)) {
   if(deviceFounds == 0)
   {
     Serial.println("No devices found"); // No more addresses    
     Serial.println("Try check probe"); // No more addresses    
     delay(1000);
   }
   deviceFounds = 0;
   
   // Begin a new search. The next use of search will begin at the first device.
   ds.reset_search();
   delay(250);
   return;
 }else{
  deviceFounds++;
 }
 
 // Compute a CRC check on an array of data.
 if (OneWire::crc8(addr, 7) != addr[7]) {    
     Serial.println("Address Error");      
     Serial.println("CRC is not valid");
     delay(1000);
     return;
 }    

 // Reset the 1-wire bus. Usually this is needed before communicating with any device.
 ds.reset();
 // Select a device based on its address. After a reset, this is needed to choose which device you will use,
 // and then all communication will be with that device, until another reset.
 ds.select(addr);  
 // Write a byte, and leave power applied to the 1 wire bus.
 ds.write(0x44);         // start conversion, with parasite power on at the end
   
 // from Datasheet max conversion time is 750ms
 delay(750);
 
 ds.reset();  
 ds.select(addr);    
 ds.write(0xBE);         // Read Scratchpad
   for (byte i = 0; i < 9; i++) {  // we need 9 bytes
   data[i] = ds.read();
 }

 // Check data with CRC
 if (OneWire::crc8(data, 8) != data[8]) {      
     Serial.println("Data Error");      
     Serial.println("CRC is not valid");
     delay(1000);
     return;
 }
 
 // convert the data to actual temperature
 int raw = (data[1] << 8) | data[0];
 byte cfg = (data[4] & 0x60); // default is 12 bit resolution, 750 ms conversion time
 
 celsius = (float)raw / 16.0;
 Serial.println("Temperatura");
 /*
 for( i = 0; i < 8; i++) {  
    Serial.println(addr[i], HEX);
 }  */
 Serial.println(celsius);
}


Fammi sapere
Ciao!

danidiscus


ciao, capisco l'emergenza ma la tua è un'entrata a gamba tesa :smiley-eek-blue:
Allora la prima cosa è gentilmente spostare il Topic nella specifica sezione software (sono attive proprio da oggi), la seconda è quella di dargli un titolo adeguato invece di questo urlo straziante :D, come scritto e riscritto nelle regole e nei consigli iniziali che, preso dalla preoccupazione avrai omesso di leggere  ;)
puoi fare queste cose gentilmente? aiuti te stesso e chi potrebbe  aiutarti ;)
intanto segui il consigli di flz, che magari sposterà anche lui replicandoi nel nuovo topic.
Grazie a tutti per la collaborazione.

come lo sposto?
grazie

Go Up