Fórum témák

» Több friss téma
Fórum » Arduino
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Lapozás: OK   861 / 872
(#) neogeo2 válasza Bell hozzászólására (») Jún 8, 2025 / 1
 
Az ESP-WROOM-32-n nincs is LED. Mit szeretnél villogtatni? Vagy valamilyen ESP32 fejlesztőpanelod van? A működés ellenőrzésére lehetne valamilyen serial-on adatot küldő programot feltölteni próbaképpen.
(#) Bell válasza neogeo2 hozzászólására (») Jún 8, 2025 /
 
Ez egy ESP32-WROOM-32D, 38 lábú panel. Van benne LED, a 2-es porton. ESPEasy-vel működik.
A példák közül a Blink-et szeretném futtatni.
De futás helyett még resetre vár. EN, Boot hatástalan.
(#) Jonni válasza Bell hozzászólására (») Jún 8, 2025 / 1
 
EZ AZ ?
Mert ha igen ezen csak 1 power led van, annak a jelentése , hogy áram alatt van. Még olyan lehetséges , hogy mikor feltöltöd a progrmot akkor villog.
(#) Jonni válasza Bell hozzászólására (») Jún 8, 2025 / 1
 
Ha a fent említett modelled van akkor a kódod így néz ki
  1. void setup() {
  2.  
  3.   pinMode(4, OUTPUT);
  4. }
  5.  
  6. void loop() {
  7.   digitalWrite(4, HIGH);  // turn the LED on (HIGH is the voltage level)
  8.   delay(1000);                      // wait for a second
  9.   digitalWrite(4, LOW);   // turn the LED off by making the voltage LOW
  10.   delay(1000);                      // wait for a second
  11. }


és a 4 pinre kötöd a ledet a megfelelő előtét ellenállással . IO4-led anod, előtét ellenállás, led katod-GND. Piros lednél kb 180-220 Ω
(#) Bell válasza neogeo2 hozzászólására (») Jún 8, 2025 /
 
Köszönöm a segítséget!
Ezen valóban nincs LED.
(#) Bell válasza Jonni hozzászólására (») Jún 8, 2025 /
 
Köszönöm a segítséget! Ezen valóban nincs LED. Egy másikon próbáltam az ESPeasy-t.
Most már működik.
(#) morgo válasza morgo hozzászólására (») Jún 9, 2025 /
 
Nem hagyott nyugodni az LGT328 sikertelensége, rendeltem egy nano stílusú lapot. Ez hibátlanul működteti az ST7735 alapú lcd-t. Viszont felmerült egy újabb probléma. A kijelző szemet bántóan villog. Pedig csak akkor frissítem, ha az indokolt, pl. ha változik a mért érték. Na de az ADC billegése miatt szinte folyamatos a frissítés. Van erre valami ötlet, hogyan lehet ezt megoldani?
(#) pipi válasza morgo hozzászólására (») Jún 9, 2025 /
 
Felülírod a képernyő tartalmat, vagy előbb törlöd, és írod?
(#) Kera_Will válasza morgo hozzászólására (») Jún 10, 2025 /
 
ADC adatait atlagold, 5 10 ertekbol szamoljal atlagot, es utana irasd csak ki.
Kevesbe fog billegni.
(#) morgo válasza pipi hozzászólására (») Jún 10, 2025 /
 
Tölöm az egészet, utána újra írom. Ha csak felülírom, az előző értékek ott maradnak, és egy értelmezhetetlen zagyvaság, majd egy telibe írt terület lesz a karakterek/számok helyén.
A hozzászólás módosítva: Jún 10, 2025
(#) morgo válasza Kera_Will hozzászólására (») Jún 10, 2025 /
 
Átlagolom. Már 100 mérést is próbáltam átlagolni, valamit javul, de nem sokat.
Máshol azt olvasom, hogy az ST chip lassú nagyon, ez is okozhatja a villogást. Arra gondoltam, hogy csak egy átlagolási ciklust írok ki. De lesznek olyan részek, ahol potival állítok egy feszültséget, közben tudnom kell annak az értékét.
(#) benjami válasza morgo hozzászólására (») Jún 10, 2025 /
 
Módosítsd úgy az st7735 library betűrajzoló függvényét, hogy ne csak az aktív pixelt rajzolja ki, hanem a nem aktív pixeleket is az aktuálisan beállított háttérszínnel. Ezzel a módszerrel mellékesen sokkal gyorsabbra is meg lehet csinálni, mert nem kell a kijelző kirajzolási területét pixelenként címezgetni, hanem elegendő egy alkalommal a teljes betűt befoglaló terület rajzablakának a címzését elküldeni. Ebben az esetben az új szöveg teljesen felülírja a régit, ha ugyanoda pozicionálod.
A hozzászólás módosítva: Jún 10, 2025
(#) bbatka válasza morgo hozzászólására (») Jún 10, 2025 /
 
Nem Arduino és nem ST chip, de szintén villogással küzdök. Egy oszcilloszkóp kijelző így mindig törölni kell a hátteret, jelző vonalakat és a kijelzett értékeket. Én már gondoltam arra is hogy a lefordított utasítások a lassúak. Hatékonyabb eljárásokat kellene keresni. Egyébként amit használok (MikrobasicPIC32, PIC32MX320F064 40MHz-en futtatva). Próbáltam 80MHz-en is hajtani, de nem jelent meg a képernyőn. Maga a kirajzolás nagyon gyors, de ennek ellenére látszik a villogás.
A hozzászólás módosítva: Jún 10, 2025
(#) Lamprologus válasza Bell hozzászólására (») Jún 10, 2025 /
 
ESP32-nél én is belefutottam abba, hogy lassan fordít az Arduino IDE...
Egy SD kártyáról, mp3 lejátszás, webes felületen progit több mint fél óra alatt fordít le ...

Platform IO ugyan ezt a porgit 1 percen belül lefordítja ...
A hozzászólás módosítva: Jún 10, 2025
(#) bbatka válasza (Felhasználó 32034) hozzászólására (») Jún 10, 2025 /
 
Sajnos nem látok bele a Mikrobasic32 utasítás hátterébe, elég kusza a generált assembly kódja. Talán képet képes kezelni, úgy rémlik. Kösz a tanácsot.
(#) neogeo2 válasza Lamprologus hozzászólására (») Jún 10, 2025 /
 
Nem is értem hogy miért is használ még bárki is ArduinoIDE-t. Zseniális, ahogy a mesterséges intelligencia fel tudja gyorsítani fejlesztési feladatokat VSCode alatt.
(#) benjami válasza (Felhasználó 32034) hozzászólására (») Jún 10, 2025 / 1
 
Ez nagyon jó módszer ... lenne, csak a legtöbb esetben ott szokott megbukni a dolog, hogy nincs elég RAM-ja az adott mikrovezérlőnek. Jelen esetben a 16kB RAM-ban pl. ezt biztosan nem fogja tudni megcsinálni.
(#) sdrlab válasza bbatka hozzászólására (») Jún 10, 2025 /
 
Elárulom neked a nagy titkot! Mellőzni kell mindenhol a törlést! Ez egyébként is baromi lassú(nagy felület), felesleges vele terhelni az erőforrást. Helyette felülrajzolást kell használni. A görbéknél is! Így nem fog villogni kicsit sem....
(#) sdrlab válasza (Felhasználó 32034) hozzászólására (») Jún 10, 2025 /
 
Igen, ez így működik...ha van hozzá RAM-od?!! Még kis kijelző esetén is meglehetősen sok memória kell hozzá, nagyobbnál többnyire külső RAM-ot kellene ehhez használni...
(#) sdrlab válasza (Felhasználó 32034) hozzászólására (») Jún 10, 2025 /
 
És hogyan menedzseled, hogy az akár 1 képpont széles csíkokba, miket kell éppen kirajzolni??! Háttér, koordináta vonalak, szöveg részek, görbék, stb... ezek mind különböző objektumok, amik metszhetik egymást egy csíkon belül is...
Az SPI RAM nemigen elegendő sebességben. Max a QSPI, legalább 10-20MB/s vagy még gyorsabb memória kell ahhoz, hogy egy kis kijelzőt is kiszolgáljon....
A hozzászólás módosítva: Jún 10, 2025
(#) sdrlab válasza (Felhasználó 32034) hozzászólására (») Jún 10, 2025 /
 
Néhány görbe rajzolásáig teljesen karbantartható, és kis memóriával megvalósítható feladat.
(#) sdrlab válasza (Felhasználó 32034) hozzászólására (») Jún 10, 2025 /
 
Igazából csak a lényegen siklottál át elegánsan Tehát hogyan is menedzseled egy függőleges oszlop képpontjaihoz tartozó objektumok aktuális metsző adatait?? Értem én, hogy elméletben ez megoldható, le is programozható..., de na...akinek két anyja van, kb annak )) Bár, az MI lehet legenerálja hozzá a forráskódot ma már
Ezzel szemben a felülírásos módszer jól kézben tartható, könnyen megvalósítható, átlátható, minimális háttér memóriával megvalósítható...cserébe kétszer annyi vonalat kell rajzolni! De ez még mindig sokkal gyorsabb, mint egy képernyő törlés....
(#) bbatka válasza sdrlab hozzászólására (») Jún 10, 2025 /
 
Mint mondtam nem néztem bele komolyabban a MikroBasic utasítások assembly hátterébe. Az biztos hogy a basic forrásban nem használok törlést. Olvasom a hozzászólásaitokat és tanulok belőle.
(#) sdrlab válasza bbatka hozzászólására (») Jún 10, 2025 /
 
Akkor feltehetően a könyvtár van úgy megírva, hogy új kiírás előtt egyszerűen törli az érintett területet... Mindenképpen meg kellene nézned, hogy van realizálva, és ha kell, akkor módosítod, vagy átírod... Én ezt úgy szoktam megoldani, hogy felülírással megy ki a szöveg(ez eddig minden képpontot érint), és ha az aktuálisan rövidebb, mint a max szöveghosszúság, a különbséget egy kis megfelelő méretű, háttérszínű négyszöggel törlöm.... Így soha nem fog villogni...
(#) sdrlab válasza (Felhasználó 32034) hozzászólására (») Jún 10, 2025 /
 
Csak annyiban "vártam" komplex megoldást, amennyiben lazán és könnyedén lépsz át olyan ponton, ami pont a legkritikusabbja ennek az eljárásnak!
A dolog nehézsége és bonyolultsága épp az, hogy valahol nyilván kellene tartani, vagy kiszámolni, hogy az aktuális függőleges csík épp miket metsz és azokat konkrétan milyen pontokban?! Feleslegesen térsz el bőre eresztve a bitműveletekre, mert az itt most senkit sem érdekel..., ellenben a fenti probléma alapjaiban határozza meg az egésznek a működését!
Ahogy mondtam feljebb, elméletben leprogramozható, de szerintem nagyon bonyolult, nehezen nyomon követhető kódot eredményezne, főleg sok objektumot tartalmazó képernyőnél....
Én biztosan nem vállalkoznék rá
Idézet:
„És ha már szöveg is van és metszi a görbét? : -)”

A szövegrajzoló függvénynemnek van átlátszósági lehetősége. Ekkor hátteret nem rajzol...illetve de(pont a folytonos memória írás miatt), de előzőleg kiolvassa a képernyő memóriából az ott lévő pixeleket. Ennek a hátránya, hogy ilyenkor lassúbb a szöveg rajzolása(lassúbb az olvasási utasítás). Szerencsére átlátszó hátterű szövegre elég ritkán van szükség...
(#) sdrlab válasza (Felhasználó 32034) hozzászólására (») Jún 10, 2025 /
 
Idézet:
„Függőlegesen is működik? Ha nagybetű vagy szám után kisbetűt írsz ki, eltakarja a maradékot? : -) És az előző görbe + egy szöveg az oszcilloszkópon, ha átfedés van? Te írtad. Változó feltételek...”

Eddig még nem volt igényem függőleges szöveg kiírására kisképernyős környezetben..., de nem látok semmi különbséget....
Kirajzolod az előző görbét, háttérszínnel, majd az aktuálisat. Ezek egyszerre futnak, ahogy törli az előző pixelt(vagy pixeleket), rajzolja is az újakat. Villogás kizárva! Erre rajzolhatsz szöveget, átlátszó háttérrel, vagy anélkül, ahogy tetszik... Ez bevált, évek óta működő módszer...

Idézet:
„proporcionális (ráadásul serif) fonttal írt ki mindent, a library meg nem tartalmazott ilyet, hogy egy szöveg szélessége képpontokban”

Nekem ehhez van olyan függvény készletem, ami direkt változó szélességű fontokhoz készült. A rajzoló függvény mindig visszaadja az aktuálisan kiírt szöveg vég koordinátáját, így onnan lehet folytatni, ha nem egyszerre van minden kiírva. De van olyan függvény, ami egy tetszőleges szöveg hosszát adja vissza képpontokban. Ezekre építve gond nélkül tudom paraméterekkel pozicionálni jobbra, balra, vagy középre igazítva is a szöveget, változó karakterszélességnél is....
(#) bbatka válasza bbatka hozzászólására (») Jún 10, 2025 /
 
Utoljára vagy 2 hete foglalkoztam ezzel a projekttel. Hát nem is olyan gyors a kirajzoltatás, mint amilyenre emlékeztem. A villogást a kép kirajzoltatás okozhatja. A csatolt videón 1s késleltetés van beiktatva a képek közé, így nem annyira zavaró a villogás. Az LCD egy 16bites párhuzamos portos 320x240 felbontás. Mögötte van egy adapter és a PIC32MX320F064H modul. Az előtérben egy PIC18F452 van ami soros porton keresztül adja át a 686B adatot 115200bit/s sebességgel. Az adatátvitel ideje úgy emlékszem 35ms. Becsatolom a teljes MikroBasic32 forrást tömörítve. Talán érdekel valakit. Tele van megjegyzésekben lévő nem használt utasításokkal is! Még takarításra vár! Ez a fő modul:
  1. '     MCU:             P32MX320F064H
  2. '                      http://www.microchip.com/wwwproducts/Devices.aspx?product=PIC32MX320F064H
  3. '     Dev.Board:       Sajat_baspic32_ILI9341_16bit
  4. '     Oscillator:      40000000 Hz
  5.  
  6.  
  7. program code4
  8. 'declaration
  9. include driver
  10. dim J as word
  11.  
  12. main:
  13.     'CHECON = 0x32
  14.      AD1PCFG = 0xFFFF                       ' Configure AN pins as digital I/O
  15.     'UART1_Init_Advanced(115200,_UART_LOW_SPEED,_UART_8BIT_NOPARITY,_UART_ONE_STOPBIT)   ' Initialize UART1 module
  16.     UART1_Init(115200)
  17.     Delay_ms(100)
  18.     Start_TP()
  19.     Delay_ms(20)
  20.     J=0
  21. '   Main program
  22.     while TRUE
  23.           if (UART1_Data_Ready() <> 0) then    ' If data is received
  24.          IN_DATA[J] = UART1_Read()             ' read the received data
  25.              if IN_DATA[686]=65 then       '678 helyett 359
  26.             J=0
  27.                TFT_Fill_Screen(CL_BLACK)
  28.                DrawLines()
  29.                DrawText()
  30.                TFT_Set_Pen(CL_Red, 1)
  31.                for KSS=320 to 638
  32.                TFT_Line(KSS-320, IN_DATA[KSS], (KSS-319), (IN_DATA[KSS+1]))
  33.                next KSS
  34.                TFT_Set_Pen(CL_White, 1)
  35.                for KS=0 to 318
  36.                TFT_Line(KS, IN_DATA[KS], (KS+1), (IN_DATA[KS+1]))
  37.                'TFT_Line(KS, IN_DATA[KS+320], (KS+1), (IN_DATA[KS+321]))
  38.                 next KS
  39.                 frekv1text = Chr(IN_DATA[640])+Chr(IN_DATA[641])+Chr(IN_DATA[642])+Chr(IN_DATA[643])+Chr(IN_DATA[644])+Chr(IN_DATA[645])+Chr(IN_DATA[646])+Chr(IN_DATA[647])
  40.                 TFT_Write_Text(frekv1text, 144, 0)
  41.                 frekv2text = Chr(IN_DATA[648])+Chr(IN_DATA[649])+Chr(IN_DATA[650])+Chr(IN_DATA[651])+Chr(IN_DATA[652])+Chr(IN_DATA[653])+Chr(IN_DATA[654])+Chr(IN_DATA[655])
  42.                 TFT_Write_Text(frekv2text, 246, 0)
  43.                 v1text = Chr(IN_DATA[656])+Chr(IN_DATA[657])+Chr(IN_DATA[658])+Chr(IN_DATA[659])+Chr(IN_DATA[660])+Chr(IN_DATA[661])
  44.                 TFT_Write_Text(v1text, 32, 228)
  45.                 v2text = Chr(IN_DATA[662])+Chr(IN_DATA[663])+Chr(IN_DATA[664])+Chr(IN_DATA[665])+Chr(IN_DATA[666])+Chr(IN_DATA[667])
  46.                 TFT_Write_Text(v2text, 114, 228)
  47.                 verttext = Chr(IN_DATA[668])+Chr(IN_DATA[669])+Chr(IN_DATA[670])+Chr(IN_DATA[671])+Chr(IN_DATA[672])+Chr(IN_DATA[673])
  48.                 TFT_Write_Text(verttext, 210, 228)
  49.                 horztext = Chr(IN_DATA[674])+Chr(IN_DATA[675])+Chr(IN_DATA[676])+Chr(IN_DATA[677])+Chr(IN_DATA[678])+Chr(IN_DATA[679])
  50.                 TFT_Write_Text(horztext, 278, 228)
  51.                 triggertxt = Chr(IN_DATA[680])+Chr(IN_DATA[681])+Chr(IN_DATA[682])+Chr(IN_DATA[683])+Chr(IN_DATA[684])+Chr(IN_DATA[685])
  52.                 TFT_Write_Text(triggertxt, 50, 0)
  53.                 Delay_ms(1000)
  54.              end if
  55.           J=J+1
  56.           end if
  57.  
  58.     wend
  59. end.


Egy videó működés közben. Video itt

A DrawLines(), DrawText() eljárások a source modulban találhatóak.
A hozzászólás módosítva: Jún 10, 2025

code5.zip
    
(#) sdrlab válasza (Felhasználó 32034) hozzászólására (») Jún 10, 2025 /
 
Ugyanaz az elv..., újra rajzolod a görbét, majd az új karakter rajzolása közben törlöd az összes pixelt, ami betű színű volt, és rajzolod az új pixeleket...
(#) sdrlab válasza (Felhasználó 32034) hozzászólására (») Jún 10, 2025 /
 
Én nem meggyőzni akarlak arról, hogy egy bevált, sok ideje használt viszonylag egyszerű elméleteken alapuló kód miért jobb, vagy célszerűbb, egy nehezen használható, inkább csak elméletben létező algoritmusnál..., alapvetően gondolatébresztőnek szántam, leginkább a kérdező problémájára! Valamiért nem akarod belátni, hogy az általad javasolt algoritmus lényegesen bonyolultabb és nehezebben megvalósítható, még akkor is, ha az elvét le tudod írni 3 mondatban Arra kíváncsi lennék, ezt legalább egyszer már meg is valósítottad valamilyen projectben, vagy csak értetlen ábrándozás kategóriája az egész?!

Kezdenek az igények kicsit elszaladni. Lassan a windows GUI-t lepipáló, mindenre IS kiterjedő fontkezelést vársz el egy mikorvezérlős környezetbe szánt könyvtártól! Nem az a cél, hogy mindent is lekezeljen és megvalósítson, hanem hogy a gyakorlati igényeket kielégítse, amire eddig tökéletes volt.

Részemről ez a téma ebben az irányban lezárva. Nem látom értelmét tovább csámcsogni ezen...
(#) Lamprologus válasza neogeo2 hozzászólására (») Jún 11, 2025 /
 
Mert azzal kezdte az ESP-ket programozni? Ahhoz talált forráskódokat?

Na arról mesélhetnél, hogyan gyorsítja... még csak barátkozom a PlatformIO-val, de már találtam pár szimpatikus lehetőséget benne ...
Következő: »»   861 / 872
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem