Ошибка компиляции для платы 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