
Tematem dzisiejszego artykułu jest -przejęcie kontroli na światem! Ha, Ha, Ha -to miał być złowieszczy śmiech

A dokładnie to tylko nad wyświetlaczem VFD, który jest integralną częścią amplitunera SONY STR-DB840QS. Sprzęt leciwy, ale jeszcze daje radę

Po wielu próbach podejścia do tematu wreszcie udało mi się znaleźć trochę czasu i przygotować się do 'operacji' -już na poważnie w ruch poszedł śrubokręt i inne narzędzia tortur. Przydał się, leżący bezużytecznie od długiego czasu, najtańszy z możliwych, analizator stanów logicznych -dla hobbysty-amatora wystarcza, a do wizualizacji wyników jego pracy skorzystałem z darmowego oprogramowania PulseView.
Analizator logiczny -zabawka:

Pierwsze próby to było sprawdzenie co dzieje się na liniach między sterownikiem VFD ML9261 a układem go nadzorującym. Komunikacja odbywa się przez cztery linie FL1 [CLEAR], FL2 [DATA], FL3 [CLK] i FL4 [LATCH] w trybie SPI 3 -czyli linia CLK w stanie idle ma poziom wysoki. Wyniki pierwszych odczytów i fragment kodu obrazują poniższe zdjęcia.
// inslude the SPI library:
#include <SPI.h>
const int CLEAR = 9;
const int LATCH = 10;
void setup() {
// set the LATCH & CLEAR as an output:
pinMode(CLEAR, OUTPUT);
pinMode(LATCH, OUTPUT);
// initialize SPI:
SPI.beginTransaction(SPISettings(2000000, MSBFIRST, SPI_MODE3));
SPI.begin();
}
Schemat & PCB:

Wykresy czasowe przebiegów:

Nadawane jest 8 bajtów po 8 bitów. Formatowanie danych znaku oraz miejsca jego wyświetlenia na powierzchni wyświetlacza ogranicza się do zachowania organizacji bitów jak w przykładzie:
00000AAA|AABBBBBC|CCCCDDDD|DEEEEEFF|FFFGGGGG|XXXXXXXX|YYYYYYYY|ZZZ00000.
Aby panować nad tym jaki znaki ze standardowej tablicy ASCII chcemy wyświetlić, należało przygotować narzędzia ułatwiające pracę. W tym celu posłużyłem się programem MS Excel -podobny efekt można uzyskać korzystając z innych aplikacji, np.: Calc z pakietu LibreOffice. Na zdjęciach przedstawiłem moja wizję jak usprawnić swoją pracę ze żmudnym przeliczaniem wartości bit po bicie, byte za byte-m.
Matryca wyświetlacza:

DIN -organizacja bajtów /bitów dla jednego znaku:

Demonstracja napisu generowanego przez amplituner:

Wizualizacja komunikacji części napisu '2CH STEREO'

Po kilkudziesięciu minutach można już było zacząć 'skrobać' pierwsze szkice programu w środowisku Arduino -wiem, że jest to wielką hańbą przyznawanie się do takiego zachowania

ArduinoNano + CD4066

Wartości składające się na przykładowy znak 'A' nadawany przez SPI:
0b00000100 0b01100011 0b11111000 0b11000110 0b00101110 -> 0x04 0x63 0xF8 0xC6 0x2E
Kolejne 3 bajty wskazują segment/siatkę na wyświetlaczu. Formatowanie pozycji sprowadza się do ustawienia bitu w stan wysoki na pozycji która nas interesuje. Część DOT-MATRIX wyświetlacza to zakres między G2 a G19 bitem, G1 odpowiada za stałe napisy i ikony na VFD.
Adres pierwszego znaku części DOT-MATRIX 0b01000000 0b00000000 0b00000000 -> 0x40 0x00 0x00
Adres ostatniego znaku części DOT-MATRIX 0b00000000 0b00000000 0b00100000 -> 0x00 0x00 0x20
Prezentacja dostępnych znaków i ikon na VFD:

Wyniki tych wszystkich zabaw niech zobrazują zdjęcia uzyskanego efektu.
Napis statyczny: ProTek (c) 2021

Napis statyczny: elektroda.pl

Do zrobienia zostało:
1. przepisanie kodu na avr-gcc w AS7
2. wyświetlanie znaku co 500us wyzwalane przerwaniem o takim okresie
3. dodanie obsługi UART do przesyłania tekstu
4. obsługa zdarzeń od Timer0 i UART
5. pobieranie wartości znaku oraz pozycji na wyświetlaczu z tablic zapisanych w pamięci flash
6. przewijanie tekstu dłuższego niż wielkość wyświetlacza -max 256 znaków
7. dodanie Raspberry Pi Zero W jako urządzenie wewnętrzne, odpowiadające za streaming i przygotowanie tekstu do wyświetlenia
Za kilka dni wyjeżdżam i będę miał ograniczony -czyli żaden -dostęp do amplitunera, ale jest szansa, na rozpoczęcie pracy nad rozwojem kodu oraz może ogarnięcie projektu PCB aby całość po powrocie poskładać i zakończyć projekt sukcesem. Mam nadzieję, że temat się Wam spodobał -choć części z Was i liczę na Wasze opinie/uwagi, a temat będzie inspiracją do podjęcia prób modyfikacji innych amplitunerów -tylko pamiętajcie: jak ja nie jestem czegoś pewien, to nie ruszam, bo mogę zepsuć a tego bym nie chciał. Więc sprawdzam wszystko pięć razy, mierzę, sprawdzam, przyglądam się czy na pewno jest/będzie ok, sprawdzam jeszcze raz i dopiero włączam zasilanie

Cool? Ranking DIY