Попытка напечатать текст на жидкокристаллическом дисплее с Arduino trinket
Я пытаюсь просто запрограммировать брелок Arduino на отображение некоторого текста на жидкокристаллическом дисплее.
Я в основном пытаюсь следовать этомупримеру , за исключением того, что подключаю его к Trinket, а не к Arduino Uno. Цвет фона жидкокристаллического дисплея меняется, как и ожидалось от функции цикла
в моем коде Arduino, но он просто отображает некоторые буквы o и стрелки для текста на жидкокристаллическом дисплее.
Я новичок в Arduino (и EE в целом), но я программист.
Что я делаю не так, что пример кода в приведенной выше ссылке не печатает текст на LCD дисплее?
@Catfish, 👍0
Обсуждение2 ответа
Внимание: У меня нет ATtiny85 и ЖК-дисплея, так что это чисто основано на том, что я нашел после некоторого чтения этого mcu.
Что бы я сделал в вашей ситуации:
Поскольку брелок использует ATtiny85, у него нет аппаратного серийного номера. Поэтому необходим программный вариант.
Вы выбрали последовательное программное обеспечение (которое является самым очевидным в мире Arduino), но, похоже, это самое сложное решение.
Согласно этому источнику, возможна последовательная связь с Teensy (и я цитирую)
возможно, вам придется настроить внутренний генератор, чтобы получить стабильное соединение.
Предполагая, что вашему ЖК-дисплею не нужно отправлять данные обратно; я бы попробовал TinyDebugSerial.
Имейте в виду, что добавление внешнего кристалла было бы самым простым/надежным. Но это будет стоить вам 2 определенных вывода ввода-вывода. Также могут возникнуть проблемы с памятью, так как ATtiny85 имеет гораздо меньше памяти, чем ATmega328. Arduino Nano (или pro micro) может соответствовать вашим требованиям к физическому размеру, будучи при этом намного более "мощным"., @Paul
Управление этим дисплеем не должно выходить за рамки возможностей ATtiny85. У меня есть один, использующий двустороннее последовательное соединение для процедуры настройки, которая изменяет значения EEPROM.
Во-первых, подключите ЖК-дисплей к рюкзаку с помощью USB-разъема и проверьте его там, чтобы исключить его неисправность.
В нижней части этой страницы:
Для получения дополнительных команд проверьте репозиторий github (см. вкладку Загрузки) на наличие скрипта python, который будет проверять все команды на дисплее.
Последовательный порт контрольной Trinket:
Что вы можете сделать, так это взять Trinket и запустить базовую программу последовательного подключения, чтобы проверить, отправляет ли Trinket правильную информацию.
Trinket:
#include <SoftwareSerial.h>
// Создайте последовательный порт программного обеспечения!
SoftwareSerial comm = SoftwareSerial(0, 1); //RX,TX
#define LEDPIN PINB2
void setup() {
//установить скорость порта
comm.begin(9600);
DDRB |= (1 << LEDPIN); // установить режим вывода на контакте LED
}
void loop() {
//выводите определенный символ один раз в секунду
comm.println('a');
PORTB |= (1 << LEDPIN); // включить LED
delay(500); // задержка 0,5 секунды
PORTB &= ~(1 << LEDPIN); // выключить LED
delay(1000);
}
Тогда вам понадобится еще один Arduino, например Uno, Леонардо:
// Для leonardo используйте Serial1 для подключения
void setup() {
// Откройте последовательную связь и дождитесь открытия порта:
Serial.begin(9600);
while (!Serial) {
; // дождитесь подключения последовательного порта. Требуется только для собственного USB-порта
}
Serial.println("Ready...");
// установите скорость передачи данных для порта SoftwareSerial
Serial1.begin(9600);
}
void loop() { // run over and over
if (Serial1.available()) {
char incoming = Serial.read();
Serial.println(incoming);
}
}
Или стандартный скетч balnk и подключите последовательный вывод брелка к Arduino TX-> 1>
.
При использовании UNO вы можете настроить стиль программного обеспечения, описанный выше.
Я скорее рекомендую этот USB-последовательный конвертер, так как он будет быстрее и чище.
Далее вам нужно посмотреть, что выходит. Если полученные данные верны, значит, на ЖК-дисплее возникла проблема, попробуйте повторно прошить ЖК-плату новой прошивкой.
Если данные поступают правильно, перейдите к использованию кода Adafruit и продолжайте подключать его к другим последовательным соединениям плат Arduino,заменив Serial.println(Serial1.read());
на Serial.println(Serial1.read (), ШЕСТНАДЦАТЕРИЧНЫЙ);
.
Если данные по-прежнему поступают правильно, то данные неправильно принимаются ЖК-дисплеем.
ЖК-рюкзак
Вы должны протестировать плату дисплея с помощью другого Arduino, UNO или Leonardo (32u4).
Запустите обучающий код Adafruit и посмотрите результаты. Если код работает, то возникает проблема с Trinket и библиотекой программных материалов.
Если снова возникают ошибки, которые возникают с ЖК-дисплеем при использовании с "обычным" Arduino, то это проблема.
Рекомендации
Загрузите ядро ATtiny из High-Low Tech и запишите "загрузчик", чтобы сбросить настройки предохранителей до 8 МГц, также это хорошее ядро для использования, если вам нужно больше места на ATtiny.
Возможно, перепрошейте загрузчик Trinket и убедитесь, что внутренние часы 8 МГц; я полагаю, что библиотека программных материалов-это сенсорная.
- Печать string and integer LCD
- Как отобразить символ º на ЖК-дисплее?
- Отправка значения с одного Arduino на другой
- Черные квадраты дисплея Arduino 16x2
- NodeMCU с RFID RC522 и LCD-модулем интерфейса I2C вместе
- ЖК-дисплей I2C отображает странные символы
- Экран LCD 16*02 I2C показывает только первый напечатанный символ
- Потенциометр 10 кОм против резистора 10 кОм на ЖК-дисплее
Поскольку вы упомянули, что целевая плата-это "Arduino Trinket" вместо "Arduino Uno", может ли быть какая-то разница в том, как был подключен ЖК-дисплей? Другими словами, назначение контакта может отличаться от ожидаемого в приведенном примере кода. В качестве диагностики вы можете попробовать пример LCD Hello World (в разделе File - Examples - LiquidCrystal - HelloWorld, если вы используете Arduino IDE). Если это не работает, то вам нужно найти схему для вашей платы, определить, какой ЖК-вывод подключается к какому контакту ATmega328, а затем какой контакт "Arduino", чтобы вы могли обновить исходный код., @MarkU
Не обращайте внимания на мой вышеприведенный комментарий; я неправильно истолковал этот вопрос; обычно Arduino + LCD означает ЖК-дисплей HD44780, подключенный непосредственно к ATmega328. Здесь дело не в этом. На самом деле у вас есть последовательное (RS232-подобное) соединение между двумя устройствами. Таким образом, реальная проблема, скорее всего, заключается в неправильной скорости передачи данных в бодах или какой-то другой проблеме, связанной с протоколом RS232., @MarkU
Глядя на первую фотографию, не было ли какой-то причины, по которой вы подключили белый последовательный провод передачи данных к "Цифре № 0" брелка, а не к "Цифре № 2", как в примере кода? Имейте в виду, что в Arduino UNO цифровой #0 используется для последовательного приема, поэтому использование этого контакта для последовательной передачи может вызвать проблемы. Похоже, что цифра №2 в настоящее время не используется на вашей плате., @MarkU
Наконец - то выследили, что такое Arduino Trinket: ATtiny85 не ATmega328-совсем другой зверь. Ваш связанный пример кода использует SoftwareSerial (ATtiny85 не имеет аппаратного серийного номера). Вы уверены, что у вас есть правильные настройки флага? Если ATtiny85 был установлен на внутреннюю тактовую частоту 1 МГц вместо внутренней тактовой частоты 8 МГц, то скорость передачи данных в бодах будет неправильной. Я даже не уверен, что внутренние часы достаточно стабильны, чтобы поддерживать последовательную связь. Если у "безделушки" есть внешний тактовый генератор, убедитесь, что флаги ATtiny85 правильно настроены для его использования. Попробуйте использовать осциллограф, чтобы проверить синхронизацию последовательной связи., @MarkU
@MarkU Причина, по которой я использовал #0, заключается в том, что b/c Я уже пробовал использовать #1 и #2 и не знал, есть ли разница между контактами., @Catfish
Как бы я проверил настройки флага? Кроме того, я почти уверен, что попробовал пример Hello World, и он не сработал., @Catfish
Пример кода liquid crystal hello world не работает., @Catfish
Вы можете попробовать этот учебник сначала, чтобы убедиться, что вы можете получить последовательную работу. Затем добавьте жидкокристаллический дисплей. https://learn.adafruit.com/trinket-bluetooth-alarm-system/code... Используйте последовательный раздел программного обеспечения для отладки связи с вашей безделушкой., @Mikael Patel