Самодельный передатчик (часть 2)
Тут уже как минимум 4 варианта дисплеев используется. 😃 Или ответ соответсвующий вопросу вас устроет? Очевидно, в графической библиотеке, в подпрограмме инициализации. 😃
Ну я все еще пока С55 мучаю, вроде выше тока о нем и пишу ))))
Я нашел варианты с хорошей контрастностью, но там есть глюк, в некоторых местах меню выползает на экране мусор, вот решил разбиратся.
Одно плохо, что бы проверить изменения надо постоянно прошиватся, а шьет у меня минут по 5 , вот и растягивается на долго ))))
Ура заработало, я его до мучал ))
Исходники были взяты от MSV_Nok3310_v1.9.1_plate_v.2A, файл проэкта LCD_3320.c, был заменен аналогичным файлом от проэкта dollop, с неоригинальным дисплеем.
Были внесены изменения под С55 и все заработало.Огромное спасибо всем кто приложил, свои руки и голову к проэкту.
Прицепляю рабочий проэкт под дисплей от С55, v1.9.1
Функции сервотестера, конечно, добавить бы хорошо.
КМК, интересно было бы выводить сервотестер прямо в PPM, выбирая каналы. Скажем, вывести сервотестер в первый и в пятый - прямо-синхронно, а в шестой - его же в противофазе. Тогда сервы тестились прямо на борту, без дополнительных соединений.
Вывод сервотестера из корпуса аппы - можно на отдельную ногу, а можно и навесным декодером (вынуть сигнал из PPM между кодером и передатчиком - деццкия игрушки).
Да, можно и и в PPM, но на отдельный разьем то же бы не помешало бы на всякий случай если в цепи приемника возникнет неконтакт или помеха.
По управлению можно сделать автоматическое последовательное переключение каналов с 1 по 8. Причем создать выбор, все последовательно тестить или какой то конкретный канал или набой каналов.
А алгоритм теста можно сделать например такой>> полный ход в крайние положения и потом шаговое перемещение из одного крайнего положения серво в другое и обратно с возвращением в нейтраль…
Фух, наконец собрал эклипс! Все классно стало, как родное, особенно индикатор, правда видимая область у TIC154 чуть больше, чем у родного хайтековского, так что пришлось снять защитное стекло. Часть родных кнопок задействовал по назначению, остальные остались невостребованы. Прка собирал, появилась мысль что б реализовать глушку просто кнопкой в тригерном режиме, как в родном еклипсе.
Немного медленный индикотор, по сравнению с нокиевским, но читаемость лучше, аж захотелось свой переделать.
Но есть одна заминка: с родным ВЧ модулем на 35МГц работает без проблемм, а потом поставил АССАН 2,4, так он не входит в режим программирования, т.е. сразу при подаче питания длинный бип, на сек загорается красным и потом горит зеленым, на ручки ужде не реагирует. Проблемму решил только вставкой Вч модуля ПОСЛЕ подачи питания на передатчике…
поставил АССАН 2,4, так он не входит в режим программирования
Есть решение, хотя и не совсем по фен-шую (и при условии, что питание с передатчика снимается в режиме “ученик”): можно воткнуть разъем “тренер-ученик”, включить аппу, включить приемник АССАН, и выдернуть разъем.
Меня этот путь пока вполне удовлетворяет, ибо программировать приемник пока понадобилось всего один раз.
Если надо часто - можно сделать отдельный выключатель (или использовать “лишние”). Только, естественно, так, чтобы он не мог быть включен случайно в процессе эксплуатации.
Да! Еще про АССАН: количество каналов на модели должно соответствовать количеству каналов в приемнике. Для 6-ти канального допустимо ставить в настройках модели 7 каналов (еще одно подтверждение тому, что этот приемник - реально 7-ми канальный).
Просто иллюстрация, как ситуация выглядит у меня: Если поставить в настройках модели 8 каналов, то после включения 6-ти канального приемника начнется писк регулятора (подсоединенного на 3-й канал) про некорректный сигнал. Если аппу выключить-включить (при этом может сработать Fail-Safe и запустить мотор, если оно так настроено!!!), то каналы придут в норму и модель можно будет запустить. Я долго морщил репу, пока не понял эту простую связь…
Если я ничего не путаю, для нормальной работы биндинга Assan надо убрать 500 миллисекундную задержку перед разрешение прерывания таймера в Coder.c.
Вот это место:
cur_Temperature=read_adc(ch_Temperature);
Calc(); //первоначальный расcчет;
//beep_start(hello_sound, 4, 0);
beep_start(hello_sound, 4, 0);
displ_menu();
//delay_ms(500); //Вот эту задержку надо убирать…
TIMSK|=0x10; // Разрешаем прерывание таймера
Да, если аппа не поспевает всего на пол-секунды или меньше, должно помочь.
Надо будет попробовать при случае…
точно-точно. убирал эту задержку для ассана.
Не уверен, но вроде припоминаю, что эту задержку оставил еще от кодера фокуса. Думал потом разобраться в ее необходимости, но так и забыл, не мешала… 😃
Вот прицепил к кодеру дисплей RDX0154GC о котором речь шла пару странц назад (не знаю, чем там дело закончилось у моего соотечественника). Эти дисплеи пришли на смену TIC154. Во всяком случае у нас тиков не найти уже, а RDX0154GC обещают поставлять в неограниченых количествах (при цене $5,3 за штуку) занимается ими офф. дистрибьютер компании Microchip.
Кроме этого, заполнил (на 90%) свою страничку с описанием переделки корпуса аппы HK7X под кодер с дисплеем TIC154. Так как дисплеи очень похожи, думаю, что пусть они живут на одной странице (да и в аппу я не встраивал RDX0154GC - просто посмотрел, что отлично работает).
Но есть к Дмитрию EagleB3 вопрос. Не могу подвинуть на один пиксель влево ползунок настройки доп. проп. канала при калибровке. Все остальное меню, благодаря Дмитрию завязанное на переменных, перевелось на дисплей 65х132 без проблем. Спасибо!
Я где-то “перемудрил” со схемой подключения RDX0154GC-или дисплей мне попался бракованный
Как будет выложена схема с RDX0154GC-,проверю свой дисплей
Сравню со своей схемой-и будет понятна причина(хотя вывод один-не получилось у меня)
Не могу подвинуть на один пиксель влево ползунок настройки доп. проп. канала при калибровке. Все остальное, завязанное на переменных, перевелось на дисплей 65х132 без проблем
Вот проблема как раз в этом, в автоматическом пересчете. У меня все идеально легло в 11 “цуней”+1столбец, т.е. (4+1+4+1+1)=11*12+1.
Этот “+1” возникает из-за того, рисование начинается не с первого столбца, а с нулевого, и рисунок реально занимает 1+132=133 столбца. В расчете нулевого стобца нет, а линия в нем - есть.
Упустил я этот “+1” из автоматического расчета… 😊
Можно просто посчитать (если заниматься подгонкой - лучше в Excel. Я, когда макетировал экран, вообще создал чертеж в Solid Works… 😒) координаты X в этих макросах (ненужные строки удаляю, результат дописываю справа):
//Графический экран калибровки
//Расчет предварительных параметров ("автоматизация")
#define TW WidthS/11 //Горизонтальный цунь дисплея =12
#define LeftPole 0 //Отступ слева
#define AdjAreaW TW*4 //Ширина рамки =48
#define AdjBarW TW //Ширина бара =12
#define IntAdjArea TW //Интервал между рамками =12
#define IntAdjBar TW //Интервал между правой рамкой и баром =12
//Расчет основных параметров по предварительным
#define X1A1 LeftPole //Левый край левой рамки =0
#define X2A1 X1A1+AdjAreaW //Правый край левой рамки = 48
#define X1A2 X2A1+IntAdjArea //Левый край правой рамки =60
#define X2A2 X1A2+AdjAreaW //Правый край правой рамки =108
#define X1B X2A2+IntAdjBar //Левый край бара =120
#define X2B X1B+AdjBarW //Правый край бара =132
Вот тут как раз и видно, что я рисую от LeftPole до X2B включительно (в столбцах 0…132, всего 133 столбца).
А тебе доступны только 0…131 (всего 132 столбца)
Если оставить “Цунь” целочисленным и сделать = 11, то впустую пропадут 11 столбцов, что обидно.
Сделать “цунь” с дробной частью? Ничего хорошего, скорее всего, не получится. Но можно попробовать…
Самое простое - поиграть параметром AdjBarW , который сейчас равен 1 “цуню”, примерно так:
#define AdjBarW TW-1 //Ширина бара
На сколько я понимаю, правая граница после этого должна появиться. Если нет - вычти 2, 3 - ну вылезет она в конце-концов, некуда ей деваться…
Дальше - варианты (сплошная эстетика):
Либо оставь AdjBarW как есть и вычти по единице из интервалов между рамками - справа появится один пустой столбец.
Либо вычти по единице из интервалов между рамками и из ширины бара, а LeftPole сделай 1 вместо 0 - у тебя появится по одному пустому столбцу слева и справа, интервалы между квадратами будут равны ширине бара, но станут они чуть-чуть уже.
Но калибровка - это, насколько я помню, единственный экран, который я считал чисто от левого края вправо. Все прочие делались симметричными, и либо считались"от левой влево, от правой - вправо", либо целочисленным делением определялась середина и от нее раскладывалось поровну влево и вправо. Там быть проблем не должно.
Красотища! Стаю в очередь на новый индикатор…уж очень он мне понравился. А пока еще попался в руки трупик турниги9…будет чем заняться.
Красотища! Стаю в очередь на новый индикатор…уж очень он мне понравился. А пока еще попался в руки трупик турниги9…будет чем заняться.
Ну в Украине проблем купить нов индикатор нет-нашёл за 3 дня
Срочно всё бросаю и делаю этот вариант кодера
Самое простое - поиграть параметром AdjBarW , который сейчас равен 1 “цуню”, примерно так:
#define AdjBarW TW-1 //Ширина бара
Дмитрий, спасибище!
Все в порядке после
#define AdjBarW TW-1
Как будет выложена схема с RDX0154GC, проверю свой дисплей
Геннадий, там подключение по даташиту полностью. Кстати, дисплей толерантен к 5В, то есть я запитывал его от 5В и I2C тоже у меня пятивольтовая (по прайсам кое-где дисплей RDX0154GC указывается как 3,3-5В - поэтому я такой смелый 😃) Страницу обновил. На всякий случай схему даю сюда
Ну теперь осталось после ночной с работы домой добраться и доделать по этой схеме и прошивке
Кстати,когда брал радиодетали -взял
Фототранзистор L-53P3BT d=5мм e-voron.dp.ua/catalog/003446
Светодиод 3мм FYL-3014 UBC Синий e-voron.dp.ua/catalog/013649
Для замены в паре потенциометров на стиках
Первый вариант -сектор между светодиодом и фототранзистором-был попробован,но не подошёл из-за неточности
Второй вариант-поворот поляризатора(фрагмент с экрана тетриса)-результаты положительные-и буду лепить в новом кодере всё вместе
Выложу черновик печатной платы под RDX0154GC -точное соответствие на чертеже выводов дисплея,контур дисплея и выводов подсветки-по размеру с большой точностью-проверено,добавка остальных элементов -дело 5 минут
Щас “дочерчиваю”
-под вариант с разъёмами шагом 2 мм -
Также предложение разработчикам-добавить на сайт даташиты на RDX0154GC и др соответственно
Никто из спектрума ДХ-5 не собирается “спектр ДХ-12Ё” делать? Скрещивал в выходные рояль про со спектрумовским 12-канальным модулем, за одно срисовал протокол… Все просто!
000001 10:21:03.203 00 00 83 E5 3B E5 1B E5 43 E5 4B E5 *5B EF* FF FF …ѓе;е.еCеKе[пяя - тут менялся 12 канал.
000002 10:21:03.218 00 00 0B E5 2B E5 13 E5 23 E5 33 E5 53 E5 FF FF …е+е.е#е3еSеяя
12 канал выделил звездочками. 😃 Расписываете побитно, первые 5 бит - адрес, вторые 11 бит - значение канала. В нулевом канале - 5ый бит в единичке - означает первый пакет.
Первый байт в посылке - управление модулем ДХ5, там как и в 7-канальном 10битном спектрумовском протоколе надо ставить нужное значение функции и мощности.
В зависимости от того, какой приемник биндится - модуль менял протокол с 7каналов10бит на 12 каналов 11бит. В варианте с модулем от ДХ5 придется в меню “тип модуляции” делать выбираемым. Покрайней мере 6-канальные приемники с 12 канальным сигналом - с ума сходят.
У меня вопрос.
Под энкодер с кнопкой (от магнитоллы) чтоб бы, крутилка эмулировала перемещение верх-вниз, короткое нажате в право, нажатие с небольшой задержкой в лево, сложно изменить прошивку ?
А то я на PIC12F675 сделал эмулятор, но хотелось бы , без лишних заморочек.
Вобщем вдруг кому приодится.
Озаботился я кнопками для переделки второго пульта, и что нить более менее меня устраивающие не нашлось, то что устраивало (от панельки автомагнитоллы) были уже установленны в первый пульт. rcopen.com/forum/f8/topic207267/1532
И тут с той же панелки в глаза бросился энкодер с кнопкой, вот и решил его пристроить, а так как кнопка одна, то решил на нее повесить двойную функцию, в предыдущем посте ее логика описанна.
Так как в Си я полный ноль, да и не дается он мне почему-то ( не идет и все тут), понял что с исходниками мне делать нечего, а поиск по теме на счет энкодера, нужного мне варианта не нашлось, решил прикрутить к энеодеру PIC ( пишу в Flowcode, а там для простых задач можно и без Си обойтись)
Вот что получилось, проверенно и работает.
Схема
Так как не хватило одного вывода контроллера и брать другой контроллер не хотелось, пришлось управление (вправо- влево) делать на одном выходе, поэтому R5-R4 должны быть как в схеме , что бы не было ложных срабатываний.
Понимаю что все вышенаписанное это извращение(хотя и работает), поэтому буду благодарен если кто это все сможет прописать в прошивку кодера, для прямого подключения энкодера с кнопкой к кодеру.
А так подключил пошарился по меню, и что могу сказать, навигация очень даже удобная, кроме изменения больших велечин, но для них есть дополнительный пропорциональный канал.
Ниже цепляю прошивку