Как подключить LCD (Winstar WDG0151-TMI) к Arduino по SPI через Serial LCD/GLCD Adapter?

jjdrive
Offline
Зарегистрирован: 16.11.2012

Доброго времени суток.

Имеется:

1. LCD (Winstar WDG0151-TMI)

2. Serial LCD/GLCD Adapter

 

3. Arduino Uno

 

Как их подружить, чтобы экран заработал?

Пробовал так http://playground.arduino.cc/Main/LiquidCrystal

Не работает.

 

 

maksim
Offline
Зарегистрирован: 12.02.2012

А что на микросхеме адаптера написано?

leshak
Offline
Зарегистрирован: 29.09.2011

Как следует из вашего описания - он работает по SPI.

То есть наша задача: найти в этом разъеме пины MISO, MOSI, SS, SCK и воткнуть их в пины с таким же названием на уне (возможно MISO/MOSI только инвертнуть прийдется). Где эти пины на Уне - смотрите описание платы http://arduino.ru/Hardware/ArduinoBoardUno ищите по слову SPI. Ну и питание c землей естественно.

Что-бы найти их "на разъеме" - читайте документацию откуда вы взяли скриншот (на нее вы ссылку не дали).

Кстати даже разглядеть, какой у вас разъем 6-ти или 10-ти пиновый не возможно.

Можно сделать предположение, что в положении "как AVR" он будет соотвествовать вот этому разъему

Правда в нем нет SS пина, но можно надеятся что он уже подтянут и его можно не подключать (а может они его на RST вывели).

Ну либо не надеятся на "авось" и гуглить описание этих самых AVR/8051

 

leshak
Offline
Зарегистрирован: 29.09.2011

Или просто откройте свой мануал

http://www.mouser.com/ds/0/mikroElektronika/serial_lcd_glcd_manual_v100-...

(это же он), на странице 4, каритнка 7, называется "... board connection schematic", то есть "как подключать" :)

И там четко видно что где будет на разъеме в зависимости от положения джампера

leshak
Offline
Зарегистрирован: 29.09.2011

Только учтите что в #2 картинка описывающая "папу" со стороны платы, а в #3 в документации "мама-кабель". И они друг-другу "зеркальными по вертикали" выходят. 

Прежде чем подавать питание - дважды проверте. Возьмите тестер и прозвоните "где у вас земля". Можете еще и CS# пин от чипа прозвонить, что-бы еще и "вращение" не перепутать.

И да, если меня не поправят, то CS# и SS - это синонимы. В разных документациях чуток по разному этот пин обзывают.

jjdrive
Offline
Зарегистрирован: 16.11.2012

Спасибо за отклик. На самом деле распиновку я определил и даже перепаял джамперы на адаптере. Если я не ошибаюсь то именно в мануале на  анг. языке это написанно(выше выделенно), что типа для работы с AVR надо перепаять. 

Экран загорается, но никакие символы на нем не появляются....

leshak
Offline
Зарегистрирован: 29.09.2011

jjdrive пишет:

Спасибо за отклик. На самом деле распиновку я определил и даже перепаял джамперы на адаптере. Если я не ошибаюсь то именно в мануале на  анг. языке это написанно(выше выделенно), что типа для работы с AVR надо перепаять. 

На самом деле я думаю это не обязательно. Раз вы все равно забираете оттуда "проводочками", то разницы нет по PIC-ковски там или по AVR-ровски.  Это важно если вы в какой-то готовый разъем тыкаете. Когда ограничены в возможности "подключить по другому".

jjdrive пишет:

Экран загорается, но никакие символы на нем не появляются....

Ну значит давайте что куда вы подключили. Будем пытатся найти ошибку. 

 

Для полной веренности "кто где" - искать даташит на микруху. И тестером звонить от ног микрухи куда именно MOSI/MISO выходят.

Там же неплохо посмотреть и что с Reset линей делать нужно куда ее подтягивать. К земле и или к питалову.

Возможно слова под картинкой Note:I had to connect pin 5 on the LCD to gnd (not on diagram) to make it work. в http://playground.arduino.cc/Main/LiquidCrystal именно к этому и относятся.

