Компиляция прошивки умного дома 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. |