Arduino для велосипеда
- Войдите на сайт для отправки комментариев
Пнд, 16/07/2012 - 20:57
Занимаюсь электротраспортом, точне электровелосипедом ... Есть проблема в контрольно-измерительных приборах ... Хотелось бы видеть что-то одно, а не кучу различных... Набрел случайно на интересный проект www.avdweb.nl/arduino/hardware-interfacing/nokia-5110-lcd.html.
Купил, Arduino Nano + указанный LCD. Установил программу, драйвера, попробовал примеры, все работает.. Загрузил в папку /Librates библиотеку с сайта (подправленную автором). Cоединил по предложенной схеме, загрузил проект, пытаюсь компилировать....
#include <PCD8544.h> #include <Streaming.h> #include PCD8544 nokia = PCD8544(9, 10, 11); // 3 pin LCD control, SCLK, DN, D/C (CS, RST) void setup(void) { Serial.begin(9600); Serial << F("Hello!\n"); nokia.init(49); // contrast = 49 nokia.clear(); nokia << "Hello!\n"; // without using F nokia << F("Save RAM with the Flash library\n"); // use F to save RAM space nokia.display(); //findBestContrast(45, 60); }
Ругается....
Непосредственно страничка про стенд для велосипеда http://www.avdweb.nl/solar-bike/hub-motor/motor-test-bench.html и непосредственно ваттметр для контроля расхода емкости аккумулятора www.avdweb.nl/arduino/hardware-interfacing/e-bike-watt-meter.html
А саму библиотеку Streaming Вы положили в папку библиотек? скачать можно тут http://arduiniana.org/Streaming/Streaming5.zip
Блин, как красиво все это представленго.... А я так смогу?
По делу: Скачал, положил... теперь другое... Слушай, как мне это "взять" и положить в форум?
<a><img src="http://i43.fastpic.ru/big/2012/0716/69/765e18d131ffaf32f7ef6106901dcb69.png"</a>
http://arduino.ru/forum/obshchii/sokhranenie-kartinok-na-forume
http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukomment...
Блин, как красиво все это представленго.... А я так смогу?
По делу: Скачал, положил... теперь другое...
А где главный цикл Loop ?
Нету, сп..здили )
Просто добавьте в конце строку
И будет вам счастье
Нету, сп..здили )
Во первых, я не тебе отвечал. Во вторых, непонятно что ты хотел этим ответом сказать или показать?
А то что его нету, мне и без твоих остроумных подсказок было понятно.
Бинго... Скомпилировалось... И даже загрузилось...
НО на экране ничего нет, даже после нажатия кнопки "резет". А как я понимаю, должна выскочить надпись, указанная в строке программе...
Выручайте, "есть мнение", что я не правильно припаял выходы...Смотрите, - на схеме используются ТРИ "сигнальных" провода... , а вот куда они заводятся не указано написано просто "Arduino out"
Я предположил, что согласнно строки программы PCD8544 nokia = PCD8544(9, 10, 11); // 3 pin LCD control, SCLK, DN, D/C (CS, RST), я должен соединить выводы 9,10,и 11 с контактами LCD5110 с маркировкой SCLK, DN, D/C (CS, RST) соотвественно, то есть на плате Arduino Nano это контакты D9,D10 и D11. Верно?
Я предположил, что согласнно строки программы PCD8544 nokia = PCD8544(9, 10, 11); // 3 pin LCD control, SCLK, DN, D/C (CS, RST), я должен соединить выводы 9,10,и 11 с контактами LCD5110 с маркировкой SCLK, DN, D/C (CS, RST) соотвественно, то есть на плате Arduino Nano это контакты D9,D10 и D11. Верно?
Верно.
Мда... понятно...Будем думать...
Кстати попробовал терминалом знаки "позагонять" подключаясь к СОМ-порту ... ничего "не показывает"... экран "пуст"...что-то не так...
Скорость порта в терминале 9600?
Нету, сп..здили )
Во первых, я не тебе отвечал. Во вторых, непонятно что ты хотел этим ответом сказать или показать?
А то что его нету, мне и без твоих остроумных подсказок было понятно.
Это была шутка - это раз.
Попрошу не ТЫкать - это два.
Если понятно, то зачем спрашивать??? - это три.
А подсказка была адресована топик-стартеру - это 4.
Вопросы?
Диклаймер: жуткий offtop
Вопросы?
В чем смысл жизни? ;)
Если чуть серьезней, то IMHO совершенно не нужно вам двоим собачится. Оба вы, судя по форуму, адекватные люди, оба не жалеете своего времени на помощь другим. Так что от выяснения "кто первый начал" - никто не выиграет.
Просто нужно учитывать что общение на форуме отсекает кучу невербальной информации (интонацию, выражения лица и т.п.), а это 80% информации при общении. И то что в обычной жизни было "легкой иронией", либо "чуть раздраженным ответом" тут может быть воспринято как "грубость офигительная". Да и к клавиатуре мы садимся все в разном настроении (но этого не видно), кто-то в раздаженном/занятом, кто-то в "чувтсво юмора пронизало меня от головы до пят". Но этого не видно другим.
Так что лучше, оба, спишите недопонимание друг-другу, на "не идеальный канал общения" да и дело с концом.
В самой жизни )
В самой жизни )
Что-бы понять рекурсию нужно понять рекурсию ;)
Да ладно вам "собачиться"... по делу-то что скажете? Где посмотреть?
P.S. Оттого, что "не работает" начинают мучить разные сомнения, в том числе и это замечание в конце статьи,-
"3. Notes The PCD8544 LCD driver may be damaged if not properly reset."
На всяк случай, а остальные выходы, которые не "Arudino Out" (VCC,GND, SCE,LED) подключили как на схеме?
Ну, дык естессссттвеннно!!! Индикатор сияет белым светом (именно стакой подсветкой заказал)...
Но все равно мне кажется, что что-то не так... Я хоть и "электронщик" (именно в кавычках), но с языками программирования скорее на бумаге, нежели на самом деле..С ассемблером как-то общался, вполне удачно.. Но там как мне кажется проще..
И еще... может стоить попробовать другую схему подключения?? Может отладчик какой поставить? напряжение на каких ногах посмотреть?
Есть реакция... При подключенном терминале, по нажатию кнонки "Reset" на экран выводится сообщение "Hello!" :)
Правда это все прописано в программе... :(
И еще попробовал пример с библиотекой по ссылкам, то есть с Adafruit-PCD8544-Nokia-5110-LCD-library
Тав вот библиотека не грузится вообще со словами.... И что это?????
Ну, дык естессссттвеннно!!! Индикатор сияет белым светом (именно стакой подсветкой заказал)...
Вы не представляете какие глупые ошибки бывают. Причем даже у опытных. А когда 12-ть часов бьешься над какоим-то заглюком, найдешь кучу нетривиальных "подводных камне", то совсем не сложно учудить что-то что самому потом на голову не налазит.
По поводу "другого подключения", а смысл (если ноги камня не попалены)?
Я бы еще попробовал оригинальную библиотеку упоминаему в статье, а не "поправленную" автором статьи (на нее там тоже есть ссылка, на github). По крайней мере, лично мне, она больше доверия внушает. Так как у нее "дергание пинами" сделанно напрямую через порт, а значит выше "сихронность" дергание пинами.
И еще, возможно (совсем не уверен), погуглить что-то на тему PullUp резисторов для SPI. Но это уже скорее из серии "что-бы что-то посоветовать".
Тав вот библиотека не грузится вообще со словами.... И что это?????
ну ровно то что написанно. Не нравится ему дефисы в имени папки куда положели библиотеку.
В ридми кстати, написано rename the uncompressed folder Adafruit_PCD8544
Так что просто переименуйте папку в что-то более удобоваримое.
И да, кстати, если вы скачали сразу обе библиотеки, одну из них, возможно, нужно будут убрать из папки libraries, они могут пересекатся по именам и мешать друг-другу. А ошибки будут самыми причудливыми.
Ну это собственно понятно... переименовывал...закачивал снова... у меня Ubuntu + Virtualbox c "виндой"...думал может кодировка лажает при монтировании дисков...нет.. тажа лажа...
P.S. Я вот попробовал, вместо версии 1.0.1, запусить все в 23-ей (последней)... так не компилится пример-то..вообще... Пишет "'F' was not declared in this scope!" В этой версии поменялось что-то??
Копаю еще в основной схеме ваттметра программа несколько другая, но прри объявлении портов картина немного не та... может действительно ошибка посмотрите...
Ну это собственно понятно... переименовывал...закачивал снова... у меня Ubuntu + Virtualbox c "виндой"...думал может кодировка лажает при монтировании дисков...нет.. тажа лажа...
Ну на скришоте что вы дали переименовывания явно нет. Попробуйте переименовать во что-то где вообще ничего кроме букв и цифр нет. Ни дефисов, ни пробелов.
Иногда еще бывают проблемы когда само arduinoIDE установленно в папку с русскими именами в пути (не только папка ардуины, и "что-то повыше" может помешать).
P.S. Я вот попробовал, вместо версии 1.0.1, запусить все в 23-ей (последней)... так не компилится пример-то..вообще... Пишет "'F' was not declared in this scope!" В этой версии поменялось что-то??
Да. Это только в свежих появилось. Вообще весь синтаксис типа <<
"По старому", нужно писать типа nokia.Print("Hello");, а при выводе строк "из флеша" тоже отдельно нужно выкаблучиватся (не готов сразу сказать "как", пусть вначале хоть обычный строки в памяти заработают).
Копаю еще в основной схеме ваттметра программа несколько другая, но прри объявлении портов картина немного не та... может действительно ошибка посмотрите...
Да собственно вроде та же картина. Просто на чуть другие пины повесили 10,11,12 вместо 9,10,11
Можете, конечно и вы так попробовать (раз ничего другое не помогает) но я разницы не улавливаю.
И вообще, я как-то не понял у вас же оно вроде заработало.
"по нажатию кнонки "Reset" на экран выводится сообщение "Hello!"
да нет... Это самое "Hello" пишет программа в ТЕРМИНАЛЕ! В соответствии с первой строкой программы... Serial << F("Hello!\n"); и только. "Нокиевская либра" не хочет работать... P.S. Перепаял выводы, "не пашет", поменял коды в программе, все равно не пашет... :(
Добавление... Хе-хе ... есть новости... Скомпилировал полностью сам ваттметр....
На экране по прежнему нет ничего, а вот в терминал исправно сыпет данные.... (privet - это я написал)
И еще: Судя по этому www.sparkfun.com/tutorials/300 мануалу, то я его просто спалил...
Собственно видимо этого надо было ожидать... после смены индикатора (купил не один) получил вот такую картину.. радости не было предела... НО не долго... после загрузки скетча ваттметра... уже ничего не увидел, только "грязный" экран... Полез разбираться тестером, что там на ногах... то-ли замкнул, то-ли перемкнул...короче напруга упала до 2,7 вольт, вместо 4,4 которые были до этого...питание "тусклое"... Даигрался? Ардуиина ёёк?
Здравствуйте.
Имею дисплей 5110, использую библиотеку PCD8544-1.4. Тестирую на Arduino Nano v.3.0, подключаю проводочками типа "мама" на контакты типа "папа". (Собственно, думаю, дело не в МК, не в библиотеке, а в подключении.)
При выводе текста на дисплей, фон заливается черным и текст вывода можно только угадывать (еле-еле-видно)
Питание подключаю 5 В, т.к. на обороте дисплея указано "3 ~ 5 v". При подключении контата + экрана к +3,3В, вместо 5В на Ардуине - темность фона снижается, позволяя уверенно читать текст при наклонах экрана вверх и вниз (под малым углом взгляда к плоскости экрана).
Когда месяца два тестил вывод информации на этот же дисплей, но подключал к ардуине (там контаткы типа "мама") обычными одножильными проводами от UTP - контакт был очень плохой. Но что удивительно, тщательно перешевилив все контакты, у меня получалось получить изображение практически без фонового зачернения.
Предпологаю, что дело в неком электрическом перекосе уровней напряжения. А в чем именно, сообразить не могу.
Подскажите пожалуйста в чем дело и как избежать черности фона ?
Посчитал что такого качества для тестового вывода мне хватит. Переделал устройство на чип atmega8a. Экран совсем темный и буквы не просвечивают.
Но: во время экспериментов с добавлением резисторов в разрыв плюса питания (150,300 Ом ничего не дают, от 1кОм питания не хватает), при замыкании-размыкании плюса питания на плюс питания atmeg'и - заметил, что при подключении - сперва появляется текст и лишь потом, через долю секунды черный экран.
Ошибок в коде не вижу, на всякий случай привожу листинг. (жаль тут нет тега спойлер)
(устройство выдает меандр нужной частоты на одну из ног МК в зависимости от положения переменного резистора. Нужно для радиолюбительских тестов с частотами).
приведу еще подключение дисплея: (MK - atmega8a)
RST - PD2 == pin 2
CE - pin 3
DC - PB5 = pin 13 (SCK) // ну вот и разобрался, я же там в коде 13тым пином подмаргиваю... погляжу. Правда, дисплей кажет только в сетупе, потом 5 сек пауза, а манипуляции с 13 портом только в лупе начинаются. В общем погляжу, уберу лишнее.
Din - PB4 - pin 12 (MISO)
Clk - PB3 - pin 11 (MOSI)
Vcc - +5 через резистор 150 Ом
HL - не подключен (подсветка)
GND - общий провод (минус, GND).
кусок кода из библиотеки PCD8544, там , где объявляются порты взаимодействия с дисплеем (моси, мисо, сцк - мои подписи, что бы не запутатся):
Пока писал, натолкнулся на мысль на счет 13 светодиода.
--
после перевода индикационного пина с 13 на 5й (ближайший свободный), проблема совсем чёрного экрана (когда совсем ничего не видно, т.к. всё черное) изчезла и вернулась старая знакомая проблема - когда читать сложно, но можно.
И снова заметил эффект (перебирая номиналы резисторов в разрыв +5 питания LCD), изображение иногда работает как надо - чистый текст без фона или с еле-заметным легким потемнением оного, после отключения и подключения провода. Причем эффект проявляется только когда контакт не припаян, а лежит на другом. Эффект может пропадать и появлятся, если шевелить провода.
После припаивания контактов, какие-то изменения фона изчезают и фон экрана становится стабильно темным.
И в итоге я снова сомневаюсь, программная проблема или аппаратная.
Дайте ссылку на библиотеку, те ссылки что выше обе на дисплей.
Исправил. Дублирую: PCD8544-1.4
П.С. На atmega8a уже никаких штырьковых контактов - везде пайка.
Первое что я бы сделал это попробовал заменить lcd.begin(84, 48); на
Вспомнил, что изменял в коде библиотеки .h подобную надпись:
1) вернул как было (а было, как процитированно выше) - не помогло, все осталось так же.
2) с возвращенным как было - добавил строчку "lcd.begin(84, 48, CHIP_ST7576);" в скетч, а старую закомментил - экран LCD стал совсем черным.
3) раскомментил старую запись, закомментил новую (lcd.begin ... ). Сквозь темность фона стали проглядывать буквы текста. Т.е. ситуация вернулась к начальному состоянию.
П.С. Ложусь спать, ибо у нас уже 4 утра, а я еще не ложился.
В файле PCD8544.cpp находите данный кусок кода, комментируете условие if (model == CHIP_ST7576) и добавляете выделенные строки и перебераете значения контроля температуры и контрастности:
Первое значение начинается не с 04. на этом значении - постоянная ошибка компиляции.
Взял "05","06" и "07" для первой строчки и "81" "90" "A0" "B0" "C0" "D0" "E0" "EF" "FF" для второй.
Скомпилировал из них 27 прошивок. Сейчас буду прошивать и смотреть результаты.
А что, внутри дисплея еще и термометр есть? А с него температуру можно считывать?
Вроде как есть какой-то термокомпенсатор, температуру врядли с него можно считать, да и думаю точность у него никакая.
Дело сдвинулось с мертвой точки.
Ваши строчки не помогли, с ними в любом из значений (опробовал штук 10 значений из разных ключевых точек (начало, середина, конец и т.п.)). С ними изображения вообще никакого не было. Просто чистый экран.
Перебирая варианты, глаз зацепился за строчку выше в библиотеке. (см.цитату, строка 6). Я между тестами погуглил и наткнулся что у некоторых дисплеев есть ножка Vop, отвечающая за контраст (напряжение, которое надо подстраивать под температуру).
Так вот, в той строчке есть комментарий, содержащий это обозначение.
Я начал перебирать значения этой строчки в большую... не пошло, в меньшую сторону.. и.. после десятка значений дело сдвинулось с мертвовой точки. Сначала не явно, еле заметно, а потом сильнее фон стал бледнеть. Сейчас я дошел до значения b2 и текст выглядит так, что видно в лоб. Фон примерно в два раза бледнее текста. Еще фон немного подмаргивает, будто не знает к какому значению ему приходить.
Двигаюсь дальше.
Вообще-то это тоже самое и есть, просто закоментировал лишее.
Благодарю вас за подсказку и наводку, которые привели меня к искомой цели. И приведут кого-нибудь еще.
Нашел подходящее значение - aa. Причем до него и после него есть некие "полосы", на протяжении которых экран был просто пустой.
Для a0 текст уже слегка сложно читается. В общем, я свой диапазон "поймал". Надеюсь, приведенная информация поможет кому-то еще. Так просто, доступной информации в инете я не нашел. Доступной физически и по восприятию.
Вставка дисплея куда-либо с применением физической силы нарушает настройку контраста (экран может стать куда темнее). Не повторяйте моей ошибки.
Хех.
Я тоже мучался - при смене платы с 3,3 на 5 вольт.
Черный фон - едва едва видно текст.
А потом подключил сигнальные ноги через делитель на резисторах (1,0КОм и 1,5КОм) и вуаля.
Сам дисплей питаеться от 3,3 через модуль Kis3R33.
Вообщем пробуя вот эту библиотеку http://http://www.arduino.cc/playground/Code/PCD8544,тоже столкнулся с темным экраном при 5вольтах питания,обошел софтово этот глюк-изменив настройки контрастности