To jest stara wersja strony!
Konwerter obrazu na sygnał/rysowanie na oscyloskopie
Zamieszany | hamsterking |
---|---|
Rozpoczęto | 2020-10-24 |
Status | |
Tagi |
Skąd pomysł ?
Swojego czasu ktoś zarzucił pomysł narysowania logo HSP na oscyloskopie. Zaciekawił mnie na tyle temat, aby odkurzyć stare Arduino oraz ruszyć zapomnianego Pythona.
Ogólny zamysł oraz zasady
(Przykładowy opis w: [1])
Oscyloskop korzystając z dwóch kanałów oraz trybu rysowania w osi X oraz Y poszczególnych kanałach jest w stanie wygenerować obraz z sygnałów.
Jednak mikrokontrolery z zasady nie posiadają konwerterów cyfrowych na analogowe (DAC), więc najłatwiejszym sposobem jest
wykorzystanie sygnału PWM, który ładuje kondensatory.
Przydatne narzędzia
- https://www.wave-editor.com/ - podgląd przebiegów plików z rozszerzeniem .wav
- https://asdfg.me/osci/ - emulator oscyloskopu
- https://www.svgviewer.dev/ - podgląd plików SVG
Biblografia
[1] https://www.youtube.com/watch?v=nlCADL5_g-I
[2] https://physics.stackexchange.com/questions/160048/how-to-draw-waves-in-x-and-y-position-like-this-oscilloscope-example
[3]https://github.com/WarrenWeckesser/wavio/blob/master/wavio.py
[4]https://www.youtube.com/watch?v=MS931nlxB8Y
[5]https://music.stackexchange.com/questions/74555/how-to-generate-the-tone-of-a-specific-waveform
[6]https://www.w3.org/TR/SVG/implnote.html#ArcImplementationNotes
[7]https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/d#Path_commands
[8]https://observablehq.com/@toja/ellipse-and-elliptical-arc-conversion
WORKLOG
- 25.10.2020
Po długiej walce z Pythonem oraz biblioteką wavio
udało się wygenerować plik wav, który ma dwa kanały i można rysować już pierwsze kształty - koło, jako złożenie sinusa i cosinusa.
- 26.10.2020
Udało się stworzyć asynchroniczny przebieg trójkątny z użyciem numpy.concatenate
, jednak przebieg jest teraz za wolny, aby narysować statyczny obraz.
- 22.11.2020
Po miesiącu walki z SVG oraz PWMem (gdzie zamiast robić waveshaping z sygnału trójkątnego jest robiony DAC) udało stworzyć się stworzyć program, który tworzy plik .wav oraz łuk eliptyczny parametryzowany z użyciem końcowego punktu.
[Update z końca dnia]: <płacze w środku> - okazuje się, że dla SVG, oś Y rośnie w dół :) To, że wychodzą mi teraz dobre łuki, jest tylko efektem mojego kodu do kreowania punktów, a nie faktycznie poprawnie działający interpreter. Odkryłem to, gdy zauważyłem, że wg. standardu SVG, gdy dla linii podaje co raz wyższą wartość Y, to ta spada jeszcze bardziej.