Sketch Fehlermeldung...

Nochmal Hallo,
ich bin dabei einen Temperatursensor (DS18B20+) auszulesen und bekomme im Sketch immer eine Fehlermeldung, die ich nicht verstehe :~

Wenn ich auf Verify klicke, schmeisst er folgende Fehlermeldung raus:

error: variable or field 'printAddress' declared void

Kann jemand mal drauf schauen und mir zur Lösung verhelfen ? Bin ja noch Anfänger...

Danke

greatz
Cetax

#include <OneWire.h>
#include <DallasTemperature.h>

// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 2
#define TEMPERATURE_PRECISION 9

// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);

int numberOfDevices;

// arrays to hold device addresses
DeviceAddress insideThermometer;

void setup(void)
{
  // start serial port
  Serial.begin(9600);
  Serial.println("Dallas Temperature IC Control Library Demo");

  // Start up the library
  sensors.begin();
  
  numberOfDevices = sensors.getDeviceCount();

  // locate devices on the bus
  Serial.print("Locating devices...");
  Serial.print("Found ");
  Serial.print(sensors.getDeviceCount(), DEC);
  Serial.println(" devices.");

  // report parasite power requirements
  Serial.print("Parasite power is: ");
  if (sensors.isParasitePowerMode()) Serial.println("ON");
  else Serial.println("OFF");

DeviceAddress insideThermometer = { 0x28, 0x03, 0xF6, 0xC2, 0x03, 0x00, 0x00, 0xA7 };

  // show the addresses we found on the bus
  Serial.print("Device 0 Address: ");
  printAddress(insideThermometer);
  Serial.println();

  // set the resolution to 9 bit
  sensors.setResolution(insideThermometer, TEMPERATURE_PRECISION);

  Serial.print("Device 0 Resolution: ");
  Serial.print(sensors.getResolution(insideThermometer), DEC);
  Serial.println();
}

// function to print a device address
void printAddress(DeviceAddress deviceAddress)
{
  for (uint8_t i = 0; i < 8; i++)
  {
    // zero pad the address if necessary
    if (deviceAddress[i] < 16) Serial.print("0");
    Serial.print(deviceAddress[i], HEX);
  }
}

// function to print the temperature for a device
void printTemperature(DeviceAddress deviceAddress)
{
  float tempC = sensors.getTempC(deviceAddress);
  Serial.print("Temp C: ");
  Serial.print(tempC);
  Serial.print(" Temp F: ");
  Serial.print(DallasTemperature::toFahrenheit(tempC));
}

// function to print a device's resolution
void printResolution(DeviceAddress deviceAddress)
{
  Serial.print("Resolution: ");
  Serial.print(sensors.getResolution(deviceAddress));
  Serial.println();   
}

// main function to print information about a device
void printData(DeviceAddress deviceAddress)
{
  Serial.print("Device Address: ");
  printAddress(deviceAddress);
  Serial.print(" ");
  printTemperature(deviceAddress);
  Serial.println();
}

void loop(void)
{
  // call sensors.requestTemperatures() to issue a global temperature
  // request to all devices on the bus
  Serial.print("Requesting temperatures...");
  sensors.requestTemperatures();
  Serial.println("DONE");

  // print the device information
  printData(insideThermometer);
}

Der Code sieht m. M. eigentlich ok aus... auf welche Zeile bezieht sich denn die Fehlermeldung?

Ciao,

Rudi

Mir kompliert der Sketch richtig und ohne Fehler mit IDE 1.0 Die Funktion konnte ich nicht aus Mangel des Sensors nicht kontrollieren.
Hast Du die Bibiotheken heruntergeladen und ins richtige Verzeichnis kopiert?
Grüße Uwe

Hallo,
also ich habe hier auch die Version 1.0 und die Fehlermeldung bezieht sich auf Zeile 4.
Zumindest wird die nach dem Klick auf Verify makiert.

// Data wire is plugged into port 2 on the Arduino

Und der Ordner mit den Libraries befindet sich hier : arduino-1.0\libraries
Dort heist der Ordner DallasTemperatur.

Sollte die defekt sein, wo kriege ich denn eine Funktionierende her ?
Vieleicht von dir uwefed ? :wink:

Es werden aber noch eine Menge anderer Fehler ausgeworfen, in dem unterem Feld.
Das folgende steht im unterem Feld:

