Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Na igen, de a
Jelenleg azokban a függvényekben kerül nullázásra, mint írtam próbából. Ez helypocséklás, csak kipróbáltam. (néha alig tudom követni, hogy mikor mit és hol
![]() Az előző megoldásod tetszene, ki is fogom próbálni hamarosan! Nem bánnám ha egy kicsit kevesebb változóm lenne forgásban ![]()
Így most akár mit nyomok a button2-vel nem indul a weld, de ha bármit állítok, betöltök, mentek, kilépés után rögtön hegeszt vég nélkül
![]()
Sikerült valamit jól eltolnod.
![]() Tedd fel a kódot, úgy könnyebb segíteni. Nem baj, ha még nincs kész, és még teli van hibával.
Nos megálmodtam ezt az eeprom írást, bizonyára lehetne szebben is.
az első 256 bájt a tárhely, ott nem is engedem keresni, az utolsó bájt az eepromban az én jelzésem, hogy meg van formázva az eeprom, de azért hagytam az utolsó 6 bájtot békén, véletlenül se írjon oda. A beállítások végén meg megkerestetem vele újra az első szabad helyet és írhatja, így Nano-n lesz 150 bank még amit forgóban használhat (szerintem addig nem élek, amíg tönkre megy). Ez még nincs kész, de ez menni fog. A fenti kód egy részlet, benn a helyén eeprom írás helyett lcd-re írok, látszólag működik. Kell valamit módosítanom? Van benne nagy hiba? Nem azt várom, hogy javítsd (vagy bárki más), hanem hogy mit kell(!) másképp és miért! Tehát nem kódot szeretnék, hanem útba igazítást ![]() Jah, most látom ![]() Az lcd-re írás csak a kedvemért van benne, mert vizuális tipus vagyok ![]() A hozzászólás módosítva: Ápr 25, 2019
Egy - 2 apróság soros terminálos kijelzéshez a Arduinoban avagy bármilyen uC környezetben .
Ha debuggolni akarod soros porton a futását valaminek . Zavaró lehet a az Serial.println(változónév vagy "szövegkonstans"); // CR/LF végű újsor (CR/LF) generátoros kiírás. Ekkor kapsz egy folyamatosan lefele futó scrollozó sorokat. De ha beiktatsz egy FORM FEED ESC vezérlő szekvenciát akkor nem lesz ez a végtelen scrollózó adatsor futás. Lessél utána a terminál vezérlő ESC szekvenciáknak. Van párféle szabványos VT100 , VTxyz ... stb. számú terminál emuláció. Ezekhez lettek fejlesztve az ESC szekvenciák. Ezek a ESCape vezérlő kódok segítségével rugalmasabban formázhatod a soros terminálon megjelenő tartalmat.(akár színezheted inverzé teheted ...stb.. ) (persze mindez soros terminál program/vas függő , persze vas mert annó az IT hőskorban lehet éppen egy nyomtató volt a soros terminálod kimenete és nem a monitor . Később lettek persze CRT-s konzolok is amik mint terminálok működtek valóban valami soros protokollal modemmel összekötve ...stb. ) Bocs ha ismerős volt a VT100 és egyéb "állatfajtáik" ! Igaz ha ESC szekvenciát használsz akkor azt megfelelően kell fogadni is. Volt egy sejtésem , hogy az ArduinoIDE serial monitora nem lesz jó. (Valóban nem veszi észre az ESC szekvenciákat , esetleg ha valami másabb formában etetem meg vele. ... de ezen nem akadtam fel ... nem is érdekelt) Egyből valódi VT100 és kompatibilis soros porti programban gondolkodtam. Pl.:A Putty általános konzolos termnál program .... putty elérhetősége pl.: FORM FEED ami konzolon " képernyő törlést" (avagy lapot dobna a printeren) csinál az aktuális kurzor pozíciótól. A minta .... "elrontottam" az egyik default gyári minta kódot ... (analogread to serial pirintinget) ezt : analogvoltread
Persze 9600 bps esetén kicsit villog és remeg a kiíratás meg a delay(ideje) -től is függ . Valszín feljebb menve 19k2 36k4 56k bps esetén kevésbé lehet remegős már ... Ezzel sokkal szebb megjelenítésű konzolt is lehet "varázsolni" a lefele srollozó sortömege helyett . FORM FEED pedig éppen 12 értéken található a standard ASCII táblázatban is , avagy azt is szokás mondani , hogy az ascii tábla első 32 karaktere a vezérlő karakterek (CR - 13 , LF - 10 , BELL - 7 ...stb.) Ezért használom a Serial.write(12); // FORM FEED sorban a 12 számot mint értéket ekkor végrehajtja a lapdobást / képernyő törlést. A hozzászólás módosítva: Ápr 25, 2019
Sziasztok!
Ha túl láma a kérdésem, akkor előre is bocsánat, de még nem programoztam érintős, színes LCD-t. A kérdésem az, hogy mennyiren bonyolult leprogramozni egy ikonokkal megvalósított 4-5 pontból álló menürendszert? Egy gépen lenne, amihez van 3-4 különböző adapter, ezeket kellene tudnom ikonokkal kiválasztani, és pár egyszerű beállítást elvégezni szintén az érintős felületen keresztül. Eddig karakteres lcd-t, bluetooth modult, analóg jelkezelést, pwm szabályzást csináltam, karakteres lcd-re csináltam már menüt is, az megy, magától a kijelzőtől "félek". Ha nagyon nagy szintugrás lenne ez, amit nem biztos, hogy meg tudom könnyen lépni, akkor nem ruháznék be közel 10000Ft-ot egy érintős lcd-re, hanem akkor megoldom kevésbé korszerűen gombokkal, vagy rotary encoderrel. A megrendelő szeretné az érintős vezérlést, és záros határidőm van az elkészítésére, szóval nem sok időm van kisérletezni, tanulni. Előre is köszönöm a válaszokat.
Köszönöm! Ha csak egy-két érték kell, akkor az Arduino keret soros monitorát használom, de ma kiírattam a teljes eeprom tartalmat párszor, mert nem értettem, hogy mit hová és miért írt, ehhez a screen (screen /dev/ttyUSB0) volt jobb. Linuxozom olyan 94-95 óta, a terminálokkal nincs bajom, bár mindent nem tudok róluk. Teszek majd egy „monitor"t az usb-re, hogy ne kelljen kapcsolgatni (ezzel mintegy megcsapolom az USB0-t és nem kiabál foglaltság miatt), de eddig még nem kellett sokszor, mert van lcd. A következő projektemen nem lesz, addigra meglesz. Az infókat meg elraktározom amiket tőled/tőletek kapok
![]() A hozzászólás módosítva: Ápr 25, 2019
Az íráshoz jó az (i/5), olvasáshoz ((i-5)/5) kell, mert az első szabad 255 értékű címen nincs még tárolt adat. Most azt keresgélem, hogy lehetne-e egy függvényt így hívni:
vagy
Tehát nem változót akarok átadni, hanem a műveletet határoznám meg vele és a „freebank”-ban vizsgálnám meg, hogy melyikkel érkezett. Létezik ilyen megoldás? A googlevel nem találok, de igazán nem is tudom, hogy hogyan keressem ![]()
Itt van:
Kezdjük a végén, az gyorsan megvan:
Ezt lehet szebben is:
Vedd észre, hogy a kettő ugyanaz, csak mágikus számok helyett a program elején definiáltam cimkéket, és inkább azt használtam. Ezt is lehet még szebben?
Láthatóan itt már tetszőlegesen sok feltételt is egyszerű megvizsgálni.
Szuper! Köszönöm!
Egy istennek se találtam egy olyan kódot se, ahol ilyesmi lett volna benne! Ez jelentheti azt, hogy nem kívánatos az ilyen hívás vagy csak nem volt szerencsém a keresésben? Ez amúgy ellenjavallt módszer vagy van helyette egyszerűbb/logikusabb? Innen most egyszerűbbnek tűnik egy bármilyen számot átadni és azt vizsgálni. Ha eltalálta akkor write ha nem akkor read csak nem olyan könnyen olvasható a kód, mintha szerepelne benne ez a két szó.
Emberek vagyunk, és a neveket könnyebben megjegyezzük, mint a számokat.
Viszont a gép csak a számokat érti. Ezért van a kettős definiállás: adunk a névnek szám értéket.
Upsz, közben amíg írtam megleptél egy kóddal
![]() Ez a harmadik tetszetős és egy függvénnyel hívással kevesebb lehet! No ezt ki is próbálom ![]()
Ez jelent valami a lefordított kódméretben vagy van valami hátránya a nevesítésnek ebben az esetben? A kód szebb lehet ha nevekkel illetem és ahogy öregszem egyre nehezebben értelmezek dolgokat
![]() ![]()
Ezek csak a fordítónak szóló utasítások,
Nem kerülnek bele a kódba
Nagyon köszönöm mindkettőtöknek!!! (@kapu48, @sargarigo) Ezzel most el leszek egy darabig, át kell nézzem, hogy mi az amit nevesíthetek a teljes kódban
![]() A hozzászólás módosítva: Ápr 25, 2019
Ha már így belemerültünk!
Elmondom, hogy azért írjuk ezeket a neveket csupa NAGYBETÜVEL. Így később tudjuk, hogy állandó értékek, ezeknek nem lehet más értéket adni A hozzászólás módosítva: Ápr 25, 2019
Határidős első projecthez nem kezdenék TFT + Touch alkalmazást tanulni.
Mivel az ilyen kijelzőknek rengeteg gyártója van, számtalan változatban. És alapos körültekintéssel kell megválasztani őket! Nem is az áruk a döntő szempont. Hanem, hogy milyen mértékű támogatást találsz hozzá a neten?
A kérdésed nem láma, hanem alulspecifikált. Igazából se a tudásod, se a feladat nem derül ki belőle, és az sem, hogy mit is szeretnél használni. Ja, és a határidő se, a költségkeret se, semmi se. És no offense, de a 10e Ft bármilyen komolyabb üzleti témában aprópénz, kerekítési hiba.
Ha Nextion-ra gondolsz, akkor arról van itt topic, van a cikkek között is nextion-os cikk nem túl régről, és ha rákeresel a "nextion arduino" kifejezésre, akkor rengeteg találatod lesz. Youtube videó, tutorial, bármi. Ez alapján szerintem leginkább Te tudod megválaszolni a kérdésedet.
Ezt az usb-s monitoros dolgot le tudnád írni hogy csinálod? Nekem is jól jönne néha..
Persze! Olyasmi, mint a gpsd, figyel a porton és továbbadja ha kell 1000 felé. Még nem állítottam be soha, de elmentettem könyvjelzőbe
![]()
A kódodban kb bármit nevesíthetsz! Érdemes minden számértéket elnevezni, hogy tudd miért annyi amennyi, és ha utólag változtatni kell, akkor elég egy helyen az elején megtenni, nem kell az egész kódot áttúrni.
A teljes eeprom kezelést sikerült megoldanom így:
Az epromba mentett beállítás miatt feleslegessé vált a bank(51), ahonnan eddig az alapot töltötte be, ezt még törlöm majd. Viszont a beállításom még mindig nem megy. Kiemeltem a kódból azt ami nem megy:
Itt látszik, hogy a loopból a (bank)-al hívom meg a rutint, ott tekergethetem a rotary-t, változik is az érték és a return előtt kiíratva még megvan, majd a visszatéréskor az alap értéket kapom megint. A value=bank azért van benne, mert ezt az eljárást most 5 különböző változóval hívom meg, amiből egyet szeretnék csinálni ha majd működik és a do-ból szeretnék majd az encoderValue értékkel visszatérni és azt átadni a bank-nak (meg a többinek). Most ezzel az egyel sem megy, de próbáltam már úgy is, hogy csak egyszer van és akkor más problémáim is adódtak. Előbb ez menjen, aztán az is fog ![]() Ha (bank) nélkül dolgozik, akkor visszaadja a beállított értéket, de akkor a loop-ból nem kapja meg az aktuálist és mindig azzal kezd amit az elején beállítottam. próbáltam az „int save(int bank)”-ot is, ugyan ez a helyzetem. Bizonyára triviális amit benézek, de 2 napja nem jövök rá. Másik problémám: a while (funktion != 1 || funktion != 3); elvileg vagy 1 vagy 3 értékig kellene várjon, de egyikre sem csinál semmit, tehát fut a ciklusom a végtelenségig. A while-on belül nem lehet logikai értékeket kezelni?
Serial monitor itt egy ami win/linux elvileg. Nem próbáltam, de elvben ez arra lenne.
Itt meg még pár. Ha csinálom, leírom lépésről lépésre, hogy mit csináltam. A hozzászólás módosítva: Ápr 26, 2019
Én nem használnám se a write, se a Write, se a WRITE szavakat! Inkább vagy magyarul írnám, IRNI, OLVASNI, vagy valami megkülönböztethetőt használnék: MYREAD, vagy LCDWRITE, MOTORWRITE, amit akarsz. A read, write túlságosan sűrűn használt ahhoz, hogy valamit rádefiniálj! És kizárólag nagybetűvel, nem keverve. Ez valahogy szabályként kialakult, nem kötelező, de sokkal átláthatóbb a kódod, hogy azok előre definiált értékek lesznek!
Én akár egész mondatot is egybeírva, nagy betűvel felhasználok a programomban, hogy egyértelmű legyen. Pl. LCDREFRESHPERIOD, LOADENABLEDELAY, stb, utána meg kommentben kifejetem, melyik függvényben használom, vagy ami fontos. Amikor tényleg hosszú, nagy, bonyolult programot írsz, csak így lesz átlátható.
Köszönöm!
![]() ![]() ![]() Magyarul nem fogok beleírni, ki tudja, hátha megteszene valakinek, aki nem ért magyarul. Igaz, inkább vagyok németes, mint angolos, de azért megpróbálom ahol lehet angolul. A nevesítésnél igazad lehet, bár a READ/WRITE eléggé láthatóan kiemelt. Majd keresek helyette mást, ami kellően tükrözi, hogy írás/olvasás más szavakkal ![]()
Szerintem így kellően tükrözi, hogy mit ír/olvas. Valahogy a névnek utalnia kell számomra a műveletre, de ezzel arra is utal, hogy mit. Nekem tetszik ![]() A hozzászólás módosítva: Ápr 26, 2019
Ez így nem is fog bekerülni a bank globális változóba.
Mutatom, hogy szerintem hogyan kellene
Mivel a save függvénynek átadod a bank globális változót, így az elrejtésre kerül, és létrejön egy lokális változó, ami addig él míg a függvény. Kicsit egyszerűsítettem a kódon is. ![]() |
Bejelentkezés
Hirdetés |