Есть ли функция Adafruit для инвертирования цветов моего экрана для языка Arduino?
Я пытаюсь инвертировать цвет моего OLED-экрана при нажатии кнопки. С кнопкой разобрался но не могу найти функцию инвертирующую цвет. Я использую эти две библиотеки для обработки своего экрана в Arduino IDE.
Adafruit_GFX.h, Adafruit_SSD1306.h
Мы будем очень признательны за любую помощь.
1 ответ
Есть функция, которая инвертирует цвета вашего экрана, вы можете выбрать либо черное на белом, либо белое на черном, я пробовал это, и у меня есть большой опыт работы с вашим дисплеем, я думаю, вам следует попробовать этот фрагмент кода.
В начале вашего кода Arduino убедитесь, что вы объявили объект, используя то же имя.
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
Чтобы инвертировать отображение
display.invertDisplay(true);
Чтобы снова вернуть отображение
display.invertDisplay(false);
Поскольку вы сказали, что вам нужна кнопка для инвертирования отображения, вы можете использовать этот код, который я сделал
if(digitalRead(BUTTON_PIN)){
display.invertDisplay(true);
}
else{
display.invertDisplay(false);
}
Или вы можете использовать Прерывания для повышения производительности в зависимости от вашего кода.
Как вы не смогли найти в Интернете, я студент и многому научился в Интернете, например, найти такую функцию в библиотеке Arduino, попробовать найти ее документацию или ее страницу на GitHub, а затем посмотреть функцию, которую вы хотите использовать на страницах, но не ищите функцию напрямую, она иногда не будет работать, поскольку они не так популярны.
Напоследок вот документы, из которых я взял функцию с ее параметрами.
Надеюсь, я помог вам. любые изменения в ответе приветствуются, так как я учусь.
- Как погасить светодиод за определенное время с помощью FastLED
- Выполнить функцию цикла из основного цикла()
- Питание светодиодной ленты - Сколько ампер?
- Как управлять встроенными светодиодами Arduino Nano 33 BLE Sense?
- Почему некоторые контакты Arduino Nano (D3, D4, A3, A4, A6, A7) не могут быть установлены на высокий уровень?
- Мигающий светодиод при движении сервопривода
- Использование кольца NeoPixel без Arduino
- Использование аккумуляторов 18650 с повышающим преобразователем 3,7 В в 5 В.
Когда такой функции нет в этих библиотеках, то скорее всего нет и функции Adafruit для этого. Вам придется сделать это самостоятельно. Это зависит от того, что именно здесь означает перевернутое. koronas отвечает на [этот вопрос](https://stackoverflow.com/questions/1165107/how-do-i-invert-a-colour#1165145) в stackoverflow, что вам просто нужно инвертировать биты цветовых компонентов . Вопрос о C#, но синтаксис в ответе такой же, как и на C++. Пожалуйста, попробуйте, если это так, что вы хотите., @chrisl
Другой ответ на этот вопрос гласит, что вам нужно будет выполнить преобразование в цветовом пространстве HSV., @chrisl