// ===== ТУТ НЕ ПРАВЛЬНО! ТА ЖЕ ОШИБКА! РОВНО КИЛОГЕРЦ НЕ ВЫВЕДИТЬСЯ! [El83] =====
if (countX<1000) { display.print(" "); display.print(countX); display.print("Hz");}
if (countX>1000) { float countXK=countX/1000.0; display.print(countXK,1); display.print("KHz");}
через else можно попробовать или так
....
if (countX=>1000) { float countXK=countX/1000.0; display.print(countXK,1); display.print("KHz");}
Добрый вечер всем пультоскопщикам. Я в прошивании ардуино-ноль по Кельвину. Может ли уважаемый bodriy2014 или кто-то ещё написать пошаговую инструкцию по прошивке ардуино для пультоскопа типа "прошивка для домохозяек". У меня ардуино нано и дисплей 5110 (красный). Для меня, да и для других инструкция может быть такой: ШАГ 1-Подключаем шнур разъёмом мини-юсб к плате а юсб к компу. (Должно ли что-то появиться на мониторе в разделе Мой компьютер ? У меня ничего не появляется). ШАГ 2- Открываем портабл IDE, который находится в скачаной и разархивированой папке arduino-1.6.5-r5. (Куда там подводить курсор и что нажимать). И так далее и тому подобное. Буду премного благодарен.
1. Подключаем ардуинку к юсб (если подключили первый раз, то ставим драйвера).
2. В диспетчере устройств должен появиться новый Com port (далее - ком порт). Проверить можно - выткнуть ненадолго и обратно воткнуть ардуинку. Запоминаем номер ком порта. Можно конечно не прибегать к диспетчеру, и не запоминать ком порт, но нужно знать что точно драйвера встали на ардуинку, тогда в пунке 6 можно действовать методом пребора доступных ком портов.
3. Распаковываем -> Открываем ардуино IDE с сайта автора (именно оттуда - важно!).
4. В IDE нажимаем Файл->Открыть, указываем на заранее скачаный и распакованный файл PULTOSCOPE_LCD5110_final2_DDS_Z.ino.
5. В IDE нажимаем Инструменты->Плата, выбираем свою.
6. Теперь нужно выбрать ком порт, на котором повисла ардуинка через Инструменты->Порт, и выбрать наш нужный, что запоминали в пункте 2.
Добрый вечер, Electronik83; благодарю за инструкцию. Вспомнил студенческий анекдот 80-х годов. На базаре людоед продаёт мозги; мозги физиков по 100 рублей за кило, а мозги историков по 1000 рублей. Народ интересуется: почему мозги историков такие дорогие. Людоед отвечает: "А вы знаете сколько нужно перебить историков, чтобы добыть килограмм мозгов?"
Добрый вечер. Я пытался установить драйверы для своей нано с неродной CH340C. Предполагал идти таким путём: открыть ардуино IDE c сайта автора, установить её и драйвера из неё. Затем найти и установить драйвера для CH340C. Но не получается установить ардуино IDE (при открывании arduino.exe на секунду появляется бирюзовый прямоугольник с надписью Arduino и исчезает). Видимо я неверным путём иду, дорогие товарищи. Кто может подсказать, как запустить IDE и драйверы для CH340C установить. У меня Виндовс 7.
Нашел косяк (то-ли в своем дисплее, то-ли в коде не пойму). Вообщем так, расцветал цветок сразу при запуске с прошивкой ув. товарища Electrronic83. У всех работает, а у меня нет. Короче, при замене в основном меню пунктов с кириллицы на латиницу - все заработало без сбоев. Иначе - цветок.
Добрый вечер. Вчера устанавливал драйвер для CH340, ни один ком порт не открылся. Просмотрел все пункты в диспетчере устройств, в пункте "Действие" открыл ком порты и тогда драйвер установился. Открыл IDE с помощью "запуск от администратора"... Вгрузил. На чёрном фоне красными буквами - low memory available, stability problems may occur, что по моему означает "мало доступной памяти, могут случаться проблемы со стабильностью. Может это потому, что у меня МК ATmega 328 PB-U ? Подал внешнее питание-работает. Сегодня утром включил-работает; при нажатии кнопки "минус" загорается св.диод L - так должно быть? Выключил питание- подсоединил ко входу генератор звуковой, подал питание на пультоскоп-а у него экран пустой. Пол-дня не трогал. Питание у меня от самодельного стаб. БП 7,7в. Вечером решил добавить напряжение- 9,0в. Экран пустой, а замигал св.диод L -раз в секунду; он так мигал когда ещё не было прошивки-предполагаю, что программа слетела. Может установить предыдущюю прошивку, которая занимает меньше памяти ? И ещё: у меня нет подсветки экрана : вывод BL есть- сажаю его на минус -света нет; может брак ? Может кто подскажет на счёт прошивки (без подсветки прожить можно) ?
BL на плюс питания через резистор. На этих дисплеях у меня такое было. Попробуйте на металлическую оправку понажимать в разных точкках (только не сильно).
"low memory available, ......" - Эта ошибка выскакивает у всех. Буфер приема АЦП значений автор выставил равным 700 байт при двух килобайтах общей памяти RAM микроконтроллера + всякие переменные + внутренние переменные, что генерит компилятор, библиотека под дисплейчик тоже наверное нормально жрет оперативу (в планах релиз - с отказом от неё). Выходит, что ранние версии прошивки вам не помогут, т.к. и там эта ошибка есть, просто можно закрыть глаза на нее. И это не ошибка даже, а просто предупреждение.
Программа просто так слететь не может. Мне кажется что у вас дело в железе. Проверяте все по схеме. Но попробуйте прошиться заново - это не сложно (чем черт не шутит)). Свою ардуинку я шью раз 20 за вечер, пока проверяю свои творения - пока живет, но жду смерти её))). А светодиод мигал раз в секунуду - это так прошивают новые ардуинки для проверки.
При нажатии влево (или минус) - светодиод у всех моргает.
Про подсветку не подскажу - не помню уже. Скажу лишь, что прошить МК можно и без подсветки, и без дисплея, и без кнопок. Эта вся перефирия никак ни влияет на сам процесс прошивки. Удачи!
Подскажите как добавить частотомер в второй вариант на TFT дисплее.... Пытался взять кусок кода с первого варианта 5110.. не получилось... Хотелась бы частотомер добавить место ардуинке ещё 40 % ///....
Собрал на TFT c pro mini всё стандартное на 16 МГц. подаю сигнал от генератора опорное 5.3 работает а переключаю на 1.1 полоса уходит в верх зашкаливает. напряжение генератора 0.3........0.8 в и никаких изменений даже частотомер непоказывает частоту....
А постоянки на выходе генератора нет ? Вы зачем то обьявляете 3 библиотеки экрана , уберите строки 3,4,6 , хотя это на уровени сигнала не должно влиять.
Может не нужно постоянно обновлять дисплейчик в меню? Мерцает. Через переменную можно сделать обновление.
В терминале можно отлавливать символ перехода на новую строку и переходить на дисплейчике. И все-таки символ ">" в терминале в начале строки необходим (мне так кажется).
А вот генератор и DDS генератор мне больше нравятся Ваши из бетки.
И настройки генератора и терминала сохранять в EEPROM.
Это не критика ни в коем случае. Получилось классно.
С терминалом согласен - просто многие видят пустой экран - и все: думают ничего не работает.
По поводу Бетки - я утерял исходники вместе с винтом. Искать не охота и решил переписать все заново)) Хоть мозги разомну немного...
С сохранением епром - согласен. Там много чего на самом деле нужно сохранять в епром. И еще подсмотрел у ютубера одного меню настроек из главного меню (контраст там, опорное и пр.) - тоже хочу реализовать.
По поводу критики - я вовсе не воспринимаю это как критику, а скорее такой себе дружественный совет и сам стараюсь именно подсказать, а не зачморить там кого-то. И такие советы полезны.
Если будет интерес к прошивке - буду делать дальше:)))
Интерес большой. Как оказалось- по работе стал очень необходим и маленький осцил и генератор прямоугольных импульсов. Я уже плату развел, осталось вытравить, маску сделать, спаять. Жду ЗИП из поднебесной. Потом фотки и печатку выложу.
Задача примено ясна. Будут вопросы - напишу.
P.S. извинятся не надо, тут все свои))))
Пока переделывал исходник под поставленную задачу обнаружил два интересных факта:
1. При частоте сигнала ровно 1 кГц пультоскоп не покажет её.
2. При напряжении сигнала 2,5 вольта частота отобразиться неверно наверно.
https://yadi.sk/d/7N3IYzIm3TirBG
Кто нибудь сможет затестить? Должно работать как в оригинале. Ничего не менял, немного код причесал, оптимизировал...
Так и будет,у вас же
// выводим частоту
// ===== ТУТ НЕ ПРАВЛЬНО! ТА ЖЕ ОШИБКА! РОВНО КИЛОГЕРЦ НЕ ВЫВЕДИТЬСЯ! [El83] ===== if (countX<1000) { display.print(" "); display.print(countX); display.print("Hz");} if (countX>1000) { float countXK=countX/1000.0; display.print(countXK,1); display.print("KHz");}через else можно попробовать или так
....
if (countX=>1000) { float countXK=countX/1000.0; display.print(countXK,1); display.print("KHz");}Я в курсе. Просто логику работы сохранил полностью.
https://yadi.sk/d/Bu863XlA3TnRL8 пока так...
Расцвел цветок и на этом все
А авторская версия прошивки работает?? У меня то все нормально))))
Работает Ваша Бета последняя. Собрано по схеме автора (которая на сайте) с кнопками на питание. Попробовал авторскую прошивку- работает.
протестил прошивку крайнюю - работает. насчет ачх идея возникла: отображать не точками, а вертикальными линиями
и думаю перед на вход пультоскопа операционник поставить не шибко тормозной
Добрый вечер всем пультоскопщикам. Я в прошивании ардуино-ноль по Кельвину. Может ли уважаемый bodriy2014 или кто-то ещё написать пошаговую инструкцию по прошивке ардуино для пультоскопа типа "прошивка для домохозяек". У меня ардуино нано и дисплей 5110 (красный). Для меня, да и для других инструкция может быть такой: ШАГ 1-Подключаем шнур разъёмом мини-юсб к плате а юсб к компу. (Должно ли что-то появиться на мониторе в разделе Мой компьютер ? У меня ничего не появляется). ШАГ 2- Открываем портабл IDE, который находится в скачаной и разархивированой папке arduino-1.6.5-r5. (Куда там подводить курсор и что нажимать). И так далее и тому подобное. Буду премного благодарен.
1. Подключаем ардуинку к юсб (если подключили первый раз, то ставим драйвера).
2. В диспетчере устройств должен появиться новый Com port (далее - ком порт). Проверить можно - выткнуть ненадолго и обратно воткнуть ардуинку. Запоминаем номер ком порта. Можно конечно не прибегать к диспетчеру, и не запоминать ком порт, но нужно знать что точно драйвера встали на ардуинку, тогда в пунке 6 можно действовать методом пребора доступных ком портов.
3. Распаковываем -> Открываем ардуино IDE с сайта автора (именно оттуда - важно!).
4. В IDE нажимаем Файл->Открыть, указываем на заранее скачаный и распакованный файл PULTOSCOPE_LCD5110_final2_DDS_Z.ino.
5. В IDE нажимаем Инструменты->Плата, выбираем свою.
6. Теперь нужно выбрать ком порт, на котором повисла ардуинка через Инструменты->Порт, и выбрать наш нужный, что запоминали в пункте 2.
7. Эскиз->Вгрузить. Ждем - Все.
протестил прошивку крайнюю - работает. насчет ачх идея возникла: отображать не точками, а вертикальными линиями
Да хоть звездачками:) Понял. Так и сделаю))) В процессе. Если честно - времени мало, по час в сутки перед сном....
P.S. А вертикальные линии не в менюхе ли моей подсмотрели?:)))))) Правда там горизонтальные)
Да нет, это уже давняя идея, линиями более нагляднее мне кажется
Добрый вечер, Electronik83; благодарю за инструкцию. Вспомнил студенческий анекдот 80-х годов. На базаре людоед продаёт мозги; мозги физиков по 100 рублей за кило, а мозги историков по 1000 рублей. Народ интересуется: почему мозги историков такие дорогие. Людоед отвечает: "А вы знаете сколько нужно перебить историков, чтобы добыть килограмм мозгов?"
Добрый вечер. Я пытался установить драйверы для своей нано с неродной CH340C. Предполагал идти таким путём: открыть ардуино IDE c сайта автора, установить её и драйвера из неё. Затем найти и установить драйвера для CH340C. Но не получается установить ардуино IDE (при открывании arduino.exe на секунду появляется бирюзовый прямоугольник с надписью Arduino и исчезает). Видимо я неверным путём иду, дорогие товарищи. Кто может подсказать, как запустить IDE и драйверы для CH340C установить. У меня Виндовс 7.
а какое отношение ваш пост имеет к пультоскопу?
не надо ничего предполагать,надо гуглить сн340 ардуино и се...
Получил первый медленный график. Скоро выложу....
И еще заметил, что когда обращаемся в ОЗУ к неотведенной памяти - расцветает цветок. Странно.
Не могу понять зависимость амплитуды сигнала от времени отображения. Странно2.
https://yadi.sk/d/LYRoZujk3TtuAx
Интерференция? Я фонил 50 Гц на провод своим пальцем.
Оживлю тему, не появилось ли новое решение пультоскопа под дисплей 3,2 TFT 480x320?
*TFT_HX8357.h
Я думаю что не появится. Очень долго рисовать на таком дисплее ардуиной. Сам пробовал.)))
попробовал новую прошивку, впечатляет
Нашел косяк (то-ли в своем дисплее, то-ли в коде не пойму). Вообщем так, расцветал цветок сразу при запуске с прошивкой ув. товарища Electrronic83. У всех работает, а у меня нет. Короче, при замене в основном меню пунктов с кириллицы на латиницу - все заработало без сбоев. Иначе - цветок.
Очень полезную функцию внесли. Отдельное спасибо.
Добрый вечер. Вчера устанавливал драйвер для CH340, ни один ком порт не открылся. Просмотрел все пункты в диспетчере устройств, в пункте "Действие" открыл ком порты и тогда драйвер установился. Открыл IDE с помощью "запуск от администратора"... Вгрузил. На чёрном фоне красными буквами - low memory available, stability problems may occur, что по моему означает "мало доступной памяти, могут случаться проблемы со стабильностью. Может это потому, что у меня МК ATmega 328 PB-U ? Подал внешнее питание-работает. Сегодня утром включил-работает; при нажатии кнопки "минус" загорается св.диод L - так должно быть? Выключил питание- подсоединил ко входу генератор звуковой, подал питание на пультоскоп-а у него экран пустой. Пол-дня не трогал. Питание у меня от самодельного стаб. БП 7,7в. Вечером решил добавить напряжение- 9,0в. Экран пустой, а замигал св.диод L -раз в секунду; он так мигал когда ещё не было прошивки-предполагаю, что программа слетела. Может установить предыдущюю прошивку, которая занимает меньше памяти ? И ещё: у меня нет подсветки экрана : вывод BL есть- сажаю его на минус -света нет; может брак ? Может кто подскажет на счёт прошивки (без подсветки прожить можно) ?
BL на плюс питания через резистор. На этих дисплеях у меня такое было. Попробуйте на металлическую оправку понажимать в разных точкках (только не сильно).
2 rusoturisto:
"low memory available, ......" - Эта ошибка выскакивает у всех. Буфер приема АЦП значений автор выставил равным 700 байт при двух килобайтах общей памяти RAM микроконтроллера + всякие переменные + внутренние переменные, что генерит компилятор, библиотека под дисплейчик тоже наверное нормально жрет оперативу (в планах релиз - с отказом от неё). Выходит, что ранние версии прошивки вам не помогут, т.к. и там эта ошибка есть, просто можно закрыть глаза на нее. И это не ошибка даже, а просто предупреждение.
Программа просто так слететь не может. Мне кажется что у вас дело в железе. Проверяте все по схеме. Но попробуйте прошиться заново - это не сложно (чем черт не шутит)). Свою ардуинку я шью раз 20 за вечер, пока проверяю свои творения - пока живет, но жду смерти её))). А светодиод мигал раз в секунуду - это так прошивают новые ардуинки для проверки.
При нажатии влево (или минус) - светодиод у всех моргает.
Про подсветку не подскажу - не помню уже. Скажу лишь, что прошить МК можно и без подсветки, и без дисплея, и без кнопок. Эта вся перефирия никак ни влияет на сам процесс прошивки. Удачи!
При быстрой отрисовке дисплей умеет быть не только черно-белым https://yadi.sk/d/XTlJjmCL3TxAkr . Есть и градации серого:))
Добрый день. VicSan, благодарю. Electronik83, благодарю за подробное объяснение. Не зря издавали сельскохозяйственный журнал "ЗНАНИЕ-СИЛОС":)
Подскажите как добавить частотомер в второй вариант на TFT дисплее.... Пытался взять кусок кода с первого варианта 5110.. не получилось... Хотелась бы частотомер добавить место ардуинке ещё 40 % ///....
подскажите почему на схеме вход щупа а3 соединен с pin5?
ведь в регистре конфигурации ацп прописан вход а3 или я чего не уследил в коде?
подскажите почему на схеме вход щупа а3 соединен с pin5?
ведь в регистре конфигурации ацп прописан вход а3 или я чего не уследил в коде?
Там по пин5 меряется частота, если амплитуда сигнала больше 2.5 вольта.
что то не могу найти в коде непосредственно чтение состояния пина 5. если не трудно ткните носом.
В либе FreqCount. Скорее всего на аппаратном прерывании висит.
Закончил вроде как с медленным осциллом, по пути доработал много чего. Держите
https://yadi.sk/d/V66xoq473U2ipx
Есть смысл делать главное меню в графике???? Есть задумки.... Нужно кому нибудь ваще все это?
Спасибо, будем пробовать совместно с ГКЧ
Неработает функция опорное напряжение 1.1 вольт.
Неработает функция опорное напряжение 1.1 вольт.
Уточните пожалуйста, где именно??
Неработает функция опорное напряжение 1.1 вольт.
Если в развертках 6 и выше, то это давний баг. Наблюдается при кварцах больше 20 МГц.
Бодрый 2014 выкладывал ролик с лечением. Мне не помогло. Поэтому использую с кварцем на 20.
Собрал на TFT c pro mini всё стандартное на 16 МГц. подаю сигнал от генератора опорное 5.3 работает а переключаю на 1.1 полоса уходит в верх зашкаливает. напряжение генератора 0.3........0.8 в и никаких изменений даже частотомер непоказывает частоту....
#include <MCUFRIEND_kbv.h> MCUFRIEND_kbv tft; #include <UTFTGLUE.h> UTFTGLUE myGLCD(0xB509,A2,A1,A3,A0); #include <Adafruit_GFX.h> // Core graphics library #include <Adafruit_TFTLCD.h> // Hardware-specific library #define LCD_CS A3 // Chip Select goes to Analog 3 #define LCD_CD A2 // Command/Data goes to Analog 2 #define LCD_WR A1 // LCD Write goes to Analog 1 #define LCD_RD A0 // LCD Read goes to Analog 0 #define BLACK 0x0000 #define BLUE 0x001F #define RED 0xF800 #define GREEN 0x07E0 #define CYAN 0x07FF #define MAGENTA 0xF81F #define YELLOW 0xFFE0 #define WHITE 0xFFFF #define SERY 0x5B4D // 0x5B4D //пользовательские настройки!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! #define levo 12 #define ok 11 #define pravo 10 //пользовательские настройки!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! byte mass[501];//массив АЦП byte massDEL[501]; byte menu=1;//переменная верхнего меню byte razv=0;//значение развертки float x=60;//счетчик оси Х int Vmax=0;// максимальное напряжение float Vakb=0;//напряженеи AКБ unsigned long t=0;//переменная для ращета развертки unsigned long pause=0;//переменная для замены Delay int t_del=0; //значение цены деления развертки в микросекундах bool opornoe=1; //флаг опорного напряжения bool paus=0; //флаг режима паузы bool clen_p=0;//флаг чистки паузы int Htime; //integer for storing high time int Ltime; //integer for storing low time float Ttime; // integer for storing total time of a cycle float frequency; //storing frequency void setup(){ pinMode(A5,INPUT); Vakb=analogRead(A6)*5.0/1024;//проверка напряжения на АКБ if(opornoe==0){ADMUX = 0b00100101;}//выбор внутреннего опорного 1,1В if(opornoe==1){ADMUX = 0b01100101;}//Выбор внешнего опорного uint16_t identifier = tft.readID(); tft.begin(identifier); tft.fillScreen(BLACK); delay(50); } double sum=0; int count=0; void Zamer(){//заполнение буфера АЦП if (razv>=6){ADCSRA = 0b11100010;}//delitel 4 if (razv==5){ADCSRA = 0b11100011;}//delitel 8 if (razv==4){ADCSRA = 0b11100100;}//delitel 16 if (razv==3){ADCSRA = 0b11100101;}//delitel 32 if (razv==2){ADCSRA = 0b11100110;}//delitel 64 if (razv<2){ADCSRA = 0b11100111;}//delitel 128 if (razv==0){ t=micros(); for(int i=0;i<500;i++){ while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; delayMicroseconds(100); mass[i]=ADCH; } t= micros()-t; t_del=t*25/501; } if (razv>0){ t=micros(); for(int i=0;i<500;i++){ while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; mass[i]=ADCH; } t= micros()-t; t_del=t*25/501; } } void MenuT(){//перерисовка нижнего меню tft.setRotation(0); tft.fillRect(0, 20, 20,320,BLACK);//стирание поля меню низ tft.setTextColor(WHITE); tft.setRotation(1); tft.setCursor(54,220); tft.print("t="); if(razv<7){tft.print(t_del);} if(razv==7){tft.print(t_del/2);} if(razv==8){tft.print(t_del/3);} if(razv==9){tft.print(t_del/4);} if(razv==10){tft.print(t_del/5);} tft.print("us "); tft.print("Vmax="); if(opornoe==0){tft.print(Vmax*1.1/255);} if(opornoe==1){tft.print(Vmax*5.3/255);} tft.print(" B"); tft.print(Vakb); } void loop() { // /* tft.setRotation(1); Htime=pulseIn(A5,HIGH); //read high time Ltime=pulseIn(A5,LOW); //read low time Ttime = Htime+Ltime; frequency=1000000/Ttime; //getting frequency with Ttime is in Micro seconds tft.fillRect(105, 36, 320, 15 ,BLACK);//стирание tft.setTextColor(CYAN); tft.setCursor(95,38); tft.print("*"); tft.setTextColor(BLUE); tft.setCursor(110,37); tft.print(frequency); tft.print(" Hz"); delay(5); //*/ Zamer(); //отрисовка и перебор меню############################### if(menu==0){ tft.setRotation(1); tft.setTextColor(WHITE); tft.setTextSize(2); tft.fillRect(57, 0, 90, 25, RED); // 1 tft.setCursor(60,5); if(opornoe==0){tft.print("op-1.1V ");} if(opornoe==1){tft.print("op-5.3V ");} if(digitalRead(pravo)==HIGH){ tft.setRotation(0); tft.fillRect(65, 0, 120, 50, BLACK);//стирание напряжения opornoe=!opornoe;} if(digitalRead(levo)==HIGH){ tft.setRotation(0); tft.fillRect(65, 0, 120, 50, BLACK);//стирание напряжения opornoe=!opornoe;} tft.setRotation(1); tft.print("Razv*"); tft.print(razv); tft.print(" P-OFF"); } if(menu==1){ tft.setRotation(1); tft.setTextColor(WHITE); tft.setTextSize(2); tft.fillRect(150, 0, 95, 25, RED); // 2 tft.setCursor(60,5); if(opornoe==0){tft.print("op-1.1V ");} if(opornoe==1){tft.print("op-5.3V ");} if(digitalRead(pravo)==HIGH){ //доработать скорость tft.setRotation(0); razv++; if(razv==11){razv=10;} } if(digitalRead(levo)==HIGH){ //доработать скорость tft.setRotation(0); razv--; if(razv==255){razv=0;} } tft.setRotation(1); tft.print("Razv*"); tft.print(razv); tft.print(" P-OFF"); } if(menu==2){//пауза paus=1; if(clen_p==0){ clen_p=1; tft.setRotation(1); tft.setTextColor(WHITE); tft.setTextSize(2); tft.fillRect(247, 0,60, 25, RED); // 3 tft.setCursor(60,5); if(opornoe==0){tft.print("op-1.1V ");} if(opornoe==1){tft.print("op-5.3V ");} tft.print("Razv*"); tft.print(razv); if(paus==0){tft.print(" P-OFF");} if(paus==1){tft.print(" P-ON");} } } if(digitalRead(ok)==HIGH){ menu++; tft.setRotation(0); if(menu==3){menu=0;paus=0;clen_p=0;} tft.setRotation(1); tft.fillRect(0, 0,380, 25, BLACK); } //отрисовка и перебор меню############################### //Выбор опорного######################################### if(opornoe==0){ADMUX = 0b00100101;}//выбор внутреннего опорного 1,1В if(opornoe==1){ADMUX = 0b01100101;}//Выбор внешнего опорного delay(5); //Выбор опорного######################################### tft.setRotation(0); //ось напряжения########################################## tft.drawFastHLine(44,60,140,BLUE); // полоса вертикальная tft.drawFastHLine(44,59,140,BLUE); // полоса вертикальная tft.drawFastHLine(44,389,140,BLUE); // полоса вертикальная tft.drawFastHLine(44,390,140,BLUE); // полоса вертикальная tft.drawFastVLine(53,51,8, BLUE); tft.drawFastVLine(76,51,8, BLUE); tft.drawFastVLine(102,51,8, BLUE); // деление синее tft.drawFastVLine(128,51,8, BLUE); tft.drawFastVLine(154,51,8, BLUE); tft.drawFastVLine(180,51,8, BLUE); tft.drawFastVLine(53,389,8, BLUE); tft.drawFastVLine(76,389,8, BLUE); tft.drawFastVLine(102,389,8, BLUE); // деление синее tft.drawFastVLine(128,389,8, BLUE); tft.drawFastVLine(154,389,8, BLUE); tft.drawFastVLine(180,389,8, BLUE); //ось времени############################################# tft.drawFastVLine(43,60,326, RED); // полоса горизонтальная tft.drawFastVLine(42,60,326, RED); // полоса горизонтальная tft.drawFastHLine(35,60,9,RED);tft.drawFastHLine(35,85,9,RED);tft.drawFastHLine(35,110,9,RED); tft.drawFastHLine(35,135,9,RED);tft.drawFastHLine(35,160,9,RED);tft.drawFastHLine(35,185,9,RED); tft.drawFastHLine(35,210,9,RED);tft.drawFastHLine(35,235,9,RED);tft.drawFastHLine(35,260,9,RED); tft.drawFastHLine(35,285,9,RED);tft.drawFastHLine(35,310,9,RED);tft.drawFastHLine(35,335,9,RED); tft.drawFastHLine(35,360,9,RED);tft.drawFastHLine(35,385,9,RED); // деление красное //ось времени############################################# //сетка вертикальная ##################################### tft.drawFastHLine(44,85,140,SERY); // полоса вертикальная tft.drawFastHLine(44,110,140,SERY); tft.drawFastHLine(44,135,140,SERY); tft.drawFastHLine(44,160,140,SERY); tft.drawFastHLine(44,185,140,SERY); tft.drawFastHLine(44,210,140,SERY); tft.drawFastHLine(44,235,140,SERY); tft.drawFastHLine(44,260,140,SERY); tft.drawFastHLine(44,285,140,SERY); tft.drawFastHLine(44,310,140,SERY); tft.drawFastHLine(44,335,140,SERY); tft.drawFastHLine(44,360,140,SERY); tft.drawFastVLine(53,62,326, SERY); // полоса горизонтальная tft.drawFastVLine(76,62,326, SERY); tft.drawFastVLine(102,62,326, SERY); tft.drawFastVLine(128,62,326, SERY); tft.drawFastVLine(154,62,326, SERY); tft.drawFastVLine(180,62,326, SERY); //сетка вертикальная ##################################### tft.setRotation(1); tft.setTextColor(MAGENTA); tft.setTextSize(2); //шкала напряжения######################################## if(opornoe==0){ tft.setCursor(34, 183);tft.println("0"); tft.setCursor(0, 155); tft.println("0.22"); tft.setCursor(0, 128); tft.println("0.44"); tft.setCursor(0,105); tft.println("0.66"); tft.setCursor(0, 80); tft.println("0.88"); tft.setCursor(0, 50) ;tft.println("1.1V"); } if(opornoe==1){ tft.setCursor(34, 183);tft.println("0"); tft.setCursor(0, 155); tft.println("1.00"); tft.setCursor(0, 128); tft.println("2.00"); tft.setCursor(0, 105); tft.println("3.00"); tft.setCursor(0, 80); tft.println("4.00"); tft.setCursor(0, 50); tft.println("5.0V"); } //шкала напряжения######################################## if(paus==0){MenuT();} //максимальное значение сигнала########################## Vmax=0; for(int i=0;i<500;i++){ if(Vmax<mass[i]){ Vmax=mass[i];} } //максимальное значение сигнала########################## //отрисовка графика№№№№№№№№№№№№№№№№№№№№№ if(paus==0){ tft.setRotation(0); x=60; for(int y=0;y<324;y++){ tft.setRotation(1); if(razv<7){x++;} if(razv==7){x=x+2;} if(razv==8){x=x+3;} if(razv==9){x=x+4;} if(razv==10){x=x+5;} tft.drawLine(x+1,190-massDEL[y]/2+1, x+2,190-massDEL[y+1]/2+1, BLACK);//стираем график tft.drawLine(x,190-massDEL[y]/2, x+1,190-massDEL[y+1]/2, BLACK);//стираем график tft.drawLine(x+1,190-mass[y]/2+1, x+2,190-mass[y+1]/2+1, GREEN);//график tft.drawLine(x,190-mass[y]/2, x+1,190-mass[y+1]/2, GREEN);//график } for(int i=0;i<500;i++){massDEL[i]=mass[i];} } if(paus==1){//режим паузы if(digitalRead(pravo)==HIGH){//листаем tft.setRotation(0); tft.fillRect(44, 61, 140, 325, BLACK);//стиране графика x=60; for(int y=0;y<324;y++){ tft.setRotation(1); if(razv<7){x++;} if(razv==7){x=x+2;} if(razv==8){x=x+3;} if(razv==9){x=x+4;} if(razv==10){x=x+5;} tft.drawLine(x+1,190-mass[y]/2+1, x+2,190-mass[y+1]/2+1, GREEN);//график tft.drawLine(x,190-mass[y]/2, x+1,190-mass[y+1]/2, GREEN);//график } MenuT(); } if(digitalRead(levo)==HIGH){//листаем tft.setRotation(0); tft.fillRect(44, 61, 140, 325, BLACK);//стиране графика x=60; for(int y=0;y<324;y++){ tft.setRotation(1); if(razv<7){x++;} if(razv==7){x=x+2;} if(razv==8){x=x+3;} if(razv==9){x=x+4;} if(razv==10){x=x+5;} tft.drawLine(x+1,190-mass[y]/2+1, x+2,190-mass[y+1]/2+1, GREEN);//график tft.drawLine(x,190-mass[y]/2, x+1,190-mass[y+1]/2, GREEN);//график } MenuT(); //отрисовка графика№№№№№№№№№№№№№№№№№№№№№ } } }TFT 3 дюйма.
добавлена удобная сетка и частотомер.
А постоянки на выходе генератора нет ? Вы зачем то обьявляете 3 библиотеки экрана , уберите строки 3,4,6 , хотя это на уровени сигнала не должно влиять.
Я бы сэкономил минимум три байта памяти программ ROM и написал бы так:
Electronik83. Я взял часть из скетча пультоскопа. Пример частотомера в самой библиотеке.
Анимированное меню https://yadi.sk/d/1vxdv-CS3UBPoJ для любителей экранчиков 5110.
Может не нужно постоянно обновлять дисплейчик в меню? Мерцает. Через переменную можно сделать обновление.
В терминале можно отлавливать символ перехода на новую строку и переходить на дисплейчике. И все-таки символ ">" в терминале в начале строки необходим (мне так кажется).
А вот генератор и DDS генератор мне больше нравятся Ваши из бетки.
И настройки генератора и терминала сохранять в EEPROM.
Это не критика ни в коем случае. Получилось классно.
С обновлением дисплея переделаю.
С терминалом согласен - просто многие видят пустой экран - и все: думают ничего не работает.
По поводу Бетки - я утерял исходники вместе с винтом. Искать не охота и решил переписать все заново)) Хоть мозги разомну немного...
С сохранением епром - согласен. Там много чего на самом деле нужно сохранять в епром. И еще подсмотрел у ютубера одного меню настроек из главного меню (контраст там, опорное и пр.) - тоже хочу реализовать.
По поводу критики - я вовсе не воспринимаю это как критику, а скорее такой себе дружественный совет и сам стараюсь именно подсказать, а не зачморить там кого-то. И такие советы полезны.
Если будет интерес к прошивке - буду делать дальше:)))
Интерес большой. Как оказалось- по работе стал очень необходим и маленький осцил и генератор прямоугольных импульсов. Я уже плату развел, осталось вытравить, маску сделать, спаять. Жду ЗИП из поднебесной. Потом фотки и печатку выложу.
https://yadi.sk/d/DW2Dx2h13UG3XL для 5110...