ну и нужно еще убедится что библиотека поддерживает именно этот контроллер экрана. К тому же я не уверен что этот адаптер и 74HC595 100% идентичны по логике. Попробуйте погуглить еще библиотеки LiquidCrystal. Их разных версий, в инете, как блох. И все называются одинаково :(

Кстати а библиотеку вы проинсталили? Скачали из этой статьи, случайно не ту которая идет "из коробки" используется? Если скачали, то старую "убрали в другой фолдер". Вдруг они конфликтанули (имена-то одинаковые).

 

leshak
Offline
Зарегистрирован: 29.09.2011

М... если верить вот этому, 

http://playground.arduino.cc/Main/MCP23S17

То этот MCP23S17 имеет мало общего с 74HC595 из  http://playground.arduino.cc/Main/LiquidCrystal

Один из них - сдвиговый регистр. Другой - port expander. Только и общего что "работают через SPI", но логика, скорее всего, вообще разная.

Так что наверное "искать библиотеку" которая будет поддерживать MCP23S17 или делать свою версию библы. Скорее всего базируясь на LiquidCrystal "из коробки".

Лезть в нее и заментья все digitalWrite/pinMode, на onechip.digilWrite (если будете http://playground.arduino.cc/Main/MCP23S17 использовать).

С одной стороны "гиморой", с другой - такой шилд может быть очень удобен не только при работе с экраном. Фактически это "дополнительные ноги". Которы и в обе стороны работать могут и т.д. и т.п.

leshak
Offline
Зарегистрирован: 29.09.2011

Вот похожий шилд на подобном же интерефйсном чипе, с примерами и библиотекой.

http://freeduino.ru/arduino/LCD-keypad-shield.html

maksim
Offline
Зарегистрирован: 12.02.2012

А зачем вы вообще пытаетесь прикруить либу от буквенно-цифрового дисплея к графическому? вы думаете у него есть встоенная таблица символов? это же просто графический дисплей 128х64 точек.

jjdrive
Offline
Зарегистрирован: 16.11.2012

Спасибо, полностью согласен со всеми замечаниями!

Попробую разобраться с этим http://playground.arduino.cc/Main/MCP23S17 классом, вдруг удасться прикрутить его к либе...)

Maksim, этот экран работает, если его подключить на прямую к ардуине через эти либы. Просто связка экран+тач не оставляет свободных ног для связи....(        

leshak
Offline
Зарегистрирован: 29.09.2011

Ну "прикрученную либу" для текстовых экранов я уже нашел вам в #8. Так что либо экран поменять на другой типа, либо попытатся найти аналогичную либу для графических.

Если не выйдет - тогда уже самому хачить что-нибудь.

Но, в любом случае. Я вам рекомендую вначале завести этот экран напрямую. Без шилда. Убедится что он работает и у вас есть либа которая точно умеет им рулить. А уж потом, заведомо верную либу - ковырять для работы через MCP23S17. 

А то "не работает" и не понятно, то ли сама либа глючная, то ли экран, то ли подключения, то ли через экспандер неправильно работаем.

maksim
Offline
Зарегистрирован: 12.02.2012

jjdrive пишет:

Maksim, этот экран работает, если его подключить на прямую к ардуине через эти либы. Просто связка экран+тач не оставляет свободных ног для связи....(        

Да, ну ладно вам придумывать, вы хотите сказать, что у вас этот дисплей работает с библиотекой LiquidCrystal ?
Не смотря на то, что в этой библиотеке всего лишь некоторый набор команд, а данные передаются кодами АСКИ и дисплей сам вырисовывает символы из своей таблицы символов и невзирая на то, что в даташите на дисплей описывается адресация данных в его памяти.
Ну разве что с этой либой у вас каркозябы на дисплей выводятся.

jjdrive
Offline
Зарегистрирован: 16.11.2012

Maksim, извиняюсь, экран работает через GLCD либу, а не через LiquidCrystall)

На экране не появляются даже пиксели...

Тоесть он и не будет через нее работать, т.к. он не текстовый???

 

jjdrive
Offline
Зарегистрирован: 16.11.2012

Leshak, напрямую работает все, только через GLCD...

maksim
Offline
Зарегистрирован: 12.02.2012

Об этом я вам и говорю, вам нужно прикрутить GLCD через MCP23S17. Это можно попробовать сделать по аналогии с LiquidCrystal_MCP23x17.

leshak
Offline
Зарегистрирован: 29.09.2011

jjdrive пишет:

Leshak, напрямую работает все, только через GLCD...

Ну значит этот шаг вы прошли :) Но его "нужно было" ;)

Теперь либо искать готовое (у меня не вышло), либо..... "хачить". Благо библиотека, вроде написанно по уму, и работа с пинами вынесенно отдельно (плюс хорошо откоменчено). Не нужно будет "всю логику" перепахивать. Хотя конечно "поработать прийдется" (и для новичка может быть не просто, как минимум что такое #define,#ifdef,#ifndef прийдется разобратся :) ).

Смотрите файлы glcd_io.h - в нем есть макросы  верхнего уровня для работы с экраном. Переписать их, либо лезть в  avrio.h  (сейчас  glcd_io.h использует avrio.h) и там поменять их.

Примитивы требующие замены, это avrio_pinMode, avrio_pinMode8Pins, avrio_digitalReadPin,  avrio_digitalWrite и подобные.

Вообщем хачим их на работу с экспандером, либо "что луче" пишем их аналоги с именами mcpio_pinMode, mcpio_digitalRead и т.д.

А потом в glcd_io.h делаем секцию для работы через mcpio_digitalRead, а не через avrio_XXX. Благо тут будет просто "ее сделать", просто скопировать avrio_ секцию, и сделать замену avrio_ на mcpio_

 

leshak
Offline
Зарегистрирован: 29.09.2011

Да и "еще". Держите в уме. С вероятностью  90% работа через экспандер это будет "медлено и печально" по сравнению с прямым включением.

Так что возможно проще купить отдельынй камушек и поставить ее отдельно рулить экраном, а ей давать только "высокоуровневые команды" от основной дуины. Но это уже зависит от того "что у вас за задача", как часто вы собираетесь экран обновлять и т.п.

jjdrive
Offline
Зарегистрирован: 16.11.2012

Буду копать )

leshak
Offline
Зарегистрирован: 29.09.2011

jjdrive пишет:

Буду копать )

Если "докопаете", то очень резко поднимите свой уровень. "Полезть в чужую библиотеку" - не будет вызывать страх. А это очень помогает, даже не для "поменять", а просто "разобратся как использовать, посмотреть как устроено" :) Мне, на заре работы с ардуино, именно подобная задача по пиляканияю IRRemote под свой протокол громадный опыт дала.