Пультоскоп на Arduino 27МГц!!!

Electronik83
Offline
Зарегистрирован: 06.12.2015

mega2560 - обычная, а экран TFT с чипом ili9481 320x480.

Видел такой комплект на али около рубля.

Но я мегу2560 брал отдельно за 400 рублей давно.

Дисплей этот 473 рубля...

Electronik83
Offline
Зарегистрирован: 06.12.2015

Nikolaj666 пишет:

https://ru.aliexpress.com/item/Free-shipping-3-2-inch-TFT-LCD-screen-mod...

я такой заказал. угадал ?

У меня такой же в точности:)

Nikolaj666
Nikolaj666 аватар
Offline
Зарегистрирован: 19.01.2017

супер. а он только с мегой работает ? помельче чего ног не хватит ? хотел автоматику для аквариума с фитофильтром замутить. если мозгов хватит. в чём я сомневаюсь сильно :(

Juris
Juris аватар
Offline
Зарегистрирован: 28.10.2016

В рублях я ничего не понимаю, но Спасибо за подсказку, про чипсет дисплея :)

Nikolaj666
Nikolaj666 аватар
Offline
Зарегистрирован: 19.01.2017

Juris пишет:

В рублях я ничего не понимаю, но Спасибо за подсказку, про чипсет дисплея :)

5,95$ экран стоит

Лекс 59
Лекс 59 аватар
Offline
Зарегистрирован: 02.04.2016

Госпорда, я в некотором недоумении. Знакомый нарыл и выписал пару модулей esp8266  isp12. Утверждает (инет подтверждает его слова), что это та же самая Ардуино, только в десять раз быстрее. 20 ног, но аналоговый вход только один. Вроде 5110 дисплейчик к ним прикручивают тоже.

А для Пультоскопа эта штука применима? Было бы заманчиво 200-300 килогерц диапазон иметь, или не все так просто?

Nikolaj666
Nikolaj666 аватар
Offline
Зарегистрирован: 19.01.2017

источник питания 3.3в ток до 300мА.............

Juris
Juris аватар
Offline
Зарегистрирован: 28.10.2016

Популярный ESP8266 не есть "Ардуино", конечно (он как бы в основном WiFi/serial/microcontroller), но его давно впихнули в среду Ардуиновскую, как и многое другое. Как и STM32, например. Ультра популярен ESP8266, конечно. Почитайте, полистайте проекты. Я тоже его немножко "трогал". Кстати, теперь ему уже наследник вышел - ESP32, двух-контроллерное решение, и чего там только нет. Но они всё же вещи немножко специфические. Вот на двухдолларовый STM32 "BluePill" кому бы Пультоскоп перенести...  ;)

sirota
Offline
Зарегистрирован: 18.08.2015

Juris пишет:

Популярный ESP8266 не есть "Ардуино", конечно (он как бы в основном WiFi/serial/microcontroller), но его давно впихнули в среду Ардуиновскую, как и многое другое. Как и STM32, например. Ультра популярен ESP8266, конечно. Почитайте, полистайте проекты. Я тоже его немножко "трогал". Кстати, теперь ему уже наследник вышел - ESP32, двух-контроллерное решение, и чего там только нет. Но они всё же вещи немножко специфические. Вот на двухдолларовый STM32 "BluePill" кому бы Пультоскоп перенести...  ;)

Да он там чуть ли не компилится ) Eeprom нет и пары библи подобрать аналоги. Я 3 своих проекта перенес с меги на стм. Сейчас еще есть проектик, то нам без eeprom ни как. Вот думаю надо собраться с силами и флеш внешний замутить. Чтобы в случае чего быстрая замена.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Лекс 59, в нём АЦП хуже чем в меге. Сделан "что б было" :) Следующий качественный шаг развития - это ARM :) 

Electronik83
Offline
Зарегистрирован: 06.12.2015

Juris пишет:

Вот на двухдолларовый STM32 "BluePill" кому бы Пультоскоп перенести...  ;)


Есть в планах, но не скоро.

Juris
Juris аватар
Offline
Зарегистрирован: 28.10.2016

по поводу STM32, я там немножко на форуме "stm32duino" тоже тусую :) Конкретнее, по проектику "STM-O-Scope". Ну а само "stm32duino", это большая добавка к среде Arduino.
http://stm32duino.com/viewtopic.php?f=19&t=107&sid=32ff0391b537d5610efa1b386c33f28c&start=570

http://bildites.lv/a/684af4cb#4wns5ujq
 

Лекс 59
Лекс 59 аватар
Offline
Зарегистрирован: 02.04.2016

dimax пишет:

Лекс 59, в нём АЦП хуже чем в меге. Сделан "что б было" :) Следующий качественный шаг развития - это ARM :) 

Ясно. Спасибо. А то я уже слюнку пустил. Увы. И еще меня поразил параметр 4 мб. Но значит не судьба.

sirota
Offline
Зарегистрирован: 18.08.2015

Juris пишет:

по поводу STM32, я там немножко на форуме "stm32duino" тоже тусую :) Конкретнее, по проектику "STM-O-Scope". Ну а само "stm32duino", это большая добавка к среде Arduino.
http://stm32duino.com/viewtopic.php?f=19&t=107&sid=32ff0391b537d5610efa1b386c33f28c&start=570

http://bildites.lv/a/684af4cb#4wns5ujq
 

Я так понял там 2MHz прям реально именно форму сигнала смотреть по описанию, а не его присутствие? Выходит бодрее пультоскопа на меге? Или я опять не правильно прочитал?

Electronik83
Offline
Зарегистрирован: 06.12.2015

sirota пишет:

Я так понял там 2MHz прям реально именно форму сигнала смотреть по описанию, а не его присутствие? Выходит бодрее пультоскопа на меге? Или я опять не правильно прочитал?

Можно. 

20MSPS - самый быстрый режим.

https://geektimes.ru/post/278106/

sirota
Offline
Зарегистрирован: 18.08.2015

Electronik83 пишет:

sirota пишет:

Я так понял там 2MHz прям реально именно форму сигнала смотреть по описанию, а не его присутствие? Выходит бодрее пультоскопа на меге? Или я опять не правильно прочитал?

Можно. 

20MSPS - самый быстрый режим.

https://geektimes.ru/post/278106/

Ну получается это быстрее пультоскопа?

Electronik83
Offline
Зарегистрирован: 06.12.2015

sirota пишет:

Ну получается это быстрее пультоскопа?

Блин, я ошибся. Нету там 20MPSP, но 5 есть.

