Ошибка компиляции для платы Arduino Nano при использовании Adafruit GFX
Почему это происходит со мной?? Я должен уложиться в крайний срок, пожалуйста, помогите!! Вот мой код.
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // Ширина OLED-дисплея, в пикселях
#define SCREEN_HEIGHT 64 // Высота OLED-дисплея, в пикселях
// Декларация для дисплея SSD1306, подключенного с помощью программного SPI (случай по умолчанию):
#define OLED_MOSI 11
#define OLED_CLK 12
#define OLED_DC 9
#define OLED_CS 8
#define OLED_RESET 10
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT,
OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
void drawLine(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t color);
void setup()
{
Serial.begin(9600);
// SSD1306_SWITCHCAPVCC = генерировать внутреннее напряжение дисплея от 3,3 В
if(!display.begin(SSD1306_SWITCHCAPVCC)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;); // Не продолжайте, цикл бесконечен
}
display.display();
delay(2000);
display.clearDisplay();
display.drawPixel(10, 10, SSD1306_WHITE);
display.display();
delay(2000);
display.invertDisplay(true);
delay(1000);
display.invertDisplay(false);
delay(1000);
}
void loop()
{
drawLine(20,60,5,50,256);
}
Ошибка
C:\Users\hp\AppData\Local\Temp\ccyB6dO1.ltrans0.ltrans.o: В функции
петля': C:\Users\hp\Desktop\Sunfox\Sunfox\BP_Plus_ECG\February_11\OLED_Testing_w_Adafruit\Test_2\Test_2/Test_2.ino:51: неопределенная ссылка на
DrawLine(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int)' collect2.exe: ошибка: ld вернул 1 статус выхода статус выхода 1 Ошибка компиляции для платы Arduino Nano.
@Shridhar Sharma, 👍0
Обсуждение1 ответ
Лучший ответ:
В настоящее время вы определили прямое объявление для DrawLine
, однако я предполагаю, что вы хотите вызвать метод (функцию) внутри display
.
Так что меняйся
drawLine(20,60,5,50,256);
в
display.drawLine(20,60,5,50,256);
И вы можете удалить прямое объявление, потому что этот метод уже определен в библиотеке.
void drawLine(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t color);
Обратите внимание, что если вы вызываете DrawLine
без экземпляра (который является display
), то компоновщик пытается найти функцию DrawLine
, которую он не может найти, поэтому вы получаете ошибку компоновщика (см. ld, возвращенный
в вашей ошибке, вместе с неопределенной ссылкой
).
- Есть ли функция Adafruit для инвертирования цветов моего экрана для языка Arduino?
- Неустранимая ошибка Adafruit_SSD1306.cpp: pgmspace.h: нет такого файла или каталога с использованием SSD1306 на Arduino Nano RP2040
- Как масштабировать растровое изображение (массив uint8_t) в Arduino?
- Как написать функцию, возвращающую матрицу?
- Сообщение об ошибке при попытке настроить библиотеку U8g2
- Поиск адреса OLED с использованием связи I2C и Arduino
- Мой моторный щит сломан?
- Не удается успешно реализовать синглтон
Добрый сэр @MichelKeijzers что это вообще значит?, @Shridhar Sharma
Я дам ответ., @Michel Keijzers
@MichelKeijzers Но я использую Adafruits, встроенный в библиотеку. Я думал, что они сделали бы это для меня., @Shridhar Sharma
Сначала я думал, что вы хотите создать свою собственную функцию, но я сделал ответ, чтобы использовать библиотеку вместо вашей собственной функции., @Michel Keijzers