Официальный сайт компании Arduino по адресу arduino.cc
Ошибка при компиляции
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Вс, 08/07/2018 - 21:17
Всем добра.
Уровень: начинающий /Один проект по готовому скетчу. В железе разбираюсь/
Взял, работающий /по словам автора/ скетч отсюда: https://m.youtube.com/watch?v=3x-GJ6miaVk
Arduino IDE1.8.5 при компиляции выдает ошибку: compilation terminated. exit status 1. Fehler beim Kompilieren für das Board Arduino/Genuino Uno.
Заранее спасибо.
#define LCD_CS A3 // Chip Select goes to Analog 3 #define LCD_CD A2 // Command/Data goes to Analog 2 #define LCD_WR A1 // LCD Write goes to Analog 1 #define LCD_RD A0 // LCD Read goes to Analog 0 #include "Adafruit_GFX.h"// Hardware-specific library #include <MCUFRIEND_kbv.h> MCUFRIEND_kbv tft; #include <BME280I2C.h> #include <Wire.h> #include <radio.h> #include <RDA5807M.h> #define FIX_VOLUME 3 bool BT3 = false; byte StN = 0; // Номер станции из массива биндов станций int StFreq [] = {9190, 10340, 9640,9860,10090,9320,10450,10780,9910}; // 13 символов char StName[][14] = { " Humor FM ", " ROCKS ", "Radio Mogilev", "Russkoe radio", " Radius FM ", " Pilot FM ", " Radio BA ", " Mir ", " Culture " }; // датчик температуры, давления и влажности BME280I2C bme; // Default : forced mode, standby time = 1000 ms // Oversampling = pressure ×1, temperature ×1, humidity ×1, filter off, //bool metric = true; // задаем метрическую систему измерений float temp(NAN), hum(NAN), pres(NAN); // uint8_t pressureUnit(5); // Часы #include <iarduino_RTC.h> iarduino_RTC time(RTC_DS1307); #define FIX_BAND RADIO_BAND_FM ///< The band that will be tuned by this sketch is FM. #define FIX_STATION 9190 ///< The station that will be tuned by this sketch is 89.30 MHz. #define FIX_VOLUME 3 ///< The volume that will be set by this sketch is level 4. #include <TouchScreen.h> // калибровка тачскрина #define TS_MINX 84 #define TS_MINY 62 #define TS_MAXX 953 #define TS_MAXY 904 // Сила нажатия на дисплей #define MINPRESSURE 10 #define MAXPRESSURE 1000 // Последним параметром указывается сопротивление между X+ и X- // Для данных дисплеев 300 подойдет uint8_t YP = A1; // must be an analog pin, use "An" notation! uint8_t XM = A2; // must be an analog pin, use "An" notation! uint8_t YM = 7; // can be a digital pin uint8_t XP = 6; // can be a digital pin TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300); /* some RGB color definitions */ #define Black 0x0000 /* 0, 0, 0 */ #define Navy 0x000F /* 0, 0, 128 */ #define DarkGreen 0x03E0 /* 0, 128, 0 */ #define DarkCyan 0x03EF /* 0, 128, 128 */ #define Maroon 0x7800 /* 128, 0, 0 */ #define Purple 0x780F /* 128, 0, 128 */ #define Olive 0x7BE0 /* 128, 128, 0 */ #define LightGrey 0xC618 /* 192, 192, 192 */ #define DarkGrey 0x7BEF /* 128, 128, 128 */ #define Blue 0x001F /* 0, 0, 255 */ #define Green 0x07E0 /* 0, 255, 0 */ #define Cyan 0x07FF /* 0, 255, 255 */ #define Red 0xF800 /* 255, 0, 0 */ #define Magenta 0xF81F /* 255, 0, 255 */ #define Yellow 0xFFE0 /* 255, 255, 0 */ #define White 0xFFFF /* 255, 255, 255 */ #define Orange 0xFD20 /* 255, 165, 0 */ #define GreenYellow 0xAFE5 /* 173, 255, 47 */ int p_X, p_Y, Vol; byte P_X, P_Y, P_Button; RDA5807M radio; // Create an instance of Class for RDA5807M Chip void setup(void) { pinMode(10, OUTPUT); //реле digitalWrite(10, HIGH); //Отключаем реле pinMode(13, OUTPUT); uint16_t ID = tft.readID(); // tft.begin(ID); tft.setRotation(1); //Landscape tft.fillScreen(Black); bme.begin(); time.begin(); // установка времени // time.settime(0,6,8,13,06,17,2); // _ сек, _ мин, _ час, _ день месяца, _ месяц, _ год, день недели 0-вск 6-суб tft.drawRoundRect(1,1,318,46,10, Cyan); tft.drawTriangle(40, 8, 40, 38, 8,24 , Cyan); tft.drawTriangle(280, 8, 280, 38, 310, 24, Cyan); delay(200); // Initialize the Radio radio.init(); // Set all radio setting to the fixed values. StChange(0); radio.setVolume(FIX_VOLUME); radio.setMono(false); radio.setMute(false); radio.setBassBoost(false); tft.fillCircle(160, 108, 4, White); //Точки между час и мин tft.fillCircle(160, 130, 4, White); // tft.fillCircle(265, 126, 2, LightGrey); //Точки между мин и сек // tft.fillCircle(265, 136, 2, LightGrey); tft.setTextSize(2); tft.setTextColor(Green, Black); tft.setCursor(71,210); tft.print(radio.getVolume()); tft.fillTriangle(64, 238, 255, 238, 255, 206, Black); tft.drawTriangle(64, 238, 255, 238, 255, 206, Green); tft.fillTriangle(64, 238, 64+((radio.getVolume()+1)*12), 238, 64+((radio.getVolume()+1)*12), 238-((radio.getVolume()+1)*2), Green); tft.setTextSize(2); tft.setCursor(8,70); tft.drawRect(1,61,48,34,DarkGrey); tft.setTextColor(DarkGrey, Black); tft.print("BT1"); tft.setCursor(8,118); tft.drawRect(1,109,48,34, DarkGrey); tft.setTextColor(DarkGrey, Black); tft.print("BT2"); tft.setCursor(8,166); tft.drawRoundRect(1,157,48,34,8, DarkGrey); tft.setTextColor(DarkGrey, Black); tft.print("FAN"); tft.setCursor(8,214); tft.drawRoundRect(1,205,48,34,8, DarkGrey); tft.setTextColor(DarkGrey, Black); tft.print("MUT"); tft.setCursor(276,70); tft.drawRoundRect(271,109,48,34,8, DarkGrey); tft.setTextColor(DarkGrey, Black); tft.print("BT4"); tft.setCursor(276,118); tft.drawRoundRect(271,61,48,34,8, DarkGrey); tft.setTextColor(DarkGrey, Black); tft.print("BT5"); tft.setCursor(276,166); tft.drawRoundRect(271,157,48,34,8, DarkGrey); tft.setTextColor(DarkGrey, Black); tft.print("BT6"); tft.setCursor(276,214); tft.drawRoundRect(271,205,48,34,8, DarkGrey); tft.setTextColor(DarkGrey, Black); tft.print("BAS"); } void loop() { // Отображаем Дату и время if(millis()%1000==0){ // если прошла 1 секунда tft.setTextColor(White, Black); tft.setTextSize(7); tft.setCursor(67, 92); // выводим время - час tft.print(time.gettime("H")); // tft.setCursor(160, 90); // выводим : // tft.print(":"); tft.setCursor(175, 92); // выводим время - мин tft.print(time.gettime("i")); tft.setCursor(274,120); tft.setTextColor(LightGrey, Black); tft.setTextSize(3); // tft.println(time.gettime("s")); tft.setTextColor(Yellow, Black); tft.setTextSize(2); tft.setCursor(72, 156); tft.println(time.gettime("d.m.Y D")); // выводим дату // tft.println(time.gettime("d.m.Y")); // выводим дату delay(1); // приостанавливаем на 1 мс, чтоб не выводить время несколько раз за 1мс // Отображаем данные с датчика BME-280 bme.read(pres, temp, hum, B101); // unit: B000 = Pa, B001 = hPa, B010 = Hg, B011 = atm, B100 = bar, B101 = torr, B110 = N/m^2, B111 = psi tft.setTextColor(Orange, Black); tft.setTextSize(2); tft.setCursor(82, 60); tft.print(temp,1); tft.print("'C "); tft.setTextColor(Blue, Black); tft.print(hum,1); tft.print("% "); tft.setCursor(108, 180); tft.setTextColor(Olive, Black); tft.print(pres,1); tft.print(" torr"); } // Конецблока вывода даты/времени digitalWrite(13, HIGH); // Считываем координаты нажатия TSPoint p = ts.getPoint(); digitalWrite(13, LOW); pinMode(XM, OUTPUT); pinMode(YP, OUTPUT); // **************************** ОБРАБОТКА НАЖАТИЯ НА ТАЧСКРИН ******************************************** // Если сила нажатия попадает в допустимый диапазон то начинаем обработку if (p.z > MINPRESSURE && p.z < MAXPRESSURE) { // Переводим координаты в размеры разрешения дисплея p.x = map(p.x, TS_MINX, TS_MAXX, tft.height(), 0); p.y = map(p.y, TS_MINY, TS_MAXY, tft.width(), 0); // Преобразуем снятые координаты в координаты экрана p_X=320-p.y; p_Y=p.x; // Получаем координаты кнопок в поле 5х4 P_X = p_X/64; P_Y = p_Y/48; P_Button = P_X*10+P_Y; // Формируем номер кнопки // Если попали в зону меню то очищаем экран // if (p_X > tft.width()) { tft.fillScreen(Black); } //-------------- ОБРАБОТКА ВИРТУАЛЬНЫХ КНОПОК -------------- switch ( P_Button ) { case 0: { // Если нажата кнопка "0" if (StN==0) StN=8; else --StN; StChange (StN); tft.fillTriangle(40, 8, 40, 38, 8,24 , Cyan); delay (300); // ждем 0,3 сек чтобы предотвратить повторное нажатие tft.fillTriangle(40, 8, 40, 38, 8,24 , Black); tft.drawTriangle(40, 8, 40, 38, 8,24 , Cyan); } break; case 40: { // Если нажата кнопка "40" if (StN==8) StN=0; else ++StN; StChange (StN); tft.fillTriangle(280, 8, 280, 38, 310, 24, Cyan); delay (300); // ждем 0,3 сек чтобы предотвратить повторное нажатие tft.fillTriangle(280, 8, 280, 38, 310, 24, Black); tft.drawTriangle(280, 8, 280, 38, 310, 24, Cyan); } break; case 3: { // Если нажата кнопка "3" BT3 = !BT3; tft.setTextSize(2); tft.setCursor(7,214); tft.setCursor(8,166); if (BT3) { digitalWrite(10, LOW); //Включаем реле (5 Вольт подаем на катушку реле и притягиваем к земле через эмиттер-коллектор транзистора) //tft.drawRoundRect(1,157,48,34,8, White); //(ток через катушку ~ 50 мА) //tft.setTextColor(White); //tft.print("FAN"); } else { digitalWrite(10, HIGH); //Отключаем реле //tft.drawRoundRect(1,157,48,34,8, DarkGrey); //tft.setTextColor(DarkGrey); //tft.print("FAN"); } delay (300); // ждем 0,3 сек чтобы предотвратить повторное нажатие } break; case 4: { // Если нажата кнопка "4" включаем/отключаем громкость (MUTE) radio.setMute(! radio.getMute()); // Отображаем на экране значение "MUTE" tft.setTextSize(2); tft.setCursor(8,214); if (radio.getMute()) { tft.drawRoundRect(1,205,48,34,8, Yellow); tft.setTextColor(Yellow, Black); tft.print("MUT"); } else { tft.drawRoundRect(1,205,48,34,8, DarkGrey); tft.setTextColor(DarkGrey, Black); tft.print("MUT"); } delay (300); // ждем 0,3 сек чтобы предотвратить повторное нажатие } break; // --- Область ползунка громкости занимает 3 нижних кнопки --- case 14: { // Если нажата кнопка "13" Volume (p_X); } break; case 24: { // Если нажата кнопка "23" Volume (p_X); } break; case 34: { // Если нажата кнопка "33" Volume (p_X); } break; // --- Область ползунка громкости --- case 44: { // Если нажата кнопка "43" radio.setBassBoost(! radio.getBassBoost()); // Отображаем на экране значение "BASS" tft.setTextSize(2); tft.setCursor(276,214); if (radio.getBassBoost()) { tft.drawRoundRect(271,205,48,34,8, Green); tft.setTextColor(Green, Black); tft.print("BAS"); } else { tft.drawRoundRect(271,205,48,34,8, DarkGrey); tft.setTextColor(DarkGrey, Black); tft.print("BAS"); } delay (300); // ждем 0,3 сек чтобы успеть убрать палец с кнопки } break; } //-------------- КОНЕЦ ОБРАБОТКИ ВИРТУАЛЬНЫХ КНОПОК -------------- } // **************************** КОНЕЦ ОБРАБОТКИ НАЖАТИЯ НА ТАЧСКРИН ******************************************** } void Volume (int Vol_p_X) //функция установки значения громкости и отображения информации о громкости на экране { // tft.setContrast(12); Vol = radio.getVolume(); if (((Vol_p_X-64)/12) != Vol ) { radio.setVolume((Vol_p_X-64)/12); Vol = ((Vol_p_X-64)/12); // Отображаем на экране значение громкости tft.setTextSize(2); tft.setTextColor(Green, Black); tft.setCursor(71,210); tft.print(Vol); if (Vol<10)tft.print(" "); tft.fillTriangle(64, 238, 255, 238, 255, 206, Black); tft.drawTriangle(64, 238, 255, 238, 255, 206, Green); tft.fillTriangle( 64, 238, 63+((Vol+1)*12), 238,63+((Vol+1)*12), 238-((Vol+1)*2), Green); } } void StChange (int St) //функция смены радиостанции и отображения информации о новой станции на экране { radio.setBandFrequency(RADIO_BAND_FM,StFreq[St]); // то устанавливаем частоту из массива станций delay(50); // даём время радиомодулю сменить станцию char s[12]; tft.setTextColor(Cyan, Black); tft.setTextSize(4); tft.setCursor(68, 10); tft.print((St+1)); tft.setTextSize(2); tft.setTextColor(Cyan, Black); tft.setCursor(120, 6); radio.formatFrequency(s, sizeof(s)); tft.println(s); tft.setTextSize(2); tft.setTextColor(Cyan, Black); tft.setCursor(106, 28); tft.println((StName[St])); // tft.println(utf8rus(StName[St])); }
Приведите ошибку полностью. Там указан номер строки с ошибкой и краткое её описание.
А скопировать текст сообщения полностью, а не только последнюю строчку? Никак? Там ведь написано в чём дело, а Вы от нас скрываете :(
Офигеваю от размера и навороченности проектов, за которые берутся люди, для которых ошибка компиляции - проблема. Смелый у нас народ!
Офигеваю от размера и навороченности проектов, за которые берутся люди, для которых ошибка компиляции - проблема. Смелый у нас народ!
+5
Желаю Вам, уважаемые, получить такой ответ в другой области где вы только начинаете и порадовать людей, как я вас
Извините, недокопировал.
Board: "Arduino/Genuino Uno"C:\Users\Mascha\Desktop\Radio_Touch_Screen\Radio_Touch_Screen.ino:35:26: fatal error: iarduino_RTC.h: No such file or directory #include <iarduino_RTC.h> ^compilation terminated.exit status 1Fehler beim Kompilieren für das Board Arduino/Genuino Uno.Angegebener Ordner/ZIP-Datei enthält keine gültige Bibliothek
Библиотеку беру отсюда
https://github.com/iarduino/iarduino_RTC
Желаю Вам, уважаемые, получить такой ответ в другой области где вы только начинаете и порадовать людей, как я вас
Вам же сказали - "приведите ошибку полностью". Без этого обсуждение не имеет смысла, будет только глум.
Извините, недокопировал.
Board: "Arduino/Genuino Uno"C:\Users\Mascha\Desktop\Radio_Touch_Screen\Radio_Touch_Screen.ino:35:26: fatal error: iarduino_RTC.h: No such file or directory #include <iarduino_RTC.h> ^compilation terminated.exit status 1Fehler beim Kompilieren für das Board Arduino/Genuino Uno.Angegebener Ordner/ZIP-Datei enthält keine gültige Bibliothek
Библиотеку беру отсюда
https://github.com/iarduino/iarduino_RTC
Перевожу: "Нет такого файла".
Библиотеку "берете", но ардуино ее не видит, значит неправильно поставили.
библиотека оттуда кривая, даже не устанавливается на 1.6.0 на 1.8.8
библиотека оттуда кривая, даже не устанавливается на 1.6.0 на 1.8.8
что значит "не устанавливается" ? Установка библиотеки - вскго лишь копирование папки с файлами в определенное место. Как оно может "не устанавливаться"?