«Магический глаз» тёплых ламповых времён — эмуляция на ардуино. Часть 2

от автора

часть 1

В первой публикации я описывал эмуляцию на Ардуино и маленьком дисплее работы пальчиковой индикаторной лампы 6E1П. Люди постарше помнят эти красивые зелёные огоньки в ламповой технике — магнитофонах, усилителях, радиолах, радоприемниках.

Предшественником индикатора 6Е1П была октальная лампа 6Е5С. Это копия американской лампы 6E1 фирмы RCA разработки 30-х г одов.

Единственное советское устройство, которое я застал, имевшее этот индикатор — это неубиваемый железобетонный магнитофон «Комета-201»:

Еще эти индикаторы устанавливались в ламповых радиоприемниках и радиолах, которые во множестве выпускались в СССР. Давно это было.

В предыдущей статье я неосторожно пообещал выполнить эмуляцию 6E5С. Выполняю это обещание.

На самом деле поводом к работе послужило появление очень симатишного круглого LCD -дисплея GC9A01 работающего по SPI протоколу. Круглая форма прекрасно подходит для построения изображения индикаторной лампы, правда, размер этого дисплея значительно больше чем экран лампы.Ну, что поделать.

Чтобы добиться хорошего быстродействия я использовал контроллер ESP32:

Графика создана с помощью библиотеки Arduino_GFX . Для бОльшей плавности изображения использовалось скользящее усреднение входного сигнала по 20 выбркам с помощью библиотеки RunningAverage. Звукой входной сигнал подавался, как и в предыдущей статье, от микрофонного усилителя Max9814.

Вот упрощенная схема соединения деталей:

С программной точки зрения эта эмуляция гораздо проще чем предыдущая, изображение строится из единственного динамического элемента (треугольника с вершиной в центре экрана), двух статичных узких треугольников расположеных горизонтально по бокам от центра, и трёх почти перекрывающихся кругов в центре, один центральный серый, изображающий ширму экрана, и два других — белый чуть смещенный влево-вверх и черный, смещенный на несколько пикселей вправо-вниз, это моя попытка придать ширме слегка «объемный» вид. Не уверен, что удачная. Выглядит вот так:

Код ардуино-программы:

/************************************************************ * WHAT: Magic eye emulator FPS * GC9A01 * library Arduino_GFX * DETAILS:   * ESP32 with milrophone on pin 34 * rotated 180 degree * DC - 27, CS  - 5, RS - 33, indexed canvas  */ /************************************************************/ #include <Arduino_GFX_Library.h> #include "RunningAverage.h" #define TFT_RST 33  Arduino_DataBus *bus = new Arduino_ESP32SPI(27 /* DC */, 5 /* CS */, 18 /* SCK */, 23 /* MOSI */, -1 /* MISO */, HSPI /* spi_num */); Arduino_G *output_display = new Arduino_GC9A01(bus, TFT_RST, 2 /* rotation */, true /* IPS */); Arduino_GFX *gfx = new Arduino_Canvas(240 /* width */, 240 /* height */, output_display); RunningAverage myRA(20);   uint16_t r,r0; //uint16_t d=0; //uint16_t counter=0; uint16_t v_inVal; uint16_t i; float p,p_avg;  void setup() {     Serial.begin(115200);     while (!Serial)         Serial.print("Sketch:   ");   Serial.println(__FILE__);     Serial.print("Uploaded: ");   Serial.println(__DATE__);     gfx->begin(80000000);     r = gfx->width();     r0=r/2;     analogSetAttenuation(ADC_6db);       myRA.clear();        }  void drawE5(uint16_t v_i){   gfx->fillScreen(gfx->color565(37,234,61));   gfx->fillTriangle(r0,r0+10, r0-v_i,r,r0+v_i,r,gfx->color565(28,152,53));    gfx->fillTriangle(0,r0, r0,r0-8,r0,r0+8,gfx->color565(20,140,40));       gfx->fillTriangle(r,r0, r0,r0-8,r0,r0+8,gfx->color565(20,140,40));   gfx->fillCircle(r0+2,r0+2, 52, gfx->color565(40,40,40));     gfx->fillCircle(r0-3,r0-2, 52, gfx->color565(150,162,160));     gfx->fillCircle(r0,r0, 52, gfx->color565(71,76,69));   gfx->flush();             }   void loop() {   p=analogRead(34);   myRA.addValue(p);   p_avg=myRA.getAverage();   i=map(p_avg,50,1000,120,20);  // i=map(p_avg,50,1200,20,200);   if (i<0) i=0;   drawE5(i); }  

Устройство собрано на перфорированой плате, монтаж проводной. Вот несколько снимков иллюстрирующих сборку:

монтаж проводами:

устройство в сборе:

короткое видео работы:


ссылка на оригинал статьи https://habr.com/ru/post/657883/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *