Компиляция прошивки умного дома ForumHouseV06_08_2016 Печать
Добавил(а) microsin   

Здесь приведено исправление ошибок, которые встретились при компиляции скетча умного дома ForumHouseV06_08_2016 [3].

1. Ошибка "ForumHouseV06_08_2016:11: error: 'OneWire' does not name a type"

Как исправить: установить библиотеку OneWire.

Процесс по шагам:

1. Скачайте архив библиотеки OneWire.zip. Библиотеку проще всего найти в Интернет, воспользовавшись поиском, или ищите нужную библиотеку на официальном сайте Arduino [1].

2. Установите библиотеку, это можно сделать 3 способами.

[Способ 1]

Распакуйте папку из ZIP-архива библиотеки (в нашем примере это папка OneWire) в каталог libraries, находящийся в директории установки Arduino (обычно это папка C:\Program Files (x86)\Arduino\). Перезапустите среду разработки Arduino. На этом установка библиотеки завершена.

[Способ 2]

Этот способ доступен для среды разработки Arduino начиная с версии 1.0.6. Выберите в меню Сервис -> Импортировать библиотеку... -> Add library -> выберите файл архива, который Вы скачали (для нашего примера это файл OneWire.zip). На этом библиотека установлена (среду разработки Arduino перезагружать не надо).

[Способ 3]

Этот способ пригодиться для случаев, когда Вы не смогли найти ZIP-архив библиотеки, но на сайте Arduino нашли статью, где приведен исходный код библиотеки. Тогда Вам нужно сделать следующее:

a) Вручную создайте в папке libraries каталог, имя которого совпадает с именем библиотеки. Для нашего примера это будет папка OneWire.

b) Создайте в этом каталоге два файла, один с расширением *.h (файл заголовка), другой с расширением *.cpp (файл для модуля исходного кода библиотеки). Имена файлов до расширения должны совпадать с именем библиотеки. Для нашего примера это будут два файла: OneWire.h и OneWire.cpp.

c) Методом копирования / вставки (Copy/Paste) скопируйте в эти созданные файлы текст, который нашли на сайте Arduino (или на сайте другого источника). Не перепутайте: *.h это файла для заголовка библиотеки, *.cpp это исходный код библиотеки.

d) Перезапустите среду разработки Arduino. На этом установка библиотеки завершена.

2. Ошибки:

ForumHouseV06_08_2016:12: error: 'DallasTemperature' does not name a type
ForumHouseV06_08_2016:13: error: 'DeviceAddress' does not name a type

Устраняются установкой библиотеки Dallas Temperature (DallasTemperature_372Beta.zip) (или см. [2]).

3. Ошибка "ForumHouseV06_08_2016:68: error: 'dht11' does not name a type" исправляется установкой библиотеки DHT11 [2].

4. Ошибки

ForumHouseV06_08_2016:73: error: 'DS1302' does not name a type
ForumHouseV06_08_2016:74: error: 'Time' does not name a type

и другие связанные ошибки исправляются установкой библиотеки DS1302 [2].

5. Ошибка "ForumHouseV06_08_2016:320: error: 'Serial1' was not declared in this scope" и другие подобные ошибки исправляется правильным выбором платы через меню Сервис -> Плата.

6. Ошибки

ForumHouseV06_08_2016:336: error: 'mp3_set_serial' was not declared in this scope
ForumHouseV06_08_2016:340: error: 'mp3_play' was not declared in this scope
ForumHouseV06_08_2016:643: error: 'mp3_set_volume' was not declared in this scope

и устраняются установкой библиотеки DFPlayer_Mini_Mp3 [2].

7. Ошибка "IRremoteTools.cpp:5: error: 'TKD2' was not declared in this scope" решается удалением каталога библиотеки RobotIRremote и заменой её на библиотеку Arduino-IRremote-master [2].

Как вариант можно поменять ножку для приема сигнала с инфракрасного датчика, откройте файл IRremoteTools.cpp, и поменяйте определение переменной RECV_PIN, например так:

//int RECV_PIN = TKD2; // the pin the IR receiver is connected to
int RECV_PIN = 9;

8. Ошибка "Tone.cpp:535: multiple definition of `__vector_13'..." решается выбором другого таймера для ISR (TIMER_INTR_NAME) (модуль Arduino-IRremote-master\IRremote.cpp). Откройте файл IRremoteInt.h, закомментируйте там текущее определение для выбранного таймера и раскомментруйте определение для нового. Например, для Arduino Mega нужно исправить следующую секцию кода (определение IR_USE_TIMER2 заменено на IR_USE_TIMER3):

// Arduino Mega
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
  //#define IR_USE_TIMER1   // tx = pin 11
  //#define IR_USE_TIMER2     // tx = pin 9
  #define IR_USE_TIMER3   // tx = pin 5
  //#define IR_USE_TIMER4   // tx = pin 6
  //#define IR_USE_TIMER5   // tx = pin 46

[Ссылки]

1. Arduino Libraries site:arduino.cc.
2. 160908Arduino106-libraries.zip.
3. Система "Умный дом" для загородного дома на Arduino Mega2560, HC-05, SIM900,DHT11,3-х DS18B20,RTC-DS1302 site:arduino.ru.