В первой публикации я описывал эмуляцию на Ардуино и маленьком дисплее работы пальчиковой индикаторной лампы 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);
}
Устройство собрано на перфорированой плате, монтаж проводной. Вот несколько снимков иллюстрирующих сборку:
монтаж проводами:
устройство в сборе:
короткое видео работы:
Комментарии (6)
andrey_ssh
29.03.2022 09:54+2Выглядит совсем не лампово. Предыдущий вариант намного лучше.
Ну и непонятно в чём смысл круглого дисплея, если под ним почти квадратная плата.
PwrUsr
31.03.2022 22:02Эх... объема не хватате этой эмуляции... помню в детстве перед сном то-ли на Регонде то ли еще что-то в этом роде, слушал радио и смотрел в этот глаз, почище Сауроновского было !
diakin
Где-то на антресолях лежит Комета МГ-201. Наверное пассики уже в труху. )
beduin747
Это в советские времена пассики иногда сложно было добыть. Сейчас проще. Ну и в комете двигатель, почти как от стиральной машины - пассики можно из чего-то вырезать. Правда детонация увеличится, и, возможно, скорость поплывёт. =)