И два мегагерца не будет видно.

Но все равно быстрее, чем пультосокоп на ардуине.

Не знаю на каком дисплее делать стм32.... есть четыре варианта: 3310, 3410, ssd1306 и TFT 320x480..

Juris
Juris аватар
Offline
Зарегистрирован: 28.10.2016

TFT 320x480 - это паралельный, типа такой как в "GFXscope v3.0"?

https://www.youtube.com/watch?v=Y64b1HW8ISA&feature=youtu.be
http://bildites.lv/a/tavtcef8#hv2vjat4

я был бы "за" такое, но всегда будут наоборот, любители миниатюрности, и тогда на каком по меньше. По мне так приятнее экран по больше.
Но наверное главное, чтоб была та разно-функциональность, чем выгодно всегда выделялся "Пультоскоп". Проектов "чистых" осциков, можно сказать, хаватает. Но, с другой стороны - чем больше, тем интереснее :)  Об этом (количестве и разнородности) я сдесь:
http://stm32duino.com/viewtopic.php?f=45&t=1710

Nikolaj666
Nikolaj666 аватар
Offline
Зарегистрирован: 19.01.2017

Electronik83 пишет:

 

Не знаю на каком дисплее делать стм32.... есть четыре варианта: 3310, 3410, ssd1306 и TFT 320x480..

TFT круче всего

zz11ss
Offline
Зарегистрирован: 19.12.2016

Сделал вот такой себе приборчик на 1.8 дюймов и кварцем на 24 Мгц,сравнивал с DSO 150  - не уступает,а даже превосходит,хоть с искажением,но наличие,частоту и коэффициент заполнения меряет на 1 МГц,а DSO уже на 500 Кгц в небо,Спасибо!

sirota
Offline
Зарегистрирован: 18.08.2015

zz11ss пишет:

Сделал вот такой себе приборчик на 1.8 дюймов и кварцем на 24 Мгц,сравнивал с DSO 150  - не уступает,а даже превосходит,хоть с искажением,но наличие,частоту и коэффициент заполнения меряет на 1 МГц,а DSO уже на 500 Кгц в небо,Спасибо!

 

Я тоже сделал на 1.8. Даже корпус намоделил и распечатал, но разобрал. 1.8 ультрамелко для даже пультоскопа. Буду делать на 3.2'' на стм (из того что имеется). Потом стм разгоню. Отрицалово мне не упало, ибо все равно все что у меня есть - импульсники, а там только положительное напряжение. И то по факту и без осцила осиливаю, но так будет малость проще увидеть от куда паять, а не выпаивать "ключевые" элементы.

sirota
Offline
Зарегистрирован: 18.08.2015

Juris пишет:

TFT 320x480 - это паралельный, типа такой как в "GFXscope v3.0"?

https://www.youtube.com/watch?v=Y64b1HW8ISA&feature=youtu.be
http://bildites.lv/a/tavtcef8#hv2vjat4

я был бы "за" такое, но всегда будут наоборот, любители миниатюрности, и тогда на каком по меньше. По мне так приятнее экран по больше.
Но наверное главное, чтоб была та разно-функциональность, чем выгодно всегда выделялся "Пультоскоп". Проектов "чистых" осциков, можно сказать, хаватает. Но, с другой стороны - чем больше, тем интереснее :)  Об этом (количестве и разнородности) я сдесь:
http://stm32duino.com/viewtopic.php?f=45&t=1710

Он платный чисто за фирмварь + плата не совсем простая, я на нее компанентов и не наберу вот так вот с налета. Но он бодрый, соглашусь. Давно в закладках, даже 2 раза рука поднималась купить фирмварь и "железа" на него (все ни как не найду какой-то стоящий считай стартап копмлект smd мелочевки).

Juris
Juris аватар
Offline
Зарегистрирован: 28.10.2016

Ну, я просто спрашивал у Electronik83, такой ли дисплей обсуждаем сдесь, вот и привёл ссылки с картинками.

bpl
Offline
Зарегистрирован: 15.02.2016

Для меня тоже чем больше экран тем лучше, в общем  я тоже за « пультоскопище» хоть на Mega256 + TFT 3.2" 480*320 IC: ILI9341 или STM.

Конечно хотелось бы чтобы прибор был как можно более многофункциональным,  оставался простым по сборке и с открытым кодом.

На экранах 5110 и OLED 0.96" 128x64 SSD1306. I2C  уже собирал.

Спасибо автору пультоскопа и участникам форума.

 

Для информации:  Mega2560-CORE    ( STM32F4discovery  это если опять не хатит памяти)      Massduino UNO Core MD-328D Mini Module   

По поводу MD-328D хотел поинтересоваться это полный аналог  ATMega328P TQFP или нет, будет ли она лучше (если это полный аналог) и можно ли использовать для нее скетчи без правки например от пультоскопа.

Electronik83
Offline
Зарегистрирован: 06.12.2015

Сегодня начну значит...

Nikolaj666
Nikolaj666 аватар
Offline
Зарегистрирован: 19.01.2017

Electronik83 пишет:
Сегодня начну значит...

как раз луноликие мне экран отправили сегодня. 5 дней парили 

bester
Offline
Зарегистрирован: 25.06.2016

Не подскажете как шрифт исправить и что нужно закоментировать в скетче, чтоб включение происходило с помощью механического включателя?

sirota
Offline
Зарегистрирован: 18.08.2015

bester пишет:

Не подскажете как шрифт исправить и что нужно закоментировать в скетче, чтоб включение происходило с помощью механического включателя?

 

utf8rus

на питании на + или минусе в разрыв поставь вот и все проблемы.

bester
Offline
Зарегистрирован: 25.06.2016

Так он не включается, ждет пока кнопку нажму, а кнопки нет, просто ардуину запитываю через конвертор. Подскажите, как исправить шрифт? Фото выше.

sirota
Offline
Зарегистрирован: 18.08.2015

bester пишет:

Так он не включается, ждет пока кнопку нажму, а кнопки нет, просто ардуину запитываю через конвертор. Подскажите, как исправить шрифт? Фото выше.

По какой схеме собираешь? Что за код?

bester
Offline
Зарегистрирован: 25.06.2016

http://srukami.inf.ua/pultoscop_v25110.html

Собираю по этой схеме, прошивка в конце странице. С оригинальной прошивкой не запускается, т.к. в ней включение происходит с помощью кнопки, а она мне не нужна.

