Różnice
Różnice między wybraną wersją a wersją aktualną.
Poprzednia rewizja po obu stronach Poprzednia wersja Nowa wersja | Poprzednia wersja | ||
konwerter_svg_oscyloskop [2020/10/25 19:53] hamsterking [Biblografia] |
konwerter_svg_oscyloskop [2020/12/06 23:10] (aktualna) hamsterking [Przydatne narzędzia] |
||
---|---|---|---|
Linia 1: | Linia 1: | ||
- | ==== Konwerter obrazu na sinusa/rysowanie na oscyloskopie ==== | + | ==== Konwerter obrazu na sygnał/rysowanie na oscyloskopie ==== |
^Zamieszany|[[user>hamsterking]] | | ^Zamieszany|[[user>hamsterking]] | | ||
^Rozpoczęto | 2020-10-24 | | ^Rozpoczęto | 2020-10-24 | | ||
Linia 9: | Linia 9: | ||
(Przykładowy opis w: [1])\\ | (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. \\ | 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. | + | 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 linki z programami==== | ||
+ | - 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 | ||
+ | - https://github.com/hamsterking123/svg_to_pwm/tree/master - repo z aktualnym kodem | ||
==== Biblografia ==== | ==== Biblografia ==== | ||
[1] https://www.youtube.com/watch?v=nlCADL5_g-I \\ | [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\\ | [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 | + | [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\\ | ||
+ | [9]https://www.johndcook.com/blog/2009/12/21/bezier-basics/ \\ | ||
+ | [10]https://www.geeksforgeeks.org/cubic-bezier-curve-implementation-in-c/ \\ | ||
+ | [11]https://www.mathsisfun.com/algebra/vectors-dot-product.html \\ | ||
+ | ==== 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. | ||
+ | {{ projekty:kolo_oscyloskop.png |}} | ||
+ | * 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. | ||
+ | {{ projekty:ellipse_arc_svg.png |}}\\ | ||
+ | [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. Planuje jakoś dokonać rzutowania punktów z osi dodatnią na ujemną. | ||
+ | * 06.12.2020\\ | ||
+ | Problem z osiami został rozwiązany. Okazało się, że program źle liczył kąty (zły znak) oraz później z tego powodu, była źle liczona krzywa (nie był uwzględniany znaku wartości kąta theta). Dodatkowo udało się zaimplementować równanie krzywe Beziera, więc aktualnie została kwestia czytania z pliku tekstowego. |