Hello, I have some issues with latest CodeBlocks for Arduino.
It doesn't build code that has been built successfully in Arduino IDE.
Let me explain a bit my problem.
I have Anarduino MiniWireless and couple thermo sensors DS18B20 connected to it.
I'm using code from this web page:
http://www.hobbytronics.co.uk/ds18b20-arduino
#include <OneWire.h>
#include <DallasTemperature.h>
// Data wire is plugged into pin 2 on the Arduino
#define ONE_WIRE_BUS 2
// 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);
void setup(void)
{
// start serial port
Serial.begin(9600);
Serial.println("Dallas Temperature IC Control Library Demo");
// Start up the library
sensors.begin();
}
void loop(void)
{
// call sensors.requestTemperatures() to issue a global temperature
// request to all devices on the bus
Serial.print(" Requesting temperatures...");
sensors.requestTemperatures(); // Send the command to get temperatures
Serial.println("DONE");
Serial.print("Temperature for Device 1 is: ");
Serial.print(sensors.getTempCByIndex(0)); // Why "byIndex"?
// You can have more than one IC on the same bus.
// 0 refers to the first IC on the wire
}
I've copied OneWire and DallasTemperature Modules into library directory and added path to them in Build settings for project.
and after Build I receive such errors:
arduino\libraries\OneWire\OneWire.cpp|470|warning: only initialized variables can be placed into program memory area|
||=== Build: Arduino Duemilanove (328) in sensors (compiler: GNU AVR GCC Compiler) ===|
build\sensors.o||In function `global constructors keyed to oneWire':|
sensors.ino:(.text._GLOBAL__I_oneWire+0x16)||undefined reference to `DallasTemperature::DallasTemperature(OneWire*)'|
build\sensors.o||In function `loop':|
sensors.ino:(.text.loop+0x20)||undefined reference to `DallasTemperature::requestTemperatures()'|
sensors.ino:(.text.loop+0x3c)||undefined reference to `DallasTemperature::getTempCByIndex(unsigned char)'|
build\sensors.o||In function `setup':|
sensors.ino:(.text.setup+0x24)||undefined reference to `DallasTemperature::begin()'|
||=== Build failed: 4 error(s), 1 warning(s) (0 minute(s), 2 second(s)) ===|
What does it mean this error ?
"In function `global constructors keyed to oneWire': undefined reference to `DallasTemperature::DallasTemperature(OneWire*)'"
Seems something wrong with passing references in CodeBlocks.
Please advice.
Hello,
Thank for your answers.
There is full build log:
Running target pre-build steps
D:\snowrail\CodeBlocks-Arduino-20140626\CodeBlocks\ArduinoUploader "D:\snowrail\sensors\." duemilanove328 - 16 0 "D:\snowrail\sensors\build\/lib_duemilanove328_16.a" "D:\snowrail\sensors\build\/core_duemilanove328_16.a"
Arduino Compiler & Uploader Version 0.8.9
(C)2013 Developed by Stanley Huang <stanleyhuangyc@gmail.com>, distributed under GPL license
arduino/libraries/OneWire/OneWire.cpp:470: warning: only initialized variables can be placed into program memory area
Build Target: Arduino Duemilanove (328) (MCU: atmega328p)
Referenced libraries: [OneWire]
Compiling library [OneWire]...
avr-g++ -c -Os -s -pipe -fno-exceptions -ffunction-sections -fdata-sections -MMD -DARDUINO=105 -DF_CPU=16000000L -mmcu=atmega328p -Iarduino/hardware/arduino/cores/arduino -Iarduino/hardware/arduino/variants/standard -Iarduino/libraries/OneWire "arduino/libraries/OneWire/OneWire.cpp" -o "C:\Users\ramz\AppData\Local\Temp/OneWire.cpp.o"
-------------- Build: Arduino Duemilanove (328) in sensors (compiler: GNU AVR GCC Compiler)---------------
Linking console executable: build\sensors_duemilanove328.elf
build\sensors.o: In function `global constructors keyed to oneWire':
sensors.ino:(.text._GLOBAL__I_oneWire+0x16): undefined reference to `DallasTemperature::DallasTemperature(OneWire*)'
build\sensors.o: In function `loop':
sensors.ino:(.text.loop+0x20): undefined reference to `DallasTemperature::requestTemperatures()'
sensors.ino:(.text.loop+0x3c): undefined reference to `DallasTemperature::getTempCByIndex(unsigned char)'
build\sensors.o: In function `setup':
sensors.ino:(.text.setup+0x24): undefined reference to `DallasTemperature::begin()'
Process terminated with status 1 (0 minute(s), 2 second(s))
4 error(s), 1 warning(s) (0 minute(s), 2 second(s))
copied folders with libraries from Arduino IDE into folder with libraries for CodeBlocks:
d:\snowrail\CodeBlocks-Arduino-20140626\CodeBlocks\arduino\libraries\
so I have:
d:\snowrail\CodeBlocks-Arduino-20140626\CodeBlocks\arduino\libraries\dallas-temperature-control\
d:\snowrail\CodeBlocks-Arduino-20140626\CodeBlocks\arduino\libraries\OneWire\
Then I modify Build options for project -> Arduino Duemilanove(328) -> Search directories tab -> Compiler tab -> Add two options: $(ARDUINO_DIR)\libraries\OneWire and $(ARDUINO_DIR)\libraries\dallas-temperature-control
Without this modification it did'n work at all - did't fount library
#include <OneWire.h>
#include <DallasTemperature.h>
and of course I've added #include <Arduino.h>
I'm using Code::Blocks 13.12 rev 9501
SDK Version 1.19.0
I've downloaded it from http://sourceforge.net/projects/arduinodev/files/
CodeBlocks-Arduino-20140626.7z
So I need go to http://arduinodev.com/forums/ ?