И еще не ясно, в схеме нариовано, что на 5 пин ардуино нужно подавать напряжение через резистор 10 ком с аккумулятора, для чего это нужно?

//Страница проэкта  http://srukami.inf.ua/pultoscop_v25110.html
// ---------------------------------------------------------------
// От Electronik83 (mailto: gsmkillersevsk@mail.ru):
// 1. Причесал код: немного оптимизировал, без ухода от алгоритмов автора
// 2. Вырезал кнопку питания - проще тумблер поставить (имхо).
// 3. Причесал код: поменял имена некоторых переменных и дефайнов
// 4. Поменял алгоритм работы кнопок - просто подключаем кнопки к земле и без всяких резисторов!
// 5. Изменил навигацию в главном меню (можно вниз и вверх ездить стало)
// 6. Слегка приукрасил менюху главную и DDS-генератора
// 7. DDS-генератор переключается (меняет форму сигнала) от любой кнопки теперь
// 8. В режиме генератора PWM в процентах в целых числах (без дробей), изменил полосочки
// 9. В генераторе пофиксил/оптимизировал вывод частоты (1000 герц не показывало)
// 10. В генераторе поменял отрисовку (отцентровал некоторые элементы)
// 11. В генераторе изменил задержку для дребезга и общую задержку - кнопки стали лучше реагировать
// 12. В генераторе стало точнее видно частоту (вместо трех разрядов - четыре)
// 13. Автоматическое определение схемы подключения кнопок (при включении лучше ничего не нажимать:) :
//      a). Как у автора - кнопки к питанию и резюки на массу
//      b). Как я хочу - кнопки к земле и без всяких резюков
// 14. Отправил вэйвы для DDS генератора во флэш - оперативы больше стало свободной 

#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
#include <FreqCount.h> 
#include <PWM.h>
#include <CyberLib.h>
#define led  9       // пин для генератора сигналов (не менять)
#define dds  10      // пин для генератора dds (не менять)
#define key_down 11  // кнопка минус (можно любой пин)
#define key_ok   12  // кнопка ОК (можно любой пин)
#define key_up   13  // кнопка плюс (можно любой пин)
#define akb A5       // любой свободный аналоговый пин для измерения напряжения АКБ 
#define overclock 16 // частота на которой работает Ардуино
#define contrast 52  // контрастность дисплея
                                //    int SCK, int MOSI, int DC, int RST, int CS
                                    // (clk(scl), din(sda), dc, ce, rst)       
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 4, 3, 2); // пины к которым у вас подключен дисплей        
byte SinU=30;  // уровень синхронизации 0 до 255 
int PWM = 50; // стартовое значение ШИМ от 0 до 100        
int32_t freq = 500; //стартовое значение частоты в Гц
float VCC=5.0;  //напряжение питания, меряем мультиметром
//###########################################################
int d=0;
const byte sinM[]     PROGMEM = {1,6,15,29,48,69,92,117,143,168,191,212,229,243,251,255,254,248,237,222,203,181,156,131,106,81,59,39,22,10,3,1};
const byte pilaM[]    PROGMEM = {1,9,17,25,33,41,49,57,65,73,81,89,97,105,113,121,129,137,145,153,161,169,177,185,193,201,209,217,225,235,245,255};
const byte RpilaM[]   PROGMEM = {250,246,238,230,222,214,206,198,190,182,174,166,158,150,142,134,126,118,110,102,94,86,78,70,62,54,41,33,25,17,9,1};
const byte trianglM[] PROGMEM = {1,18,35,52,69,86,103,120,137,154,171,188,205,222,239,255,239,223,207,191,175,159,143,127,111,95,79,63,47,31,15,1};
byte hag=0;
int stepFreq=0;
boolean flag=0;
byte mass[701];
byte x=0; 
byte ddsMenu=0; // меню dds-генератора 
byte oscMenu=0; // меню осциллоскопа 
bool opornoe=1; // флаг опорного напряжения
bool pause=0; // флаг режима паузы
byte mainMenu=0; // режим работы прибора 
byte razv=6;  
unsigned long count=0;
byte sinX=30; 
byte meaX=83;
int Vmax=0;// максимальное напряжение 
byte sinhMASS=0;
long countX=0;
long speedTTL=9600; // скорость терминала по умолчанию 
int  prokr=0;
bool flag_key; // нужно для разных подключений кнопок

void setup() {   
  byte key_test=0;
  // подтянули кнопки к питанию
  digitalWrite(key_up, HIGH); digitalWrite(key_down, HIGH); digitalWrite(key_ok, HIGH); 
  // автодетект подключения кнопок при включении..
  if (digitalRead(key_up))   key_test++; // если подтяжка к питанию осталась (не стоят резюки на массу) - плюсуем
  if (digitalRead(key_down)) key_test++; // если подтяжка к питанию осталась (не стоят резюки на массу) - плюсуем
  if (digitalRead(key_ok))   key_test++; // если подтяжка к питанию осталась (не стоят резюки на массу) - плюсуем
  if (key_test>1) { // определили подключение кнопок на массу
    flag_key=0;   
  }
  else { // определили подключение кнопок на питание + резюки на массу
    digitalWrite(key_up, LOW); digitalWrite(key_down, LOW); digitalWrite(key_ok, LOW); // убрали подтяжку 
    flag_key=1;
  }
  // если автодетект работает неверно (менюха скачет постоянно), то нужно расскомментировать одну из следующих строчек:
  // flag_key = 0; // кнопки просто подключены к земле, резюков нету.
  // flag_key = 1; // кнопки подключены к питанию и резюки на землю
  
  // работаем с дисплеем...     
  display.begin();
  display.setContrast(contrast);  
  while(flag_key-digitalRead(key_ok))  { // выводим меню, пока не выбран режим работы прибора  
    display.clearDisplay();
    if (mainMenu == 0)   display.setTextColor(WHITE, BLACK); else display.setTextColor(BLACK);
    display.setCursor(3 , 0); display.println(" Осциллоскоп ");
    if (mainMenu == 1)   display.setTextColor(WHITE, BLACK); else display.setTextColor(BLACK);
    display.setCursor(9 ,10); display.println(" Генератор ");
    if (mainMenu == 2) { display.setTextColor(WHITE, BLACK);
                         display.setCursor( 0, 20); display.println(" ");  // для красоты только 
                         display.setCursor(77, 20); display.println(" "); // для красоты только
    } else display.setTextColor(BLACK);
    display.setCursor(3 ,20); display.println("DDS-генератор");
    if (mainMenu == 3)   display.setTextColor(WHITE, BLACK); else display.setTextColor(BLACK);
    display.setCursor(12,30); display.println(" Терминал ");
    display.setTextColor(BLACK);
    display.setCursor(12,40); display.print("Vbat=");
    display.print(analogRead(akb)*VCC/1024);
    display.print("V");
    // перемещаемся по меню  
    if (flag_key-!digitalRead(key_up)  ) { mainMenu++; delay(100); }
    if (flag_key-!digitalRead(key_down)) { mainMenu--; delay(100); }
    if (mainMenu == 0xFF) mainMenu = 3;
    if (mainMenu>3) mainMenu=0;
    delay(50);  
    display.display(); // выводим все на экран
  }
  // выбран режим работы...
  if (mainMenu==0) FreqCount.begin(1000);
  if (mainMenu==1) { InitTimersSafe(); bool success = SetPinFrequencySafe(led, freq); }
  if (mainMenu==2) { InitTimersSafe(); bool success = SetPinFrequencySafe(led,200000);     }
  delay(200);
}

