Возникли проблемы с пониманием того, что делает "#define GET_STATUS"
Я пытаюсь использовать 4,2-дюймовый электронный бумажный дисплей Waveshare с Adafruit Feather Adalogger M0, но у меня возникли проблемы с двумя отдельными экземплярами #define GET_STATUS
, определяемыми по-разному в разных местах. В частности, в Демо-библиотеке (скачать) для дисплея Waveshare один файлов (epd4in2.h) определяет GET_STATUS как 0x71. Однако в файле (USBCore.h), который я загрузил из диспетчера плат в ArduinoIDE, чтобы иметь возможность поддерживать Feather Adalogger, GET_STATUS определяется как 0.
Я пробовал возиться со значениями, чтобы посмотреть, решит ли проблема их совпадение (как 0x71, так и 0), но это ничего не изменило. Я не могу найти никакой информации о том, что GET_STATUS вообще, поэтому я не уверен, что я могу даже попытаться исправить эту проблему. Кроме того, я не могу найти ни одного случая использования GET_STATUS, поэтому я не уверен, каково его значение. Итак, в основном, мои вопросы таковы: 1) каково значение GET_STATUS и 2) как я могу согласовать его использование по-разному в двух разных местах?
Ниже приведен код, который я пытаюсь запустить (это демонстрационный код с Waveshare), и библиотеки, отличные от "<SPI.h>" находятся в демонстрационной библиотеке, загруженной с Waveshare.
#include <SPI.h>
#include "epd4in2.h"
#include "imagedata.h"
#include "epdpaint.h"
#define COLORED 0
#define UNCOLORED 1
void setup() {
// поместите сюда код установки для однократного запуска:
Serial.begin(9600);
Epd epd;
if (epd.Init() != 0) {
Serial.print("e-Paper init failed");
return;
}
/* This clears the SRAM of the e-paper display */
epd.ClearFrame();
/**
* Из-за недостатка оперативной памяти в Arduino UNO буфер кадров не допускается.
* В этом случае выделяется меньший буфер изображения, и вы должны
* обновить частичное отображение несколько раз.
* 1 байт = 8 пикселей, поэтому вам нужно установить 8*N пикселей за раз.
*/
unsigned char image[1500];
Paint paint(image, 400, 28); // ширина должна быть кратна 8
paint.Clear(UNCOLORED);
paint.DrawStringAt(0, 0, "e-Paper Demo", &Font24, COLORED);
epd.SetPartialWindow(paint.GetImage(), 100, 40, paint.GetWidth(), paint.GetHeight());
paint.Clear(COLORED);
paint.DrawStringAt(100, 2, "Hello world", &Font24, UNCOLORED);
epd.SetPartialWindow(paint.GetImage(), 0, 64, paint.GetWidth(), paint.GetHeight());
paint.SetWidth(64);
paint.SetHeight(64);
paint.Clear(UNCOLORED);
paint.DrawRectangle(0, 0, 40, 50, COLORED);
paint.DrawLine(0, 0, 40, 50, COLORED);
paint.DrawLine(40, 0, 0, 50, COLORED);
epd.SetPartialWindow(paint.GetImage(), 72, 120, paint.GetWidth(), paint.GetHeight());
paint.Clear(UNCOLORED);
paint.DrawCircle(32, 32, 30, COLORED);
epd.SetPartialWindow(paint.GetImage(), 200, 120, paint.GetWidth(), paint.GetHeight());
paint.Clear(UNCOLORED);
paint.DrawFilledRectangle(0, 0, 40, 50, COLORED);
epd.SetPartialWindow(paint.GetImage(), 72, 200, paint.GetWidth(), paint.GetHeight());
paint.Clear(UNCOLORED);
paint.DrawFilledCircle(32, 32, 30, COLORED);
epd.SetPartialWindow(paint.GetImage(), 200, 200, paint.GetWidth(), paint.GetHeight());
/* This displays the data from the SRAM in e-Paper module */
epd.DisplayFrame();
/* This displays an image */
epd.DisplayFrame(IMAGE_BUTTERFLY);
/* Deep sleep */
epd.Sleep();
}
void loop() {
// поместите сюда ваш основной код для многократного запуска:
}
Когда я запускаю код, я получаю следующие сообщения
In file included from /home/beingpool/Arduino/epd4in2-demo/epd4in2-demo.ino:28:
/home/<user>/Arduino/libraries/epd4in2/epd4in2.h:64: warning: "GET_STATUS" redefined
64 | #define GET_STATUS 0x71
|
In file included from /home/beingpool/.arduino15/packages/adafruit/hardware/samd/1.7.11/cores/arduino/Arduino.h:157,
from /home/beingpool/.var/app/cc.arduino.IDE2/cache/arduino/sketches/96EFEDEA56FF573B678089A960FFC685/sketch/epd4in2-demo.ino.cpp:1:
/home/beingpool/.arduino15/packages/adafruit/hardware/samd/1.7.11/cores/arduino/USB/USBCore.h:23: note: this is the location of the previous definition
23 | #define GET_STATUS 0
|
@BeingPool, 👍2
Обсуждение1 ответ
Лучший ответ:
В GET_STATUS
нет общего значения. По-видимому, обе библиотеки используют один и тот же идентификатор для разных целей.
Если вы не используете GET_STATUS
в своем скетче, вы можете удалить определение перед включением "epd4in2.h", например так:
#include <SPI.h>
#undef GET_STATUS
#include "epd4in2.h"
// ...
Спасибо, это ответ на мой вопрос, @BeingPool
- Запуск 7-контактного OLED-дисплея с 4 контактами (I2C)
- Статус выхода 1 ожидаемое первичное выражение перед ']' Arduino
- Нужна помощь с библиотекой U8GLIB
- Как остановить мерцание OLED при использовании SSD1306Ascii.h?
- Альтернативы дисплею Nextion
- Высокочастотный PWM на Adafruit Feather M0
- Как масштабировать растровое изображение (массив uint8_t) в Arduino?
- Легкая библиотека Arduino OLED, которая поддерживает текст и растровые изображения
Я обновил вопрос, чтобы включить сообщение об ошибке, которое я получаю при компиляции кода. Честно говоря, я не слишком много знаю о проблеме, которую я пытаюсь решить, я в первую очередь пытаюсь понять, в чем проблема. Мне кажется, что эти два файла, которые определяют GET_STATUS, должны иметь два разных значения, и я не знаю, как заставить их работать вместе с одним определением., @BeingPool
прочитать вторую строчку сообщения, @jsotola