вторник, 10 декабря 2013 г.

Arduino + LCD J204A

Есть такой вот экранчик (J204A):
И есть Arduino. Нужно подружить. И так...

Коммутация.

LCDArduino PinОписание
VSSGNDGND
VDD+5V+5V
V0GNDКонтраст. На GND через переменный резистор
RS12Контроль записи
RW11Режим (read/write)
E10Enable. Разрешает запись
D0-не используется
D1-не используется
D2-не используется
D3-не используется
D455
D544
D633
D722
A13Подсветка. Через резистор на +(Можно тоже переменный)
KGNDПодсветка. GND.


Простейший скетч:

_________________________________________________________________________
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);

int backLight = 13;    // pin 13 управление подсветкой

void setup()
{
  pinMode(backLight, OUTPUT);
  digitalWrite(backLight, HIGH);  // Включаем подсветку.(High - вкл, Low - выкл.)
  lcd.begin(20,4);                           // cols, rows - формат экрана. подробнее в сноске*
  lcd.clear();                                   // очищаем экран
  lcd.setCursor(0,0);                      // ставим курсор в координаты 0,0
  lcd.print("Hello, World");          // Текст, который нужно вывести
  lcd.setCursor(0,1);                     // ставим курсор в 0,1 (вторая строка)
  lcd.print("Arduino + LCD");    // Текст, который нужно вывести в эту строку
  lcd.setCursor(0,2);                     // etc...**
  lcd.print("Model J204A");
  lcd.setCursor(0,3);
  lcd.print("kindevil.tk");
}

void loop()
{
}
________________________________________________________________________

*Формат экрана зависит от вашего LCD, конкретно у этой модели 4 строки по 20 символов (20,4). Заменить на свои.
**Кол-во строк зависит от LCD. Для четырех-строчного это строки от 0 до 3. Для двух-строчного будет от 0 до 1 соответственно. И т.д..

Результат будет примерно таким =)


Собственно это все. Дальнейшие действия зависят полностью от фантазии и потребностей.

Больше примеров в папке вашей Arduino IDE в разделе Примеры - LiquidCrystal =)
http://arduino.cc/en/Tutorial/LiquidCrystal

Arduino: боремся с "avrdude: stk500_recv(): programmer is not responding"

Собрали новый проект.
Написали скетч.
Прошиваем....
Ооопс!
avrdude: stk500_recv(): programmer is not responding
"Но ведь вчера же все работало!"(с)

Не беда, советов по устранению на форумах много:

  1. В Arduino IDE не правильно указан порт к которому в системе подключено устройство. Перепроверяем.
  2. В Arduino IDE не правильно указана модель нашей железки. Перепроверяем.
  3. Проблема с кабелем. Заменяем
  4. Еще есть проблемы со скоростью порта и прочими разными, это все расписано...
Но... есть еще один вариант, про который нигде не написано... 
Если до этого arduino использовалась в других проектах и в нее уже прошит другой скетч... В новой схеме она может просто замыкаться уже назначенными на другое дело пинами =) 

Поэтому, для начала, просто попробуйте ее прошить, выдернув из макетки.. Если до этого она где-то использовалась и все работало - скорее всего поможет.
Проверено на собственной глупости =)

UPD: По просьбам из комментариев еще один частый вариант: помимо правильно указанной платы в Arduino IDE нужно проверить правильность указания процессора (просто ATmega или Old Bootloader)
Спасибо за комментарии и активность в теме =)