// читаем с АЦП данные и помещаем их в буфер...   
void ReadADC() {
  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) {
    for(int i=0; i<700; i++) { 
      while ((ADCSRA & 0x10)==0); // ждем готовность АЦП
      ADCSRA|=0x10;               // запускаем следующее преобразование
      delayMicroseconds(500);     // зачем то делаем задержку
      mass[i]=ADCH;               // записываем данные в массив
    }
  } else { // (razv>0)
    for(int i=0; i<700; i++) {    
      while ((ADCSRA & 0x10)==0); // ждем готовность АЦП
      ADCSRA|=0x10;               // запускаем следующее преобразование
      mass[i]=ADCH;               // записываем данные в массив
    }
  }
}

// безконечный цикл
void loop() {
  if(mainMenu==0) { // если режим осциллоскопа, то..  
    if(opornoe) ADMUX = 0b01100011; // выбор внешнего опорного
           else ADMUX = 0b11100011; // выбор внутреннего опорного 1,1В
    delay(5);
    if(pause==0) ReadADC();
    // определение точки синхронизации
    bool flagSINHRO=0;
    bool flagSINHRnull=0;
    for(int y=1; y<255 ;y++){
      if(flagSINHRO==0){if(mass[y]<SinU){flagSINHRnull=1;}}
      if(flagSINHRO==0){if(flagSINHRnull==1){if(mass[y]>SinU){flagSINHRO=1;sinhMASS=y;}}}}
    // считаем максимальное значение сигнала (для вывода на экран)
    Vmax=0; 
    for(int y=1; y<255; y++) if(Vmax<mass[y]) Vmax=mass[y];
    // отрисовка графика 
    display.clearDisplay();
    if(pause) { // если в режиме паузы, то рисуем с прокруткой...
      display.drawLine(prokr/8,8,prokr/8+6,8, BLACK); //шкала прокрутки
      display.drawLine(prokr/8,9,prokr/8+6,9, BLACK); //шкала прокрутки
      x=3;
      for(int y=prokr; y<prokr+80; y++) { // рисуем форму сигнала
        if(razv<7)  x++;
        if(razv==7) x+=2;
        if(razv==8) x+=3; 
        display.drawLine(x, 47-mass[y]/7, x+1, 47-mass[y+1]/7, BLACK);
        display.drawLine(x+1, 47-mass[y]/7+1, x+2, 47-mass[y+1]/7+1, BLACK); 
      }
    } else {  // если паузы нет, то рисуем немного по другому))..
      display.fillCircle(80,47-SinU/7, 2, BLACK); //рисуем уровень синхронизации    
      x=3;
      for(int y=sinhMASS; y<sinhMASS+80; y++) {  // рисуем форму сигнала
        if(razv<7)  x++; 
        if(razv==7) x+=2;
        if(razv==8) x+=3; 
        display.drawLine(x, 47-mass[y]/7, x+1, 47-mass[y+1]/7, BLACK);
        display.drawLine(x+1, 47-mass[y]/7+1, x+2, 47-mass[y+1]/7+1, BLACK);        
      }
      sinhMASS=0;
    }
    // отрисовка сетки
    for(byte i=47;i>5;i=i-7) { display.drawPixel(0, i, BLACK); display.drawPixel(1, i, BLACK); display.drawPixel(2, i, BLACK); }
    for(byte i=47;i>5;i=i-3) { display.drawPixel(21,i, BLACK); display.drawPixel(42,i, BLACK); display.drawPixel(63,i, BLACK); }
    for(byte i=3;i<84;i=i+3) { display.drawPixel(i,33, BLACK); display.drawPixel(i,19, BLACK); }
    // отрисовка menu
    display.setCursor(0,0);
    if(oscMenu==0) {
      display.setTextColor(WHITE,BLACK);
      if(opornoe) display.print(VCC,1); else display.print("1.1");
      display.setTextColor(BLACK); 
      display.print(" "); display.print(razv);
      display.print(" P");
      if(flag_key-!digitalRead(key_down) || flag_key-!digitalRead(key_up)) { opornoe=!opornoe; }
    }
    if(oscMenu==1) {
      if(opornoe) display.print(VCC,1); else display.print("1.1");
      display.setTextColor(WHITE, BLACK); 
      display.print(" "); display.print(razv);
      display.setTextColor(BLACK);
      display.print(" P");
      if(flag_key-!digitalRead(key_down)) { razv=razv-1; if(razv==255) razv=0; }
      if(flag_key-!digitalRead(key_up)  ) { razv=razv+1; if(razv==9)   razv=8; }
    }
    if(oscMenu==2) {
      if(opornoe) display.print(VCC,1); else display.print("1.1");
      display.print(" "); display.print(razv);
      display.setTextColor(WHITE, BLACK);
      display.print(" P");
      display.setTextColor(BLACK);
      pause=1;
      if(flag_key-!digitalRead(key_down)) { prokr=prokr-10; if(prokr<0)   prokr=0;   }
      if(flag_key-!digitalRead(key_up)  ) { prokr=prokr+10; if(prokr>620) prokr=620; }    
    }
    if(oscMenu==3) {
      prokr=0;
      pause=0;
      if(opornoe) display.print(VCC,1); else display.print("1.1");
      display.print(" "); display.print(razv);
      display.print(" P");
      if(flag_key-!digitalRead(key_down)) { SinU=SinU-20; if(SinU<20)  SinU=20;  }
      if(flag_key-!digitalRead(key_up)  ) { SinU=SinU+20; if(SinU>230) SinU=230; }   
      display.fillCircle(80,47-SinU/7, 5, BLACK);
      display.fillCircle(80,47-SinU/7, 2, WHITE); 
    }
    if (flag_key-!digitalRead(key_ok)) { oscMenu++; if(oscMenu==4) { oscMenu=0; pause=0; }}//перебор меню
    if (FreqCount.available()) count = FreqCount.read(); //вывод частоты по готовности счетчика
    
    // считаем частоту сигнала
    byte Frec1=0;
    long Frec=0;
    bool flagFrec1=0;
    bool flagFrec2=0;
    bool flagFrec3=0;
    for(int y=1; y<255; y++) {
      if(flagFrec1==0 && mass[y]<SinU) flagFrec2=1;
      if(flagFrec1==0 && flagFrec2==1 && mass[y]>SinU) { flagFrec1=1; Frec1=y; }
      if(flagFrec1==1 && mass[y]<SinU) flagFrec3=1;
      if(flagFrec3==1 && mass[y]>SinU) {
        if (razv>=6) Frec=1000000/((y-Frec1-1)*3.27);  //delitel 4
        if (razv==5) Frec=1000000/((y-Frec1)*3.27)/2;  //delitel 8
        if (razv==4) Frec=1000000/((y-Frec1)*3.27)/4;  //delitel 16
        if (razv==3) Frec=1000000/((y-Frec1)*3.27)/8;  //delitel 32
        if (razv==2) Frec=1000000/((y-Frec1)*3.27)/16; //delitel 64
        if (razv==2) Frec=1000000/((y-Frec1)*3.27)/32; //delitel 128
        if (razv==1) Frec=1000000/((y-Frec1)*3.27)/32; //delitel 128
        if (razv==0) Frec=1000000/((y-Frec1)*500);     //delitel 128
        flagFrec1=0; flagFrec3=0;
      }
    }
    // отрисовка частоты сигнала
    if(opornoe==1) {
      if((Vmax*VCC/255)>2.5) countX=count*(overclock/16.0); 
      if((Vmax*VCC/255)<2.5) countX=Frec*(overclock/16.0);
    } else countX=Frec*(overclock/16.0);
    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"); }
    // отрисовка максимального напряжения сигнала
    display.setCursor(0,40); 
    if(opornoe) display.print(Vmax*VCC/255,1); else display.print(Vmax*1.1/255,1);
    display.print("V");
    delay(200);  
    display.display(); // вываливаем все на экран
  }
  if(mainMenu==1) Generator();    // "выпадаем" в генератор 
  if(mainMenu==2) DDSGenerator(); // "выпадаем" в DDS генератор
  if(mainMenu==3) TTL();          // "выпадаем" в USART приемник
}

