OLED-дисплей выходит из строя при подключении USB
Я приобрел OLED-дисплей 16x2 (DEP 16201-Y, совместимый с контроллером HD44780) для своего Arduino Uno и заставил его работать в 4-битном режиме, но только если USB не подключен и он питается от источника питания 9 В.
Итак, моя рутина такова:
- Подключите USB и блок питания
- Загрузить код
- --> Не работает
- Отключите USB и блок питания
- Просто подключите питание
- --> Работы
- Подключите USB
- --> Сбои в работе дисплея
Итак, вкратце: если Arduino подключена к моему ПК через USB, с дополнительным источником питания или без него, дисплей не будет работать должным образом, произойдет сбой или Arduino даже перезагрузится. (какая-то ошибка памяти?)
У меня нет возможного объяснения этому..
Спасибо за помощь.
ПРАВКА: Я использую Ubuntu Mate Kernel 4.4.0-43-generic 64bit
Если я подключаю кабель без питания, дисплей работает нормально. Если я подключаю кабель с напряжением 5 В, но ПК выключен, то дисплей работает нормально. Чтобы дисплей вышел из строя, компьютер должен быть запущен.
Тестовый код:
#include <LiquidCrystal.h>
LiquidCrystal lcd(13, 12, 11, 10, 9, 8);
void setup()
{
//lcd.clear();
lcd.begin(16, 2);
lcd.clear();
lcd.setCursor(0,1);
lcd.print("Hello there");
delay(1000);
}
void loop()
{
lcd.setCursor(0,1);
lcd.print("Hello World");
lcd.setCursor(0,0);
lcd.print("ABCDEFGHIJKLM");
delay(1800);
lcd.clear();
}
@Niklas, 👍4
Обсуждение2 ответа
Когда ваш компьютер загружается или когда вы подключаете плату с загруженной системой, скорее всего, созданный последовательный порт (/dev/ttyACM0) открывается процессом modem-manager
. Это приведет к сбросу Arduino, что даст вам те же результаты, которые вы видите при сбросе платы другими способами.
У меня было бесконечное количество проблем с зеленой версией того же экрана. Лучший результат, который я получил, — это управление питанием дисплея и включение его при каждой загрузке. Вы можете сделать это с помощью простого P-канального логического уровня MOSFET или PNP-транзистора:
Если вы выбрали, скажем, D3 (в качестве примера) в качестве управляющего GPIO, то вы должны сделать следующее:
void setup() {
pinMode(3, OUTPUT);
digitalWrite(3, LOW);
delay(1000); // Дайте ему время успокоиться после включения
... остальной код настройки ...
}
Вы также можете использовать его для экономии энергии (если хотите), выключив дисплей — просто установите контакт обратно на ВХОД, и он будет выключен R1.
@LookAlterno А вы когда-нибудь пользовались одним из этих дисплеев? Они, мягко говоря, проблемные., @Majenko
@LookAlterno также, вы когда-нибудь замечали, что если вы загружаете компьютер с подключенным Arduino, Arduino сбрасывается в середине последовательности загрузки? Это modem-manager., @Majenko
@LookAlterno Я тоже, но я люблю спать по ночам, поэтому выключаю компьютер., @Majenko
У меня была та же проблема, но я решил ее с помощью следующего кода:
noDisplay(); display();
, похоже, сбрасывает экран в правильное положение.
void LCDInit()
{
lcd.begin(DISPLAY_LINE_LENGHT, DISPLAY_LINES);
// Нам нужно сделать это, чтобы сбросить настройки OLED-дисплея
lcd.noDisplay();
lcd.display();
lcd.clear();
}
- Wemos: дисплей 16x2 ничего не показывает
- Запись значения на 7-сегментный дисплей max7219
- Как подключить этот последовательный дисплей SPI к Arduino?
- Заготовка ЖК-дисплея 16 X 2 с Arduino Uno
- Я пытаюсь сделать что то вроде видеоигры с Arduino UNO
- Печать string and integer LCD
- Как отображать переменные на 0,96-дюймовом OLED-дисплее с библиотекой u8glib?
- Как отобразить символ º на ЖК-дисплее?
Это происходит только если ваш ПК работает? Если да: какую ОС вы используете?, @zimmerrol