Audioweb.cz
"a skláři nebudou mít co žrát" aneb programovanie s AI - Printable Version

+- Audioweb.cz (https://www.audioweb.cz)
+-- Forum: Ostatní (https://www.audioweb.cz/forumdisplay.php?fid=16)
+--- Forum: Dílna (https://www.audioweb.cz/forumdisplay.php?fid=19)
+--- Thread: "a skláři nebudou mít co žrát" aneb programovanie s AI (/showthread.php?tid=25551)



"a skláři nebudou mít co žrát" aneb programovanie s AI - Wili - 18. 7. 2025

Casto som v minulosti potreboval nejaky malicky MCU a programovanie bolo mimo moj skill alebo pripadne na objednavku velmi drahe alebo zlozite na dohadovanie.

Chcel som naprogramovat procesor pre riadenie gramofonoveho predzosilnovaca
najprv som zacal s malickym attiny85 ktory aj stacil, ale nakoniec ako som si nakladal viac a viac skoncil som u lacneho attiny24 ktory ma viac pinov Smile V povodnom "analogovom" riadeni mi vadilo ze pri vypnuti hlavneho preampu a zosilnovacov, sa vypol aj gramo preamp, a z neho napajany gramofon, co znamenalo ze ihla ostala na platni a gramofon sa hned vypol, co nebolo prave idealne riesenie. Toto som chcel vysperkovat k dokonalosti tak planujem vymenit riadiacu dosku v gramo preampe aby toto vsetko vyriesila.

Ako programator som pouzil arduino nano naprogramovane ako arduino isp programmer co je jednoduchy predprogramovany skript v ich programe arduino IDE. Je na to kopa tutorialov.

Trochu ma potrapil kondenzator na reset pine arduina, vs reset na pine c.5 na isp vs priamo na arduine. Rozne attiny chcu rozne zapojenie resetu takze ak by niekto nahodou robil cosi podobne a mal problem ze attiny nechce komunikovat je vysoko pravdepodobne ze je problem v zapojeni reset pinu.

Kedze mame rozne umele inteligencie vyskusal som pre svoje potreby zdrojoveho kodu Microsoft Copilot (vyuziva gpt4.0 od open ai a dalsie) co sa mi ale u copilota zapacilo, ze pri zadavani querry su na vyber dve moznosti (quick response vs think deeper) a vysledok je casto dost rozdielny.

Ak som rozpisal svoje (dost zlozite) poziadavky plne podmienok tak "quick response" kod vyzadoval asi 10-20 uprav a debugov, kym som dosiel ako tak k vysledku. Ak som dal "think deeper" kod fungoval hned na prvy sup. Je ale zlozite spisat vsetky poziadavky hned v prvom requeste lebo casto si clovek neuvedomi ze vlastne toto ma byt tak a tamto onak.


Funkcie:
- standby ledka + blikanie pocas casovania
- zapinacie tlacitko
- zapnutie aj cez remote +5V (optoclen z 5V vetvy na pin co zapina zdroj, takto to mam na analogovej doske v povodnom preampe takze som to chcel nechat zachovane) procesor na zapinacom pine funguje ako vstup aby toto rozoznal, inak funguje ako vystup v pripade zapnutia tlacidlom = celkom zlozita sranda ale AI ma pochopilo Smile
- casovac pre un-mute (zapne audio vystup)
- casovac pre "remote on" vystup pre zapnutie gramofonu
- trigger co posle impulz a automatickemu gramofonu stlaci "play button"

Pri vypnuti (ci uz tlacitkom alebo zmiznutim remote signalu):
- zdroj sa vypne
- zapne sa mute (vypne audiovystup)
- odosle sa trigger signal aby sa na gramofone stlacil play button
- remote on pre gramofon ostane zapnuty este 10 sekund aby ramienko odparkovalo
- ledka blika a signalizuje prebiehajuci "dobeh"

Tusim ze copilot a rozne ai maju aj jazykove mutacie a dokonca sa vedia aj rozpravat, ja to nevyuzivam a pisal som querry v anglictine lebo mi to tak prislo pre mna prirodzenejsie, dam vam sem pre zaujimavost aj moj konkretny priklad ako vyzeral request pre zdrojovy kod:

Kód:
Hey, I need quite complex programming code full of conditions. I am programming attiny24 in Arduino ide. I need: 1 input (PB0) 5 outputs (PA0-PA4) PA1 needs to work as input under certain conditions, will describe at the end - when attiny is powered up (voltage is applied), PA0 is in low state (for standby led to light from VCC to this pin) and rest of the outputs PA1-PA4 are in low state. - PB0 is going to be a push button with on/off function. I want some internal pull-up activated and some debouncing prevention so it works reliably with minimum external components. Just switch from PB0 to ground. - when the attiny wakes up with pushing the button on PB0, the following happens: PA0 starts blinking every 500ms (goes high every 500ms) PA1 is "high" rightaway PA2 is "high" after 30 seconds PA3 is "high" after 20 seconds PA4 briefly sends one 50ms high impulse after 22 seconds when PA2 reaches 30 seconds mark, PA0 stops blinking (goes to high state) - if the PB0 goes low (pushed button again) while any of the above timers is counting, it will all go to off state = PA0 low, PA1-4 low. However there is another condition: if the PA4 already sent impulse after those 22 seconds, and the PB0 goes low after that time, the PA4 needs to send impulse again, and PA3 will go low 10 seconds later after that happens. As explained in the beginning, PA1 is normally output pin, but needs to work also as input - when device is in off state. If in off state, and PA1 goes continuous lasting signal "high", attiny will act in similar way as if PB0 button was pressed = all counters and conditions start, just with that difference PB0 is not active at all. All is conditioned based on PA1 high state. If PA1 goes continuously low, everything will go to off state (similar as PB0 button off) and all conditions remain the same as with button conditions - the 22second mark, the impulses, and PA3 10 seconds delay etc... and button control activation via PB0 is available again. So i suppose there needs to be some sort of detection if device was triggered by button on PB0, or by continuous signal on PA1 and select PA1 in-out state based on that? is this possible to do?

Viac menej hned na prvy sup AI dodalo fungujuci kod, chcel som este nejake blikatka a upravy ktore som si hned na prvykrat neuvedomil ale chcem to sem hodit len ako reprezentacny priklad. Je potrebne popisat uplne vsetky situacie a stavy co mozu nastat, inak nebudu zahrnute.

Co je ale uzasne, je ze aj clovek s nizkym programovacim skilom dokaze napalit dobre fungujuci firmware do mcu. Neveril by som ze doba kde len nadiktujem pocitacu co chcem naprogramovat bude takto blizko Smile sice mam pocit ze umela inteligencia stale pokulhava na matematike a tam casto chybuje, je to asi len otazka casu. No programovanie jej ide celkom fajn Smile

novu dosku idem akurat osadit do svojho ultimatneho elektronkoveho phono preampu az bude vsetko hotove hodim sem video ako to funguje v praxi.

Tu je video dosky s programom od ai:

https://www.youtube.com/watch?v=_SWV3cJDxKI


"a skláři nebudou mít co žrát" aneb programovanie s AI - František - 19. 7. 2025

Nech si to vieme aj lepšie predstaviť, obrázok vygenerovaný Copilotom Wink

[Image: aAoPgkO.png]


"a skláři nebudou mít co žrát" aneb programovanie s AI - rvx73 - 19. 7. 2025

Wili: dobře napsanej prompt je základ Wink


"a skláři nebudou mít co žrát" aneb programovanie s AI - miero - 20. 7. 2025

Wili, super Smile Kod co z toho lezie, je mnohonasobne lepsie na citanie i porozumenie, nez kod od cloveka s “nizkym programovacim skillom”, takze win-win aj pre ludi, ktori sa pripadne k tomu neskor dostanu.

Akurat pozor na to, ze LLM su “generatory pravdepodobneho textu” takze citat a testovat vystupy. A zmenit poskytovatela LLM, ak nie si spokojny s vystupmi.

S pomocou (casto uz plateneho) pristupu k API ide promprovat programy aj z editoru priamo na suboroch na disku. Pouzivam terminalovy https://aider.chat/ a ako provider sa hodi tento sprostredkovatel, kde si ide prepinat takmer medzi vsetkymi modelmi https://openrouter.ai/

Je to praktickejsie na nasledne upravy vacsich projektov, nez cez webove rozhranie.

A ked sa trochu “rozsupnes” a zacnes vyrabat vysnenu aplikaciu, na ktoru si nikdy nemal cas, tak pomerne rychlo narazis aj na limity modelu, ktory sa v rozsiahlom kode, ktory vygeneroval, zacne stracat. Aspon mne sa to uz niekolkokrat stalo Smile


"a skláři nebudou mít co žrát" aneb programovanie s AI - Wili - 23. 9. 2026

napadlo mi ze v mojom novom lampaci bude dost komplikovane merat bias tolkym elektronkam sucasne a zaroven vediet aky bude celkovy prud na danu vetvu, resp. polovicu primaru trafa...

robil som nejake pokusy s arduinom a tak som zapriahol google ai a s jej pomocou som postavil nasledovne zariadenie Ears
je to uzasne co vsetko sa da s ai programovanim - pred par rokmi by sa mi ani nesnivalo ze cosi take sam doma vyrobim za jeden vecer...

su to obycajne najlacnejsie komponenty "pozliepane" dokopy. Pre meranie pouzivam celkom citlivy ADC1115 ktory vie merat aj velmi nizke napatia.

Teraz tam este nemam nakablovane vyvody ale az sa to napoji tak to funguje celkom jednoducho:
- vyberie sa hodnota odporu na ktorom sa mera ubytok
- ukazuje to 5 meracich bodov naraz a potom celkovy sucet vsetkych spolu. S ADC by sa dalo merat az 8 ale nevosli by na obyc maly displej, chcelo by to vacsi.

ADC ide na 128sps (samples per second). 1000ms/128 = funguje to tak ze kazdych 7,8ms odmeria jednu napatovu hodnotu jedneho bodu, urobi 5 merani (39ms), a z tychto vypocita priemernu hodnotu meraneho bodu. Potom podla hodnoty odporu zadaneho na zaciatku vypocita prud. Toto sa udeje 5x pre kazdy vstup separatne. Takze 5x39ms = 195ms. Displej sa refreshuje kazdych 200ms, aby to bolo pekne rychle a dynamicke v ramci moznosti LCD a zaroven zhruba presne. Tych 5ms navyse k dobru je pre arduino na kalkulaciu celkovej hodnoty vsetkych vysledkov...

(samozrejme ze na videu to ukazuje bludy, lebo vstupy plavu v lufte, este to bude chciet nejaky jednoduchy vstupny buffer/ochranu pre vstupy)

https://youtu.be/wYpkYJdcoXM?si=FhI43czY-j2sK1Tf

(5ty meraci bod zatial ukazuje nulu lebo druhy adc nefungoval, asi prisiel vadny alebo co Sad )