// РЕЖИМ ГЕНЕРАТОРА
void Generator() {
  display.clearDisplay();  
  if (flag==0) { //флаг выборов режима настройки ШИМ или Частоты
    if(flag_key-!digitalRead(key_down)){
      freq-=stepFreq;
      if(freq<0) freq=0; 
      bool success = SetPinFrequencySafe(led, freq);
      delay(100); // задержка от дребезга 
    }
    if(flag_key-!digitalRead(key_up)){
      freq+=stepFreq;
      bool success = SetPinFrequencySafe(led, freq);
      delay(100); // задержка от дребезга 
    }  
  }
  if (flag==1) { //флаг выборов режима настройки ШИМ или Частоты
    if(flag_key-!digitalRead(key_down)){
      PWM=PWM-1;
      if(PWM<0) PWM=100; 
      delay(100); // задержка от дребезга
    }
    if(flag_key-!digitalRead(key_up)){
      PWM=PWM+1;
      if(PWM>100) PWM=0; 
      delay(100);//защита от дребезга 
    }  
  }      
  if(flag_key-!digitalRead(key_ok)) {  //переключение разряда выбора частоты 
    delay(100);//защита от дребезга
    hag++;
    if(hag>=5) hag=0;
  } 
  // выводим уровень ШИМ
  display.setTextSize(1);
  display.setCursor(21,5);
  display.print("PWM=");
  display.print(PWM);
  display.print("%");
  // рисуем полосочки уровня ШИМ
  display.drawLine(41-(41*PWM/100.0),  0, 42+(41*PWM/100.0),  0, BLACK);
  display.drawLine(42-(41*PWM/100.0),  1, 41+(41*PWM/100.0),  1, BLACK);
  display.drawLine(43-(41*PWM/100.0),  2, 40+(41*PWM/100.0),  2, BLACK);
  display.drawLine(41-(41*PWM/100.0), 16, 42+(41*PWM/100.0), 16, BLACK);
  display.drawLine(42-(41*PWM/100.0), 15, 41+(41*PWM/100.0), 15, BLACK);
  display.drawLine(43-(41*PWM/100.0), 14, 40+(41*PWM/100.0), 14, BLACK);
  // готовимся для вывода частоты    
  display.setTextSize(2);
  long freqX=freq*(overclock/16.0);
  // рисуем частоту
  if(freqX<1000)  { 
    display.setCursor(18, 20); display.print(freqX); 
    display.setTextSize(1);    display.print("Hz"); 
  } else { 
  display.setCursor(4, 20);
  if(freqX<10000)   display.print(freqX/1000.0, 3);  else 
  if(freqX<100000)  display.print(freqX/1000.0, 2);  else
  if(freqX<1000000) display.print(freqX/1000.0, 1);  
  display.setTextSize(1); display.print("KHz"); }
  // выводим строку статуса (режима)
  display.setCursor(0,40);
  display.setTextSize(1);
  display.print(">>");
  display.setTextColor(WHITE, BLACK);
  display.print(" ");
  if(hag<4) display.print("x");    
  if(hag==0) { // выбор множителя частоты        
    display.print(1*(overclock/16.0),1); 
    stepFreq=1;
    flag=0;
  }
  if(hag==1){//выбор множителя частоты
    display.print(10*(overclock/16.0),0); 
    stepFreq=10;
  }
  if(hag==2){//выбор множителя частоты
    display.print(100*(overclock/16.0),0); 
    stepFreq=100;
  }
  if(hag==3){//выбор множителя частоты
    display.print(1000*(overclock/16.0),0); 
    stepFreq=1000;
  } 
  if(hag==4){//выбор  PWM
    display.print("PWM ");
    display.print(PWM);
    display.print("%"); 
    flag=1;
  } 
  display.print(" ");
  display.setTextColor(BLACK);
  display.print("<<");
  // выставили ШИМ
  pwmWrite(led, PWM*2.55);
  delay(100);
  display.display();
}

