Официальный сайт компании Arduino по адресу arduino.cc
Создание кнопок на экране ILI9341 с библиотекой Adafruit
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Чт, 12/01/2017 - 04:21
Здравствуйте.
Подскажите пожалуйста, проблема такая. Вот кусочек скетча:
#include <SPI.h>
#include <Wire.h>
#include "Adafruit_GFX.h"
#include "Adafruit_ILI9341.h"
#include <Adafruit_STMPE610.h>
//#include <EEPROM.h>
//#include "korrektur.h"
// For the Adafruit TFT shield, these are the default.
#define TFT_DC 9
#define TFT_CS 10
// Use hardware SPI (on Uno, #13, #12, #11) and the above for CS/DC
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
// The STMPE610 uses hardware SPI on the shield, and #8
#define STMPE_CS 8
Adafruit_STMPE610 ts = Adafruit_STMPE610(STMPE_CS);
// This is calibration data for the raw touch data to the screen coordinates
#define TS_MINX 150
#define TS_MINY 130
#define TS_MAXX 3800
#define TS_MAXY 4000
//BUTTRN UI-------------------------------
#define BUTTON_X 50
#define BUTTON_Y 30
#define BUTTON_W 70
#define BUTTON_H 30
#define BUTTON_SPACING_X 2
#define BUTTON_SPACING_Y 2
#define BUTTON_TEXTSIZE 2
unsigned long milliold = 0;
unsigned long millinew = 0;
//korrekturwert(DK2JK)--------
//Korrektor_im_eeprom eeprom;
//int korrekturwert;
//DDS PIN---------------------
const int FQ_UD=7;
const int SDAT=6; ;
const int SCLK=8;
const int RESET=5;
//Desplay Set(DG7EAO)----------
double vswrArray[110]; //Array Array für SWR
int z = 0; // Index Index für Array
double SwrFreq = 1; // Variable Variable für Freq. mit SWR Min.
double SwrMin = 0; // Variable für SWR Min.
double Freq1 = 1; // Freq. Links unterste Zeile Display
double Freq2 = 15; // Freq. Mitte unterste Zeile Display
double Freq3 = 30; // Freq. Mitte unterste Zeile Display
int flag = 0;
// wir auf 1 gesetzt bei Interrupt, in void Loop perform_sweep
double counter = 0; // Zähler um erste Interrupts zu ignorieren
// Variablen
double Fstart_MHz = 1; // Start Frequency for sweep
double Fstop_MHz = 30; // Stop Frequency for sweep
double current_freq_MHz; // Temp variable used during sweep
long serial_input_number; // Used to build number from serial stream
int num_steps = 100; // Number of steps to use in the sweep
char incoming_char; // Character read from serial stream
unsigned long previousMillis = 0; // will store last time LED was updated
// constants won't change :
const long interval = 1000;
// create buttons---------------------
char buttonlabels[9][5] = { "3.5","7", "10", "14", "21", "28", "All", "Clr", "Scan"};
uint16_t buttoncolors[9] = {ILI9341_BLUE, ILI9341_BLUE, ILI9341_BLUE,
ILI9341_BLUE, ILI9341_BLUE, ILI9341_BLUE,
ILI9341_BLUE, ILI9341_GREEN, ILI9341_RED};
Adafruit_GFX_Button buttons[9];
Все библиотеки подключены. При компиляции спотыкается на строчке Adafruit_GFX_Button buttons[9];
При этом выдает ошибку:
ad9850adafuilt:95: error: 'Adafruit_GFX_Button' does not name a type
ad9850adafuilt.ino: In function 'void setup()':
ad9850adafuilt:116: error: 'buttons' was not declared in this scope
ad9850adafuilt.ino: In function 'void loop()':
ad9850adafuilt:150: error: 'buttons' was not declared in this scope
То есть предлагает объявить переменную buttons.
Но этот скетч писал не я, он целиком был скачан тут http://nyan.ldblog.jp/ad9850adafuilt.ino и у автора работал. В то же время я пересмотрел много подобных скетчей в интернете, и нигде эта переменная buttons не объявляется отдельно.
В чем может быть проблема, подскажите пожалуйста.
1. http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii и это обязательно.
2. Код целиком
3. Текст сообщения(й) компилятора целиком - прямым копи-пастом.
Компилятор выдает только это:
Основная ошибка в строке 96. Остальные - производные от этой.
Что до строки 96.
1. Где находятся библиотеки "Adafruit_GFX.h" и "Adafruit_ILI9341.h". Если в стандартном для библиотек месте, то замените " на угловые скобки в строках 20-21.
2. Тип Adafruit_GFX_Button определяется в файле Adafruit_GFX.h. Убедитесь, что он там действительно определяется, а то может версия файла не та.
Напишите. что у Вас получилось.
Если ничего не поменяется. сообщите заодно точно где Вы брали Adafruit_GFX.h чтобы мы на одну и ту же версию смотрели.
Библиотеки должны быть в папке скетча, мы радиолюбители так пишем и, это не обсуждается )))
Библиотеки в стандартном месте, заменил на угловые - ничего не поменялось.
Библиотеку брал тут https://github.com/adafruit/Adafruit-GFX-Library
73! R0JAB
Так, ну что, класс определён в строке 107 файла Adafruit_GFX.h. Должно работать. Знаете, так не бывает. Вы уверены, что скинули мне ВСЕ сообщения компилятора? Боюсь, что Вы что-то оставили, посчитав неважным. И ещё, думаю, что библиотеки у Вас лежат всё-таки в неправильном месте или конфликтуют с другими. Такой вывод сделан из следующего: я скачал все библиотеки и запустил компиляцию у себя. Вот результаты
Компилятор больше ничего не выдал, я скопировал все что было в нижнем черном окне.
Библиотеки лежат в правильном месте, он их нормально подцепил. Я вообще думаю а не слишком старая ли у меня версия IDE. Проверить правда смогу только в понедельник.
Спасибо за помощь!
Ну, смотрите. Мои версии IDE в которых нормально компилируется я Вам написал.
Большое спасибо за помощь!!!
Дело действительно было в версии Arduino IDE, у меня стояла еще 1.0.5 :) скачал с сайта последнюю и все прекрасно скомпилировалось.