Проблемы со скетчем Arduino и Dallas18B20
- Войдите на сайт для отправки комментариев
Ср, 18/05/2016 - 07:34
Я взял скетч с этого сайта и у меня возникли некоторые проблемы с программой.
У меня немного другой LCD и когда меняю строчки (#include <LiquidCrystal.h>LiquidCrystal lcd(8, 9, 4, 5, 6, 7);) на (#include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x20,16,2);) он выдает ошибку (Ошибка компиляции), как это исправить или нужно что то добавить в код. (пробовал компилировать с разных IDE 1.0.6; 1.6.4;1.6.9;1.6.5.)
Мой диспплей: http://zelectro.cc/Z-LCD_I2C_Keypad_Shield
Сайт со скетчем: http://arduino.ru/forum/proekty/upravlenie-obogrevom-komnaty-pri-pomoshchi-arduino-i-dallas18b20
Скетч:
// Подключаем библиотеку для работы с шиной OneWire
// Термометр будет подключен на Pin2
#include <OneWire.h>
OneWire oneWire(2);
//Подключаем библиотеку для работы с термометром
#include <DallasTemperature.h>
//Создаем объект sensors, подключенный по OneWire
DallasTemperature sensors(&oneWire);
//Создаем переменные для работы с термометром
DeviceAddress tempDeviceAddress; //переменная для хранения адреса датчика
float temp1=0; //переменная для текущего значения температуры
int setTmp=0; // переменная для заданного значения температуры
//Подключаем LCD-дисплей
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x20,16,2);
//Подсветка управляется через пин D10
#define BACKLIGHT_PIN 10
//Создаем переменную для хранения состояния подсветки
boolean backlightStatus = 1;
// Подключаем библиотеку для работы с ARDUINO EEPROM
//Заданная температура будет храниться по адресу 0
#include <EEPROM2.h>
//Реле подключено к пину D11
#define RELAY_PIN 11
//Объявим переменную для хранения состояния реле
boolean relayStatus1=LOW;
//Объявим переменные для задания задержки
long previousMillis1 = 0;
long interval1 = 1000; // интервал опроса датчиков температуры
//Аналоговая клавиатура подключена к пину A0
#define KEYPAD_PIN A0
//Определим значения на аналоговом входе для клавиатуры
#define ButtonUp_LOW 90
#define ButtonUp_HIGH 100
#define ButtonDown_LOW 240
#define ButtonDown_HIGH 280
#define ButtonLeft_LOW 390
#define ButtonLeft_HIGH 450
#define ButtonRight_LOW 0
#define ButtonRight_HIGH 50
#define ButtonSelect_LOW 620
#define ButtonSelect_HIGH 650
void setup() {
//Настроим пин для управления реле
pinMode(RELAY_PIN,OUTPUT);
digitalWrite(RELAY_PIN,LOW);
//Считаем из постоянной памяти заданную температуру
setTmp=EEPROM_read_byte(0);
//Инициализируем термодатчик и установим разрешающую способность 12 бит (обычно она установлена по умолчанию, так что последнюю строчку можно опустить)
sensors.begin();
sensors.getAddress(tempDeviceAddress, 0);
sensors.setResolution(12);
//Настроим подсветку дисплея
pinMode(BACKLIGHT_PIN, OUTPUT);
digitalWrite(BACKLIGHT_PIN, backlightStatus);
//Выведем на дисплей стартовое сообщение на 2 секунды
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("Temp. Controller");
lcd.setCursor(0, 1);
lcd.print(" v1.0 ");
delay(2000);
// выведем на дисплей заданное значение температуры на 2 секунды
lcd.setCursor(0, 1);
lcd.print(" Set temp: ");
lcd.setCursor(12,1);
lcd.print(setTmp);
delay(2000);
//Очистим дисплей
lcd.begin(16, 2);
}
//Определим функцию для опроса аналоговой клавиатуры
//Функция опроса клавиатуры, принимает адрес пина, к которому подключена клавиатура, и возвращает код клавиши:
// 1 - UP
// 2 - DOWN
// 3 - LEFT
// 4 - RIGHT
// 5 - SELECT
int ReadKey(int keyPin)
{
int KeyNum=0;
int KeyValue1=0;
int KeyValue2=0;
//Читаем в цикле аналоговый вход, для подавления дребезга и нестабильности читаем по два раза подряд, пока значения не будут равны.
//Если значения равны 1023 – значит не была нажата ни одна клавиша.
do {
KeyValue1=analogRead(keyPin);
KeyValue2=analogRead(keyPin);
} while (KeyValue1==KeyValue2&&KeyValue2!=1023);
//Интерпретируем полученное значение и определяем код нажатой клавиши
if (KeyValue2<ButtonUp_HIGH&&KeyValue2>ButtonUp_LOW) {KeyNum=1;}//Up
if (KeyValue2<ButtonDown_HIGH&&KeyValue2>ButtonDown_LOW) {KeyNum=2;}//Down
if (KeyValue2<ButtonLeft_HIGH&&KeyValue2>ButtonLeft_LOW) {KeyNum=3;}//Left
if (KeyValue2<ButtonRight_HIGH&&KeyValue2>ButtonRight_LOW) {KeyNum=4;}//Right
if (KeyValue2<ButtonSelect_HIGH&&KeyValue2>ButtonSelect_LOW) {KeyNum=5;}//Select
//Возвращаем код нажатой клавиши
return KeyNum;
}
//Определим процедуру редактирования заданной температуры
//Вызывается по нажатию клавиши Select, отображает на дисплее заданную температуру и позволяет изменять ее клавишами Up и Down
void setTemperature() {
int keyCode=0;
//выводим на дисплей заданное значение температуры
lcd.begin(16,2);
lcd.setCursor(0, 0);
lcd.print(" Setting temp ");
lcd.setCursor(7, 1);
lcd.print(setTmp);
//Опрашиваем клавиатуру, если нажата клавиша Up увеличиваем значение на 1, если Down – уменьшаем на 1
//Если нажаты клавиши Select или Right – цикл опроса прерывается
//Задержки введены для борьбы с дребезгом, если клавиши срабатывают четко – можно уменьшить время задержек или вообще их убрать
do {
keyCode=ReadKey(KEYPAD_PIN);
if (keyCode==1){setTmp++;delay(200);lcd.setCursor(7, 1);lcd.print(setTmp);}
if (keyCode==2){setTmp--;delay(200);lcd.setCursor(7, 1);lcd.print(setTmp);}
} while (keyCode!=5 && keyCode!=4);
delay(200);
//По клавише Select – созраняем в EEPROM измененное значение
//По клавише Right – восстанавливаем старое значение
if (keyCode==5) {EEPROM_write_byte(0, setTmp);}
if (keyCode==4) {setTmp = EEPROM_read_byte(0);}
}
void loop() {
//Модуль опроса датчиков и получения сведений о температуре
//Вызывается 1 раз в секунду
unsigned long currentMillis1 = millis();
if(currentMillis1 - previousMillis1 > interval1) {
previousMillis1 = currentMillis1;
//Запуск процедуры измерения температуры
sensors.setWaitForConversion(false);
sensors.requestTemperatures();
sensors.setWaitForConversion(true);
Delay(750) // задержка для обработки информации внутри термометра, в данном случае можно не задавать
//Считывание значения температуры
sensors.getAddress(tempDeviceAddress, 0);
temp1=sensors.getTempC(tempDeviceAddress);
// Вывод текущего значения температуры на дисплей
lcd.setCursor(0, 0);
lcd.print(" Current temp ");
lcd.setCursor(5, 1);
lcd.print(temp1);
// Serial.println(temp1,4);
}
//Проверка условия включения/выключения нагревателя
if (temp1<setTmp&&relayStatus1==LOW){relayStatus1=HIGH; digitalWrite(RELAY_PIN,HIGH);}
if (temp1>setTmp&&relayStatus1==HIGH){relayStatus1=LOW; digitalWrite(RELAY_PIN,LOW);}
// Опрос клавиатуры
int Feature = ReadKey(KEYPAD_PIN);
if (Feature==1 ) {backlightStatus=1;digitalWrite(BACKLIGHT_PIN, backlightStatus);} //Включение подсветки
if (Feature==2 ) {backlightStatus=0;digitalWrite(BACKLIGHT_PIN, backlightStatus);} //Отключение подсветки
if (Feature==5 ) {delay(200);setTemperature();} //Переход к редактированию заданной температуры
}
Текст ошибки(подробный):
Arduino: 1.6.5 (Windows 7), Плата"Arduino/Genuino Uno" Изменена опция сборки, пересобираем все Используем библиотеку OneWire в папке: C:\Program Files (x86)\Arduino\libraries\OneWire (legacy) Используем библиотеку Wire в папке: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire Используем библиотеку dallas-temperature-control в папке: C:\Program Files (x86)\Arduino\libraries\dallas-temperature-control (legacy) Используем библиотеку LiquidCrystal_I2C1602V1 в папке: C:\Program Files (x86)\Arduino\libraries\LiquidCrystal_I2C1602V1 (legacy) Используем библиотеку EEPROM2 в папке: C:\Program Files (x86)\Arduino\libraries\EEPROM2 (legacy) C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard -IC:\Program Files (x86)\Arduino\libraries\OneWire -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire -IC:\Program Files (x86)\Arduino\libraries\dallas-temperature-control -IC:\Program Files (x86)\Arduino\libraries\LiquidCrystal_I2C1602V1 -IC:\Program Files (x86)\Arduino\libraries\EEPROM2 C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\sketch_may13a.cpp -o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\sketch_may13a.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard -IC:\Program Files (x86)\Arduino\libraries\OneWire -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire -IC:\Program Files (x86)\Arduino\libraries\dallas-temperature-control -IC:\Program Files (x86)\Arduino\libraries\LiquidCrystal_I2C1602V1 -IC:\Program Files (x86)\Arduino\libraries\EEPROM2 -IC:\Program Files (x86)\Arduino\libraries\OneWire\utility C:\Program Files (x86)\Arduino\libraries\OneWire\OneWire(1).cpp -o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire(1).cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard -IC:\Program Files (x86)\Arduino\libraries\OneWire -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire -IC:\Program Files (x86)\Arduino\libraries\dallas-temperature-control -IC:\Program Files (x86)\Arduino\libraries\LiquidCrystal_I2C1602V1 -IC:\Program Files (x86)\Arduino\libraries\EEPROM2 -IC:\Program Files (x86)\Arduino\libraries\OneWire\utility C:\Program Files (x86)\Arduino\libraries\OneWire\OneWire.cpp -o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard -IC:\Program Files (x86)\Arduino\libraries\OneWire -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire -IC:\Program Files (x86)\Arduino\libraries\dallas-temperature-control -IC:\Program Files (x86)\Arduino\libraries\LiquidCrystal_I2C1602V1 -IC:\Program Files (x86)\Arduino\libraries\EEPROM2 -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\utility C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\Wire.cpp -o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\Wire\Wire.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-gcc -c -g -Os -w -ffunction-sections -fdata-sections -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard -IC:\Program Files (x86)\Arduino\libraries\OneWire -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire -IC:\Program Files (x86)\Arduino\libraries\dallas-temperature-control -IC:\Program Files (x86)\Arduino\libraries\LiquidCrystal_I2C1602V1 -IC:\Program Files (x86)\Arduino\libraries\EEPROM2 -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\utility C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\utility\twi.c -o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\Wire\utility\twi.c.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard -IC:\Program Files (x86)\Arduino\libraries\OneWire -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire -IC:\Program Files (x86)\Arduino\libraries\dallas-temperature-control -IC:\Program Files (x86)\Arduino\libraries\LiquidCrystal_I2C1602V1 -IC:\Program Files (x86)\Arduino\libraries\EEPROM2 -IC:\Program Files (x86)\Arduino\libraries\dallas-temperature-control\utility C:\Program Files (x86)\Arduino\libraries\dallas-temperature-control\DallasTemperature.cpp -o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\dallas-temperature-control\DallasTemperature.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard -IC:\Program Files (x86)\Arduino\libraries\OneWire -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire -IC:\Program Files (x86)\Arduino\libraries\dallas-temperature-control -IC:\Program Files (x86)\Arduino\libraries\LiquidCrystal_I2C1602V1 -IC:\Program Files (x86)\Arduino\libraries\EEPROM2 -IC:\Program Files (x86)\Arduino\libraries\LiquidCrystal_I2C1602V1\utility C:\Program Files (x86)\Arduino\libraries\LiquidCrystal_I2C1602V1\LiquidCrystal_I2C.cpp -o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\LiquidCrystal_I2C1602V1\LiquidCrystal_I2C.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard -IC:\Program Files (x86)\Arduino\libraries\OneWire -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire -IC:\Program Files (x86)\Arduino\libraries\dallas-temperature-control -IC:\Program Files (x86)\Arduino\libraries\LiquidCrystal_I2C1602V1 -IC:\Program Files (x86)\Arduino\libraries\EEPROM2 -IC:\Program Files (x86)\Arduino\libraries\EEPROM2\utility C:\Program Files (x86)\Arduino\libraries\EEPROM2\EEPROM2.cpp -o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\EEPROM2\EEPROM2.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-gcc -c -g -x assembler-with-cpp -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\wiring_pulse.S -o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\wiring_pulse.S.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-gcc -c -g -Os -w -ffunction-sections -fdata-sections -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\hooks.c -o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\hooks.c.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-gcc -c -g -Os -w -ffunction-sections -fdata-sections -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\WInterrupts.c -o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\WInterrupts.c.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-gcc -c -g -Os -w -ffunction-sections -fdata-sections -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\wiring.c -o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\wiring.c.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-gcc -c -g -Os -w -ffunction-sections -fdata-sections -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\wiring_analog.c -o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\wiring_analog.c.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-gcc -c -g -Os -w -ffunction-sections -fdata-sections -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\wiring_digital.c -o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\wiring_digital.c.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-gcc -c -g -Os -w -ffunction-sections -fdata-sections -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\wiring_pulse.c -o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\wiring_pulse.c.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-gcc -c -g -Os -w -ffunction-sections -fdata-sections -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\wiring_shift.c -o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\wiring_shift.c.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\abi.cpp -o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\abi.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\CDC.cpp -o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\CDC.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\HardwareSerial.cpp -o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\HardwareSerial.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\HardwareSerial0.cpp -o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\HardwareSerial0.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\HardwareSerial1.cpp -o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\HardwareSerial1.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\HardwareSerial2.cpp -o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\HardwareSerial2.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\HardwareSerial3.cpp -o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\HardwareSerial3.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\HID.cpp -o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\HID.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\IPAddress.cpp -o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\IPAddress.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\main.cpp -o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\main.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\new.cpp -o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\new.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\Print.cpp -o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\Print.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\Stream.cpp -o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\Stream.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\Tone.cpp -o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\Tone.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\USBCore.cpp -o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\USBCore.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\WMath.cpp -o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\WMath.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\WString.cpp -o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\WString.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-ar rcs C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp/core.a C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\wiring_pulse.S.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-ar rcs C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp/core.a C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\hooks.c.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-ar rcs C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp/core.a C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\WInterrupts.c.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-ar rcs C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp/core.a C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\wiring.c.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-ar rcs C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp/core.a C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\wiring_analog.c.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-ar rcs C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp/core.a C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\wiring_digital.c.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-ar rcs C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp/core.a C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\wiring_pulse.c.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-ar rcs C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp/core.a C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\wiring_shift.c.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-ar rcs C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp/core.a C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\abi.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-ar rcs C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp/core.a C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\CDC.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-ar rcs C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp/core.a C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\HardwareSerial.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-ar rcs C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp/core.a C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\HardwareSerial0.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-ar rcs C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp/core.a C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\HardwareSerial1.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-ar rcs C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp/core.a C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\HardwareSerial2.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-ar rcs C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp/core.a C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\HardwareSerial3.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-ar rcs C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp/core.a C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\HID.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-ar rcs C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp/core.a C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\IPAddress.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-ar rcs C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp/core.a C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\main.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-ar rcs C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp/core.a C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\new.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-ar rcs C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp/core.a C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\Print.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-ar rcs C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp/core.a C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\Stream.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-ar rcs C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp/core.a C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\Tone.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-ar rcs C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp/core.a C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\USBCore.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-ar rcs C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp/core.a C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\WMath.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-ar rcs C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp/core.a C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\WString.cpp.o C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-gcc -w -Os -Wl,--gc-sections -mmcu=atmega328p -o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp/sketch_may13a.cpp.elf C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\sketch_may13a.cpp.o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire(1).cpp.o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire.cpp.o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\Wire\Wire.cpp.o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\Wire\utility\twi.c.o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\dallas-temperature-control\DallasTemperature.cpp.o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\LiquidCrystal_I2C1602V1\LiquidCrystal_I2C.cpp.o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\EEPROM2\EEPROM2.cpp.o C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp/core.a -LC:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp -lm C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire.cpp.o: In function `OneWire::reset()': C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire.cpp:138: multiple definition of `OneWire::reset()' C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire(1).cpp.o:C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire(1).cpp:138: first defined here C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire.cpp.o: In function `OneWire::reset()': C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire.cpp:138: multiple definition of `OneWire::write_bit(unsigned char)' C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire(1).cpp.o:C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire(1).cpp:138: first defined here C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire.cpp.o: In function `OneWire::reset()': C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire.cpp:138: multiple definition of `OneWire::read_bit()' C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire(1).cpp.o:C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire(1).cpp:138: first defined here C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire.cpp.o: In function `OneWire::reset()': C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire.cpp:138: multiple definition of `OneWire::write(unsigned char, unsigned char)' C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire(1).cpp.o:C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire(1).cpp:138: first defined here C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire.cpp.o: In function `OneWire::reset()': C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire.cpp:138: multiple definition of `OneWire::write_bytes(unsigned char const*, unsigned int, bool)' C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire(1).cpp.o:C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire(1).cpp:138: first defined here C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire.cpp.o: In function `OneWire::reset()': C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire.cpp:138: multiple definition of `OneWire::read()' C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire(1).cpp.o:C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire(1).cpp:138: first defined here C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire.cpp.o: In function `OneWire::reset()': C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire.cpp:138: multiple definition of `OneWire::read_bytes(unsigned char*, unsigned int)' C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire(1).cpp.o:C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire(1).cpp:138: first defined here C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire.cpp.o: In function `OneWire::reset()': C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire.cpp:138: multiple definition of `OneWire::select(unsigned char const*)' C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire(1).cpp.o:C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire(1).cpp:138: first defined here C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire.cpp.o: In function `OneWire::reset()': C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire.cpp:138: multiple definition of `OneWire::skip()' C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire(1).cpp.o:C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire(1).cpp:138: first defined here C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire.cpp.o: In function `OneWire::reset()': C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire.cpp:138: multiple definition of `OneWire::depower()' C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire(1).cpp.o:C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire(1).cpp:138: first defined here C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire.cpp.o: In function `OneWire::reset()': C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire.cpp:138: multiple definition of `OneWire::reset_search()' C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire(1).cpp.o:C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire(1).cpp:138: first defined here C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire.cpp.o: In function `OneWire::reset()': C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire.cpp:138: multiple definition of `OneWire::OneWire(unsigned char)' C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire(1).cpp.o:C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire(1).cpp:138: first defined here C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire.cpp.o: In function `OneWire::reset()': C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire.cpp:138: multiple definition of `OneWire::OneWire(unsigned char)' C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire(1).cpp.o:C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire(1).cpp:138: first defined here C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire.cpp.o: In function `OneWire::reset()': C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire.cpp:138: multiple definition of `OneWire::target_search(unsigned char)' C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire(1).cpp.o:C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire(1).cpp:138: first defined here C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire.cpp.o: In function `OneWire::reset()': C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire.cpp:138: multiple definition of `OneWire::search(unsigned char*)' C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire(1).cpp.o:C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire(1).cpp:138: first defined here C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire.cpp.o: In function `OneWire::reset()': C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire.cpp:138: multiple definition of `OneWire::crc8(unsigned char const*, unsigned char)' C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire(1).cpp.o:C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire(1).cpp:138: first defined here C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire.cpp.o: In function `OneWire::reset()': C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire.cpp:138: multiple definition of `OneWire::crc16(unsigned char const*, unsigned int, unsigned int)' C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire(1).cpp.o:C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire(1).cpp:138: first defined here C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire.cpp.o: In function `OneWire::reset()': C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire.cpp:138: multiple definition of `OneWire::check_crc16(unsigned char const*, unsigned int, unsigned char const*, unsigned int)' C:\Users\Surama\AppData\Local\Temp\build1030222253309977607.tmp\OneWire\OneWire(1).cpp.o:C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire(1).cpp:138: first defined here collect2.exe: error: ld returned 1 exit status Ошибка компиляции.
Где-то копия библиотеки OneWire - ее нужно удалить.
Спасибо, попробую найти
А можете помочь изменить считывание кнопок, если не сложно. (Цель та же, изменение температуры и отключение экрана, как и в оригинале)
вот тестовый режим этх кнопок:
// Тестировалось на Arduino IDE 1.0.5 #include <Wire.h> // Добавляем необходимые библиотеки #include <LiquidCrystal_I2C.h> int BL = 11; // Вывод управления подсветкой подключен к цифровому выводу 11 с поддержкой ШИМ LiquidCrystal_I2C lcd(0x20,16,2); // Задаем адрес и размерность дисплея // Нажатые кнопки int button; const int BUTTON_NONE = 0; const int BUTTON_RIGHT = 1; const int BUTTON_UP = 2; const int BUTTON_DOWN = 3; const int BUTTON_LEFT = 4; const int BUTTON_SELECT = 5; int getPressedButton() { int buttonValue = analogRead(0); // Считываем значения с аналогового входа(A0) if (buttonValue < 100) { return BUTTON_RIGHT; } else if (buttonValue < 200) { return BUTTON_UP; } else if (buttonValue < 400){ return BUTTON_DOWN; } else if (buttonValue < 600){ return BUTTON_LEFT; } else if (buttonValue < 800){ return BUTTON_SELECT; } return BUTTON_NONE; } void setup() { lcd.init(); // Инициализация lcd analogWrite(BL, 255); // Включаем подсветку на максимальное значение lcd.setCursor(0, 0); // Устанавливаем курсор в начало 1 строки lcd.print("Test mode"); // Выводим текст lcd.setCursor(0, 1); // Устанавливаем курсор в начало 2 строки lcd.print("press any button"); // Выводим текст } void loop() { button = getPressedButton(); switch (button) { case BUTTON_RIGHT: // при нажатии кнопки выводим следующий текст lcd.clear (); delay (70); lcd.setCursor(0, 0); lcd.print("BUTTON: RIGHT"); break; case BUTTON_LEFT: lcd.clear (); delay (70); lcd.setCursor(0, 0); lcd.print("BUTTON: LEFT"); break; case BUTTON_UP: lcd.clear (); delay (70); lcd.setCursor(0, 0); lcd.print("BUTTON: UP"); break; case BUTTON_DOWN: lcd.clear (); delay (70); lcd.setCursor(0, 0); lcd.print("BUTTON: DOWN"); break; case BUTTON_SELECT: lcd.clear (); delay (70); lcd.setCursor(0, 0); lcd.print("BUTTON: SELECT"); break; } }Помогло, видимо корявая библиотека была, там пара файлов повторялась.
Вроде бы все исправил, только немогу разобраться как сохранить измененную температуру не реагирует на кнопку select (сохранение).
void setTemperature() { int keyCode=0; //выводим на дисплей заданное значение температуры lcd.begin(16,2); lcd.setCursor(0, 0); lcd.print(" Setting temp "); lcd.setCursor(7, 1); lcd.print(setTmp); //Опрашиваем клавиатуру, если нажата клавиша Up увеличиваем значение на 1, если Down – уменьшаем на 1 //Если нажаты клавиши Select или Right – цикл опроса прерывается //Задержки введены для борьбы с дребезгом, если клавиши срабатывают четко – можно уменьшить время задержек или вообще их убрать do { button = getPressedButton(); switch (button) { case BUTTON_UP: setTmp++;delay(200);lcd.setCursor(7, 1);lcd.print(setTmp); break; case BUTTON_DOWN: setTmp--;delay(200);lcd.setCursor(7, 1);lcd.print(setTmp); break; } } //По клавише Select – созраняем в EEPROM измененное значение //По клавише Right – восстанавливаем старое значение while (BUTTON_SELECT && BUTTON_RIGHT); delay(200); button = getPressedButton(); switch (button) { case BUTTON_SELECT: EEPROM_write_byte(0, setTmp); break; case BUTTON_RIGHT: setTmp = EEPROM_read_byte(0); } } void loop() { //Модуль опроса датчиков и получения сведений о температуре //Вызывается 1 раз в секунду unsigned long currentMillis1 = millis(); if(currentMillis1 - previousMillis1 > interval1) { previousMillis1 = currentMillis1; //Запуск процедуры измерения температуры sensors.setWaitForConversion(false); sensors.requestTemperatures(); sensors.setWaitForConversion(true); delay(750); // задержка для обработки информации внутри термометра, в данном случае можно не задавать //Считывание значения температуры sensors.getAddress(tempDeviceAddress, 0); temp1=sensors.getTempC(tempDeviceAddress); // Вывод текущего значения температуры на дисплей lcd.setCursor(0, 0); lcd.print(" Current temp "); lcd.setCursor(5, 1); lcd.print(temp1); // Serial.println(temp1,4); } //Проверка условия включения/выключения нагревателя if (temp1<setTmp&&relayStatus1==LOW){relayStatus1=HIGH; digitalWrite(RELAY_PIN,HIGH);} if (temp1>setTmp&&relayStatus1==HIGH){relayStatus1=LOW; digitalWrite(RELAY_PIN,LOW);} // Опрос клавиатуры button = getPressedButton(); switch (button) { case BUTTON_UP: backlightStatus=1;delay(200);digitalWrite(BACKLIGHT_PIN, backlightStatus); break; case BUTTON_DOWN: backlightStatus=0;delay(200);digitalWrite(BACKLIGHT_PIN, backlightStatus); break; case BUTTON_SELECT: delay(200);setTemperature(); } }Весь код:
// Подключаем библиотеку для работы с шиной OneWire // Термометр будет подключен на Pin2 #include <OneWire.h> #include <Wire.h> OneWire oneWire(2); //Подключаем библиотеку для работы с термометром #include <DallasTemperature.h> //Создаем объект sensors, подключенный по OneWire DallasTemperature sensors(&oneWire); //Создаем переменные для работы с термометром DeviceAddress tempDeviceAddress; //переменная для хранения адреса датчика float temp1=0; //переменная для текущего значения температуры int setTmp=0; // переменная для заданного значения температуры //Подключаем LCD-дисплей #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x20,16,2); // Задаем адрес и размерность дисплея. //Подсветка управляется через пин D11 #define BACKLIGHT_PIN 11 //Создаем переменную для хранения состояния подсветки boolean backlightStatus = 1; // Подключаем библиотеку для работы с ARDUINO EEPROM //Заданная температура будет храниться по адресу 0 #include <EEPROM2.h> //Реле подключено к пину D10 #define RELAY_PIN 10 //Объявим переменную для хранения состояния реле boolean relayStatus1=LOW; //Объявим переменные для задания задержки long previousMillis1 = 0; long interval1 = 1000; // интервал опроса датчиков температуры //Аналоговая клавиатура подключена к пину A0 #define KEYPAD_PIN A0 //Определим значения на аналоговом входе для клавиатуры int button; const int BUTTON_NONE = 0; const int BUTTON_RIGHT = 1; const int BUTTON_UP = 2; const int BUTTON_DOWN = 3; const int BUTTON_LEFT = 4; const int BUTTON_SELECT = 5; int getPressedButton() { int buttonValue = analogRead(0); // Считываем значения с аналогового входа(A0) if (buttonValue < 100) { return BUTTON_RIGHT; } else if (buttonValue < 200) { return BUTTON_UP; } else if (buttonValue < 400){ return BUTTON_DOWN; } else if (buttonValue < 600){ return BUTTON_LEFT; } else if (buttonValue < 800){ return BUTTON_SELECT; } return BUTTON_NONE; } void setup() { //Настроим пин для управления реле pinMode(RELAY_PIN,OUTPUT); digitalWrite(RELAY_PIN,LOW); //Считаем из постоянной памяти заданную температуру setTmp=EEPROM_read_byte(0); //Инициализируем термодатчик и установим разрешающую способность 12 бит (обычно она установлена по умолчанию, так что последнюю строчку можно опустить) sensors.begin(); sensors.getAddress(tempDeviceAddress, 0); sensors.setResolution(12); //Настроим подсветку дисплея pinMode(BACKLIGHT_PIN, OUTPUT); digitalWrite(BACKLIGHT_PIN, backlightStatus); //Выведем на дисплей стартовое сообщение на 2 секунды lcd.init(); lcd.setCursor(0, 0); lcd.print("Temp. Controller"); lcd.setCursor(0, 1); lcd.print(" v1.0 "); delay(2000); // выведем на дисплей заданное значение температуры на 2 секунды lcd.setCursor(0, 1); lcd.print(" Set temp: "); lcd.setCursor(12,1); lcd.print(setTmp); delay(2000); //Очистим дисплей lcd.begin(16, 2); } //Определим функцию для опроса аналоговой клавиатуры //Функция опроса клавиатуры, принимает адрес пина, к которому подключена клавиатура, и возвращает код клавиши: int ReadKey(int keyPin) { int KeyNum=0; int KeyValue1=0; int KeyValue2=0; //Читаем в цикле аналоговый вход, для подавления дребезга и нестабильности читаем по два раза подряд, пока значения не будут равны. //Если значения равны 1023 – значит не была нажата ни одна клавиша. do { KeyValue1=analogRead(keyPin); KeyValue2=analogRead(keyPin); } while (KeyValue1==KeyValue2&&KeyValue2!=1023); //Интерпретируем полученное значение и определяем код нажатой клавиши //Возвращаем код нажатой клавиши return KeyNum; } //Определим процедуру редактирования заданной температуры //Вызывается по нажатию клавиши Select, отображает на дисплее заданную температуру и позволяет изменять ее клавишами Up и Down void setTemperature() { int keyCode=0; //выводим на дисплей заданное значение температуры lcd.begin(16,2); lcd.setCursor(0, 0); lcd.print(" Setting temp "); lcd.setCursor(7, 1); lcd.print(setTmp); //Опрашиваем клавиатуру, если нажата клавиша Up увеличиваем значение на 1, если Down – уменьшаем на 1 //Если нажаты клавиши Select или Right – цикл опроса прерывается //Задержки введены для борьбы с дребезгом, если клавиши срабатывают четко – можно уменьшить время задержек или вообще их убрать do { button = getPressedButton(); switch (button) { case BUTTON_UP: setTmp++;delay(200);lcd.setCursor(7, 1);lcd.print(setTmp); break; case BUTTON_DOWN: setTmp--;delay(200);lcd.setCursor(7, 1);lcd.print(setTmp); break; } }while (BUTTON_SELECT && BUTTON_RIGHT); delay(200); //По клавише Select – созраняем в EEPROM измененное значение //По клавише Right – восстанавливаем старое значение button = getPressedButton(); switch (button) { case BUTTON_SELECT: EEPROM_write_byte(0, setTmp); break; case BUTTON_RIGHT: setTmp = EEPROM_read_byte(0); } } void loop() { //Модуль опроса датчиков и получения сведений о температуре //Вызывается 1 раз в секунду unsigned long currentMillis1 = millis(); if(currentMillis1 - previousMillis1 > interval1) { previousMillis1 = currentMillis1; //Запуск процедуры измерения температуры sensors.setWaitForConversion(false); sensors.requestTemperatures(); sensors.setWaitForConversion(true); delay(750); // задержка для обработки информации внутри термометра, в данном случае можно не задавать //Считывание значения температуры sensors.getAddress(tempDeviceAddress, 0); temp1=sensors.getTempC(tempDeviceAddress); // Вывод текущего значения температуры на дисплей lcd.setCursor(0, 0); lcd.print(" Current temp "); lcd.setCursor(5, 1); lcd.print(temp1); // Serial.println(temp1,4); } //Проверка условия включения/выключения нагревателя if (temp1<setTmp&&relayStatus1==LOW){relayStatus1=HIGH; digitalWrite(RELAY_PIN,HIGH);} if (temp1>setTmp&&relayStatus1==HIGH){relayStatus1=LOW; digitalWrite(RELAY_PIN,LOW);} // Опрос клавиатуры button = getPressedButton(); switch (button) { case BUTTON_UP: backlightStatus=1;delay(200);digitalWrite(BACKLIGHT_PIN, backlightStatus); break; case BUTTON_DOWN: backlightStatus=0;delay(200);digitalWrite(BACKLIGHT_PIN, backlightStatus); break; case BUTTON_SELECT: delay(200);setTemperature(); } }