// Рисуем меню DDS-генератора
void DDSGeneratorMenu() { // я думаю, что эта функция не нужна, разберусь позже.... [Electronik83]
  display.clearDisplay(); 
  if (ddsMenu==0) display.setTextColor(WHITE, BLACK); else display.setTextColor(BLACK);
  display.setCursor(21, 0); display.println(" Синус ");
  if (ddsMenu==1) display.setTextColor(WHITE, BLACK); else display.setTextColor(BLACK);
  display.setCursor( 3,10); display.println(" Треугольник ");
  if (ddsMenu==2) display.setTextColor(WHITE, BLACK); else display.setTextColor(BLACK);
  display.setCursor(24,20); display.println(" Пила ");
  if (ddsMenu==3) display.setTextColor(WHITE, BLACK); else display.setTextColor(BLACK);
  display.setCursor(12,30); display.println(" АнтиПила ");
  display.setTextColor(BLACK);
  display.display();
}

// DDS генератор
void DDSGenerator(){
  if(ddsMenu==0) {
    DDSGeneratorMenu();    
    while(flag_key-digitalRead(key_up) && flag_key-digitalRead(key_down) && flag_key-digitalRead(key_ok)) {
      PWM=sinM[d];
      pwmWrite(dds,PWM);
      d++;
      if(d==32) d=0;
    }
    ddsMenu++;
    delay(200);
  }
  if(ddsMenu==1) {
    DDSGeneratorMenu();    
    while(flag_key-digitalRead(key_up) && flag_key-digitalRead(key_down) && flag_key-digitalRead(key_ok)) {
      PWM=trianglM[d];
      pwmWrite(dds,PWM);
      d++;
      if(d==32) d=0;
    }
    ddsMenu++;
    delay(200);
  }
  if(ddsMenu==2){
    DDSGeneratorMenu();    
    while(flag_key-digitalRead(key_up) && flag_key-digitalRead(key_down) && flag_key-digitalRead(key_ok)) {
      PWM=pilaM[d];
      pwmWrite(dds,PWM);
      d++;
      if(d==32) d=0; 
    }
    ddsMenu++;
    delay(200);
  }
  if(ddsMenu==3){
    DDSGeneratorMenu();    
    while(flag_key-digitalRead(key_up) && flag_key-digitalRead(key_down) && flag_key-digitalRead(key_ok)) {
      PWM = RpilaM[d];
      pwmWrite(dds,PWM);
      d++;
      if(d==32) d=0; 
    }
    ddsMenu=0;
    delay(200);
  }
}

// UART приемник
void TTL() {
  display.clearDisplay(); 
  display.setTextColor(WHITE, BLACK); 
  display.setCursor(0,0); display.println("   Терминал   ");
  display.setTextColor(BLACK);  
  display.setCursor(15,10); display.println("Скорость:");
  display.setTextColor(WHITE, BLACK); 
  display.setCursor(10,20); display.print("-");
  display.setTextColor(BLACK);
  display.println(" ");      
  display.print(speedTTL);
  display.println(" ");
  display.setTextColor(WHITE, BLACK);
  display.setCursor(69, 20);  display.println("+");
  display.setTextColor(BLACK);    
  display.setCursor(9,40); display.println("ОК - запуск");
  if(flag_key-!digitalRead(key_up))   speedTTL=speedTTL+100;
  if(flag_key-!digitalRead(key_down)) speedTTL=speedTTL-100;
  if(speedTTL<0) speedTTL=250000;
  if(speedTTL>250000) speedTTL=0;
  if(flag_key-!digitalRead(key_ok)) {
    Serial.begin(speedTTL*(16/overclock));
    display.clearDisplay(); 
    delay(100);  
    display.display();
    int x=0;
    int y=0; 
    while(1){ 
      char incomingBytes;  
      if (Serial.available() > 0) { // Если в буфере есть данные
        incomingBytes=Serial.read(); // Считывание байта в переменную incomeByte
        display.setCursor(x,y);
        display.print(incomingBytes); // Печать строки в буффер дисплея
        display.display(); x=x+6;
        if(x==84){x=0;y=y+8;}
        if(y==48) {
          x=0;y=0;
          display.clearDisplay(); 
          delay(100);  
          display.display();
        }
      }         
    }
  } 
  delay(100);  
  display.display();  
}

 

Electronik83
Offline
Зарегистрирован: 06.12.2015

bester пишет:

http://srukami.inf.ua/pultoscop_v25110.html

Собираю по этой схеме, прошивка в конце странице. С оригинальной прошивкой не запускается, т.к. в ней включение происходит с помощью кнопки, а она мне не нужна.

И еще не ясно, в схеме нариовано, что на 5 пин ардуино нужно подавать напряжение через резистор 10 ком с аккумулятора, для чего это нужно?

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

bester
Offline
Зарегистрирован: 25.06.2016

Выше прошивка с фонариком, а мне фонарик не нужен. Вы имеете ввиду с этого сайта http://srukami.inf.ua/pultoscop_v25110.html   ?

Вот там выше , на картинке показано, что прошивка с фонариком

Electronik83
Offline
Зарегистрирован: 06.12.2015

Да.
Странно только. Много народу повторило конструкцию на моем скейтче с пол пинка.

bester
Offline
Зарегистрирован: 25.06.2016

Версия Пультоскопа с фонариком от lexdi не запускается (только подсветка включается), хоть и поменял в скетче частоту на 16мгц, т.к. такой кварц стоит

Electronik83
Offline
Зарегистрирован: 06.12.2015

Скачайте Ардиуно IDE. Из нее залейте мой скейтч.

bester
Offline
Зарегистрирован: 25.06.2016

В скачанной IDE не компилируется, жалуется на это  #include <SPI.h>











Используем библиотеку Adafruit_GFX_Library в папке: C:\Users\Boss\Desktop\arduino-1.6.5-r5\libraries\Adafruit_GFX_Library (legacy)
Используем библиотеку Adafruit PCD8544 Nokia 5110 LCD library в папке: C:\Users\Boss\Documents\Arduino\libraries\Adafruit_PCD8544_Nokia_5110_LCD_library 
Используем библиотеку FreqCount в папке: C:\Users\Boss\Desktop\arduino-1.6.5-r5\libraries\FreqCount (legacy)
Используем библиотеку PWM в папке: C:\Users\Boss\Desktop\arduino-1.6.5-r5\libraries\PWM (legacy)
Используем библиотеку CyberLib в папке: C:\Users\Boss\Desktop\arduino-1.6.5-r5\libraries\CyberLib (legacy)

