Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Illetve nem jól írtam nem megváltoztattuk ezeket a sorokat hanem ezeket írtuk be a PWM illetve a PID értékek kijelzése helyett!
Az eredeti kijelzés így nézett ki:
Nem lehet hogy egy eløző kiírás eredménye maradt ott? Firi hogy aértékegység hol felül, hol az eredmény után van
Köszi erre már gondoltunk de nem találtunk erre utaló jelet.
Sikerült szóra bírni az SML II invertert,megvannak a napelem és az akku adatai.A hálózat adatait három JSY 194 adja,az inverter meg rs485-el.Az R fázison van a hibrid 14 kWh akkuval,az S,T fázisokon két EHE visszatáplálós inverter.A monitoron jól látható mi történik a hálózaton,a valós fogyasztás/MVM vételezés különbsége és a betáplálás.A hibrid alaposan csökkenti az MVM vételezést,de visszatáplálósoknál kis odafigyeléssel is eredményes.A szenzorok és rs485 kezelést a pincében az inverterek mellett egy Mega 2560 végzi,az adat feldolgozást három szinttel feljebb(30 m kábel után)ESP32 a monitorral.Az volt a cél,mennyi felesleges energiát lehet elvenni a napelemektől más hasznosításra,mint a visszatáplálás.A következő cél ennek megvalósítása lesz.
A mért érték amúgy jó lenne? Nem mindegy hogy csak a kijelzéssel van baj, vagy valami komolyabb a hiba. Elsőre én is valami maradékra gondolnék, de ennek azért vannak jelei is ha úgy van (bent maradt pixelek pl). Ha a kijelzett érték amúgy rendben van, én megpróbálnék egy nulla bájtot beírni a txt megfelelő pozíciójára. Elvileg ezzel jelzed hogy vége a szövegnek, ne írja tovább a képernyőre. Ha a kijelzett érték amúgy sincs rendben, akkor az is lehet hogy a számításkor keletkezik valami hiba, ami miatt nem jól működik a megjelenítés, mondjuk végtelen, vagy nullával való osztás vagy ilyesmit tudnék elképzelni. A számolt érték helyett szerintem első körben írj be egy fix értéket, mondjuk 5-öt. Ha ez jó, akkor 5.7-et. Az se baj ha a mért értéket kiírod a soros konzolra, és rögtön látod hogy legalább ugyanazt próbálja kiírni amit kell, vagy teljesen félre megy. Szerintem ebből a pár lépésből rögtön le lehet szűkíteni a hiba helyét.
A mért érték vagyis a teljesítmény és az ellenállás kiszámítása az jó csak annyi hogy sok számot jelenít meg.
De ezeket a javaslatokat megnézzük köszönöm!
Jó lett ám négy számjegyet engedéjeztünk majd 0-t írtunk be és most jó lett a kijelzés!
Köszönöm az ötletet! A hozzászólás módosítva: Nov 2, 2024
kód kérdésSziasztok! Egy egyszerű dolgon nem tudok továbblépni.1 bájtos számot szeretnék kijeleztetni VFD-n. A szám 0-99-ig lehet, ezt a következő módszerrel próbáltam:
(a Serial.print... csak a teszthez kell. Decimális 10-99 -ig rendben van, de 0-9-ig a szám nekem az str[0]-ban jelenik meg. Nekem arra lenne szükségem, hogy az str[0]-ban "0" legyen és az str[1]-ben a szám. (Ilyenkor az str[1]-ben a string-lezáró hex0-van, ezért azt már nem tudom írni! Valami használható megoldást keresek.
Zavaros ez a kód, és évek óta nem írtam arduinora, de hátha segít: elôször eldöntöd hogy 10 alatt vagy, akkor csinálsz egy feltételt erre, azaz
A hozzászólás módosítva: Nov 13, 2024
A String az egy karakter tömb. Nem kell létrehoznod hozzá egy másik tömböt, ki tudod közvetlenül is olvasni a bájtokat.
Erre rengeteg megoldás van, a esetedre a legegyszerűbb:
Ez a megoldás szimpatikus volt, de:
Ezzel teszteltem és erre ezt írta ki: digit0= digit1=0 digit0= digit1=0 digit0= digit1=0 <-- eddig "sec<dec10" digit0= digit1=1 digit0= digit1=1 <-- innen "sec>dec10" digit0= digit1=1
Ehhez hasonlóval próbálkoztam, de az szerintem túl hosszú volt. Több számot is szeretnék kiírni, ezért egy "alprogramba" képzeltem el a megoldást.
És így:
Köszönöm, ez már működik! Azt nem tudtam, hogy így is lehet: "digit1= String(i)[0];"
(Arduino "C" nem az én világom, assemblyvel elvagyok..)
Az Arduino-ban az a jó, hogy bárki könnyen összedobhat egy programot mások által megírt könyvtárak segítségével.
Az Arduino-ban az a rossz, hogy bárki könnyen összedobhat egy programot mások által megírt könyvtárak segítségével anélkül, hogy rá lenne kényszerítve, hogy megértse mi is zajlik a háttérben. Noha a String(i) használata működik, de egyáltalán nem hatékony. Miért is? Nézzük az alábbi kódrészt:
Első probléma, hogy 2 példányt is keletkezik a String-ből, ami két konverziót, 2x-es memóriafoglalást jelent. A String(i)-t ki lehet emelni egy változóba, akkor máris csak fele:
De itt is van egy jelentős overhead-je a String használatának: 2 byte memória a digit0 és digit1-nek a stack-en 6 byte memória a String adattagjainak a stack-en 18 byte a int konvertálására a stack-en Ez 26 byte az egyébként is szűkös 2048-ból (az eredeti példában a duplája), és nincs benne az amit még a String osztály kezeléséhez a fordítónak kell. Egyébként a String osztály kódját bárki megnézheti, és ajánlom is: String.cpp String.h Nem csinál ez sem mást, mint felhivja az itoa C függvényt, és ezt te is megteheted elkerülve a String osztály használatát, és ezzel nem csak az adat, de a program memória használat is csökken.
Egy ilyen egyszerű példánál ez nem számít sokat, de ha valami komolyabbat akarsz csinálni, akkor hamar elfogy a memória ...
Köszönöm Neked is! ( Kb ezért szeretem az assembly-t, ott tudom, hogy mit csinálok! )
Beszélgettem a mesterséges intelligenciával.Meggyőzött.
Azt elhiszem! Szépen összeszedetten fűztétek a témát! Melyik modellt használtad?
A programozás sem megy neki rosszul, de azért erősen kell fogni a kezét. Cserébe minden nyelven (is) tud.
Próbáld ki a szoftvert. Ismerkedtem én is a Chat GPT ezen oldalával. Nem hibamentes a szoftver, amiket készít.
Nyilván nem fogom vakon bemásolni az általa írt programot. Nem is adtam meg neki minden paramétert.
Már úton van az FM modul. Ha beválik beépítem egy Vidi RA6363S-be. |
Bejelentkezés
Hirdetés |