sketch_mar28a:3: error: variable or field 'printAddress' declared void
sketch_mar28a:3: error: 'DeviceAddress' was not declared in this scope
sketch_mar28a:4: error: variable or field 'printTemperature' declared void
sketch_mar28a:4: error: 'DeviceAddress' was not declared in this scope
sketch_mar28a:5: error: variable or field 'printResolution' declared void
sketch_mar28a:5: error: 'DeviceAddress' was not declared in this scope
sketch_mar28a:6: error: variable or field 'printData' declared void
sketch_mar28a:6: error: 'DeviceAddress' was not declared in this scope
sketch_mar28a:11: error: no matching function for call to 'DallasTemperature::DallasTemperature(OneWire*)'
C:\Dokumente und Einstellungen\SONY\Eigene Dateien\Downloads\arduino-1.0-windows\arduino-1.0\libraries\DallasTemperature/DallasTemperature.h:63: note: candidates are: DallasTemperature::DallasTemperature(StratBase*)
C:\Dokumente und Einstellungen\SONY\Eigene Dateien\Downloads\arduino-1.0-windows\arduino-1.0\libraries\DallasTemperature/DallasTemperature.h:38: note:                 DallasTemperature::DallasTemperature(const DallasTemperature&)
sketch_mar28a:16: error: 'DeviceAddress' does not name a type
sketch_mar28a.cpp: In function 'void setup()':
sketch_mar28a:25: error: no matching function for call to 'DallasTemperature::begin()'
C:\Dokumente und Einstellungen\SONY\Eigene Dateien\Downloads\arduino-1.0-windows\arduino-1.0\libraries\DallasTemperature/DallasTemperature.h:69: note: candidates are: void DallasTemperature::begin(uint8_t)
C:\Dokumente und Einstellungen\SONY\Eigene Dateien\Downloads\arduino-1.0-windows\arduino-1.0\libraries\DallasTemperature/DallasTemperature.h:78: note:                 void DallasTemperature::begin(NewOneWire&)
sketch_mar28a:27: error: 'class DallasTemperature' has no member named 'getDeviceCount'
sketch_mar28a:32: error: 'class DallasTemperature' has no member named 'getDeviceCount'
sketch_mar28a:37: error: 'class DallasTemperature' has no member named 'isParasitePowerMode'
sketch_mar28a:40: error: 'DeviceAddress' was not declared in this scope
sketch_mar28a:40: error: expected `;' before 'insideThermometer'
sketch_mar28a:44: error: 'insideThermometer' was not declared in this scope
sketch_mar28a:44: error: 'printAddress' was not declared in this scope
sketch_mar28a:48: error: 'class DallasTemperature' has no member named 'setResolution'
sketch_mar28a:51: error: 'class DallasTemperature' has no member named 'getResolution'
sketch_mar28a.cpp: At global scope:
sketch_mar28a:56: error: variable or field 'printAddress' declared void
sketch_mar28a:56: error: 'DeviceAddress' was not declared in this scope

Was ich nicht verstehe, wieso läuft die bei dir durch (uwefed), hast du den 1zu1 kopiert ?

Vielen Dank für Eure Hilfe...

Greatz
Cetax

was mich etwas bei deiner Fehlermeldung irritiert sind die langen Pfade, bzw. das letzte slash darin. Unter windows ist normalerweise der backslash Standard... und mitten im Pfad zu wechseln ist auch sehr komisch.

ist das normal unter windows & arduino? habe nur osx hier.

habe deinen Code auch 1 zu 1 kopiert, verify geht ohne Fehlermeldung durch. Das erste Mal hatten mir noch die zwei Bibliotheken gefehlt, da gab es ähnliche Fehlermeldungen wie bei dir. Daher ist meine Vermutung, dass er die Dateien nicht korrekt finden kann...

edit: das mit den Pfaden scheint so korrekt zu sein. :astonished:
die Libraries bekommst du von hier MilesBurton.com und hier OneWire Arduino Library, connecting 1-wire devices (DS18S20, etc) to Teensy

Nach einem privaten Austausch mit Cetax:
Der Fehler war, daß die neuste Version der Bibiothek DallasTemperature im zip-File unter dem Verzeichnis "DallasTemperature_372Beta" daherkommt und somit von Arduino IDE nicht gefunden wird. Nach umbenennen des Verzeichnisses in "DallasTemperature" funktionierts.
Grüße Uwe