C:\Users\Boss\Desktop\arduino-1.6.5-r5\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR -IC:\Users\Boss\Desktop\arduino-1.6.5-r5\hardware\arduino\avr\cores\arduino -IC:\Users\Boss\Desktop\arduino-1.6.5-r5\hardware\arduino\avr\variants\eightanaloginputs -IC:\Users\Boss\Desktop\arduino-1.6.5-r5\libraries\Adafruit_GFX_Library -IC:\Users\Boss\Documents\Arduino\libraries\Adafruit_PCD8544_Nokia_5110_LCD_library -IC:\Users\Boss\Desktop\arduino-1.6.5-r5\libraries\FreqCount -IC:\Users\Boss\Desktop\arduino-1.6.5-r5\libraries\PWM -IC:\Users\Boss\Desktop\arduino-1.6.5-r5\libraries\CyberLib C:\Users\Boss\AppData\Local\Temp\build3159739859159117905.tmp\PULTOSCOPE_LCD5110_final2_DDS_Z.cpp -o C:\Users\Boss\AppData\Local\Temp\build3159739859159117905.tmp\PULTOSCOPE_LCD5110_final2_DDS_Z.cpp.o 
C:\Users\Boss\Desktop\arduino-1.6.5-r5\hardware\tools\avr/bin/avr-gcc -c -g -Os -w -ffunction-sections -fdata-sections -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR -IC:\Users\Boss\Desktop\arduino-1.6.5-r5\hardware\arduino\avr\cores\arduino -IC:\Users\Boss\Desktop\arduino-1.6.5-r5\hardware\arduino\avr\variants\eightanaloginputs -IC:\Users\Boss\Desktop\arduino-1.6.5-r5\libraries\Adafruit_GFX_Library -IC:\Users\Boss\Documents\Arduino\libraries\Adafruit_PCD8544_Nokia_5110_LCD_library -IC:\Users\Boss\Desktop\arduino-1.6.5-r5\libraries\FreqCount -IC:\Users\Boss\Desktop\arduino-1.6.5-r5\libraries\PWM -IC:\Users\Boss\Desktop\arduino-1.6.5-r5\libraries\CyberLib -IC:\Users\Boss\Desktop\arduino-1.6.5-r5\libraries\Adafruit_GFX_Library\utility C:\Users\Boss\Desktop\arduino-1.6.5-r5\libraries\Adafruit_GFX_Library\glcdfont.c -o C:\Users\Boss\AppData\Local\Temp\build3159739859159117905.tmp\Adafruit_GFX_Library\glcdfont.c.o 
C:\Users\Boss\Desktop\arduino-1.6.5-r5\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR -IC:\Users\Boss\Desktop\arduino-1.6.5-r5\hardware\arduino\avr\cores\arduino -IC:\Users\Boss\Desktop\arduino-1.6.5-r5\hardware\arduino\avr\variants\eightanaloginputs -IC:\Users\Boss\Desktop\arduino-1.6.5-r5\libraries\Adafruit_GFX_Library -IC:\Users\Boss\Documents\Arduino\libraries\Adafruit_PCD8544_Nokia_5110_LCD_library -IC:\Users\Boss\Desktop\arduino-1.6.5-r5\libraries\FreqCount -IC:\Users\Boss\Desktop\arduino-1.6.5-r5\libraries\PWM -IC:\Users\Boss\Desktop\arduino-1.6.5-r5\libraries\CyberLib -IC:\Users\Boss\Desktop\arduino-1.6.5-r5\libraries\Adafruit_GFX_Library\utility C:\Users\Boss\Desktop\arduino-1.6.5-r5\libraries\Adafruit_GFX_Library\Adafruit_GFX.cpp -o C:\Users\Boss\AppData\Local\Temp\build3159739859159117905.tmp\Adafruit_GFX_Library\Adafruit_GFX.cpp.o 
C:\Users\Boss\Desktop\arduino-1.6.5-r5\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR -IC:\Users\Boss\Desktop\arduino-1.6.5-r5\hardware\arduino\avr\cores\arduino -IC:\Users\Boss\Desktop\arduino-1.6.5-r5\hardware\arduino\avr\variants\eightanaloginputs -IC:\Users\Boss\Desktop\arduino-1.6.5-r5\libraries\Adafruit_GFX_Library -IC:\Users\Boss\Documents\Arduino\libraries\Adafruit_PCD8544_Nokia_5110_LCD_library -IC:\Users\Boss\Desktop\arduino-1.6.5-r5\libraries\FreqCount -IC:\Users\Boss\Desktop\arduino-1.6.5-r5\libraries\PWM -IC:\Users\Boss\Desktop\arduino-1.6.5-r5\libraries\CyberLib -IC:\Users\Boss\Desktop\arduino-1.6.5-r5\libraries\Adafruit_GFX_Library\utility C:\Users\Boss\Desktop\arduino-1.6.5-r5\libraries\Adafruit_GFX_Library\Adafruit_PCD8544.cpp -o C:\Users\Boss\AppData\Local\Temp\build3159739859159117905.tmp\Adafruit_GFX_Library\Adafruit_PCD8544.cpp.o 
C:\Users\Boss\Desktop\arduino-1.6.5-r5\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR -IC:\Users\Boss\Desktop\arduino-1.6.5-r5\hardware\arduino\avr\cores\arduino -IC:\Users\Boss\Desktop\arduino-1.6.5-r5\hardware\arduino\avr\variants\eightanaloginputs -IC:\Users\Boss\Desktop\arduino-1.6.5-r5\libraries\Adafruit_GFX_Library -IC:\Users\Boss\Documents\Arduino\libraries\Adafruit_PCD8544_Nokia_5110_LCD_library -IC:\Users\Boss\Desktop\arduino-1.6.5-r5\libraries\FreqCount -IC:\Users\Boss\Desktop\arduino-1.6.5-r5\libraries\PWM -IC:\Users\Boss\Desktop\arduino-1.6.5-r5\libraries\CyberLib -IC:\Users\Boss\Documents\Arduino\libraries\Adafruit_PCD8544_Nokia_5110_LCD_library\utility C:\Users\Boss\Documents\Arduino\libraries\Adafruit_PCD8544_Nokia_5110_LCD_library\Adafruit_PCD8544.cpp -o C:\Users\Boss\AppData\Local\Temp\build3159739859159117905.tmp\Adafruit PCD8544 Nokia 5110 LCD library\Adafruit_PCD8544.cpp.o 
In file included from C:\Users\Boss\Documents\Arduino\libraries\Adafruit_PCD8544_Nokia_5110_LCD_library\Adafruit_PCD8544.cpp:38:0:
C:\Users\Boss\Documents\Arduino\libraries\Adafruit_PCD8544_Nokia_5110_LCD_library\Adafruit_PCD8544.h:28:17: fatal error: SPI.h: No such file or directory
 #include <SPI.h>
                 ^
compilation terminated.
Multiple libraries were found for "Adafruit_GFX.h"
 Used: C:\Users\Boss\Desktop\arduino-1.6.5-r5\libraries\Adafruit_GFX_Library
 Not used: C:\Users\Boss\Desktop\arduino-1.6.5-r5\libraries\Adafruit-GFX-Library-master
Multiple libraries were found for "Adafruit_PCD8544.h"
 Used: C:\Users\Boss\Documents\Arduino\libraries\Adafruit_PCD8544_Nokia_5110_LCD_library
 Not used: C:\Users\Boss\Desktop\arduino-1.6.5-r5\libraries\Adafruit_GFX_Library
Ошибка компиляции.




 

Electronik83
Offline
Зарегистрирован: 06.12.2015

Архив с прошивкой распакуйте нормально. Не надо их архиватора запускать. И попробуте имеено мой скейтч с el_ed на конце в названии.

bester
Offline
Зарегистрирован: 25.06.2016

Получилось загрузить только версией arduino-1.8.1 , но шрифт как и раньше на фото выше. Да, ее я изагрузил сейчас и загружал ранее но только версией arduino-1.8.1, скачанной версией не загружается, сейчас скрин скину, что пишет в скачанной. Нажимаю на ресет- загрузка не происходит.

Electronik83
Offline
Зарегистрирован: 06.12.2015
bester
Offline
Зарегистрирован: 25.06.2016

На нехватку места что ли жалуется? Я не понял.

Electronik83
Offline
Зарегистрирован: 06.12.2015

Да про нехватку оперативы пишет. Это похрен. Так и должно быть. Заливай.

bester
Offline
Зарегистрирован: 25.06.2016

Скачанной версией не заливается, а версией arduino-1.8.1 сейчас залито. Шрифт не правильный в меню.

Electronik83
Offline
Зарегистрирован: 06.12.2015

Может неправильно плату выбираешь?
Может дисплей неисправен?

bester
Offline
Зарегистрирован: 25.06.2016

Все получилось, комп перезагрузил. Шрифт русский, спасибо вам большое. При загрузке arduino-1.8.1 показывал каракули? Сейчас снова загрузил версией arduino-1.8.1 и снова получил каракули. Скачанной версией снова все исправилось. Заменил библиотеки все и arduino-1.8.1 стала правильный шрифт загружать.

Синус, треугольник, пила, антипила не включаются

Electronik83
Offline
Зарегистрирован: 06.12.2015

Ваще странный глюк.
Все включается. Форма сигнала на выходе меняется просто при наведении курсора на надпись.
P.s. Хоть faq создавай - вопросы одни и теже.

Electronik83
Offline
Зарегистрирован: 06.12.2015

Electronik83 пишет:
Сегодня начну значит...

Вот, начал... 

Juris
Juris аватар
Offline
Зарегистрирован: 28.10.2016

Electronik83 пишет:
Вот, начал... 

О! Полагаю - хорошее начало!  :-)

EDIT: Можно пожалуйста Вас попросить, сделать более менее снимки этого 3.2" экранчика, с обеих сторон? Чтоб точно заполучить такой же. Спасибо!

kvadro8
Offline
Зарегистрирован: 17.02.2017

karl2233 пишет:

bodriy2014 пишет:

---О моем экранчике все сказанно в скетче, TFT 2.4дюйма контроллер SPFD5408 более подробно не скажешь.

В принципе могу сделать на любом экране хоть на ламповом телевизоре!) но только если он у меня есть чтоб  сразу отлаживать.

--Экранчиков от 5110 у меня много, и для народа он доступен в выковыривании)) и покупке.

Выпущу прошивку и под него, но после этой.

ясно, буду ждать реализации на 5110 :)

Привет, просмотрел практически всю ветку. Реализация прекрасная, но вот дисплеи то все стандартные.

А как на счёт нестандартных контроллеров и LCD? Я к чему, у народа скопилось куча разных девайсов с дисплеями, а сдесь явная нехватка ( покупки в китае ) бросовых по сути дисплеев. Пример, есть дисплей названия нет, но есть контроллер и его pdf с рспиновкой, можно по распиновке его подключить к вашему пректу на ардуино или smt32 или под другой ардуино посолидней тип mega.

И второе, есть желание собрать действительно универсальный прибор СУПЕР ПУЛЬТОСКОП на бюджетной основе включающий в себя ECR метр ,Транзистор тестер, Осцилограф и Частотомер. Возможна такая реализация в вашем проекте?

 

sirota
Offline
Зарегистрирован: 18.08.2015

kvadro8 пишет:

Привет, просмотрел практически всю ветку. Реализация прекрасная, но вот дисплеи то все стандартные.

А как на счёт нестандартных контроллеров и LCD? Я к чему, у народа скопилось куча разных девайсов с дисплеями, а сдесь явная нехватка ( покупки в китае ) бросовых по сути дисплеев. Пример, есть дисплей названия нет, но есть контроллер и его pdf с рспиновкой, можно по распиновке его подключить к вашему пректу на ардуино или smt32 или под другой ардуино посолидней тип mega.

И второе, есть желание собрать действительно универсальный прибор СУПЕР ПУЛЬТОСКОП на бюджетной основе включающий в себя ECR метр ,Транзистор тестер, Осцилограф и Частотомер. Возможна такая реализация в вашем проекте?

 

Начнем с того что не все йогурты одинакого полезны. По сему... Вот к примеру на апельсине я могу один дисплей завести или только видео или только сенсор, а его же на малине и то и то. По сути у дисплеев будет меняться "драйвер" и вывод на него. Но не принципиально. Плюс опять же разрешение - масштабируемость? А так задача вполне реальная, вперет и с песней. Ни кто не запрещает. Как вариант к примеру сделать общие функции вывода и потом уже в одном месте их переопределять, это не проблема.

Не поместишься. Места мало.