Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Kockás papír is elég, elvégre nem kell feltalálni a spanyolviaszt, csak a megfelelő angol/latin betűket kell ékezettel kiegészíteni. De fontszerkesztő programokat is találhatsz, ha körbenézel. Például itt: GLCD font creator
Sziasztok!
Van 2 db MCP4261-es digipotim, amiket daisy chainbe lehet kötni. Nekem 4 potméterre van szükségem, viszont nem tudom hogy hogyan címezzem meg a 3. és 4. potit ha csak egy SS lábat használok. Tudok 2 SS pint csinálni? Mert akkor amelyiket LOW-ra teszem, az az ic fogadja a parancsot.
Persze! Az SS lábat amúgy is manuálisan kellene kapcsolgatni (AVR alapú Arduinóknál legalábbis).
Karaktert készíteni nem ördöngősség, itt egy példa saját kódból, igaz más mátrix de a logikát meg tudod érteni. Ez egy balra nyíl, az 1-es ahol be van kapcsolva a pixel, így rögtön látod a formát, nem kell se kockáslap se tervező, én így a tömbben rajzoltam ki minden egyedi ikonomat.
byte iconArrowLeft[8] = { B00010, B00100, B01000, B10111, B01000, B00100, B00010, }; #define CHAR_LEFT 3 lcd.createChar(CHAR_LEFT, iconArrowLeft); Így íratod ki: lcd.write(byte(CHAR_LEFT)); A CHAR_LEFT csak a 3-mas karakterkód helyettesítése, nyilván nem kötelező nevet adni. Illetve rárakhatod már létező karakter kódjára, ha nem akarsz byte()-ozgatni. Ha nem akarsz nulláról indulni, ahogy már többet ajánlották fogsz egy ékezet nélkülit és átrajzolod, de mivel a hely elég kevés, valószínűleg jobb előről kezdeni. A hozzászólás módosítva: Máj 22, 2016
Átírásra nem vállalkozok, de ötletet talán tudok adni.
Kezdetnek bővítsd ki a font8x16_basic tömböt ezzel a sorral (ez legyen az utolsó elem): /* Á (128) */ 0x08, 0x10, 0x00, 0x10, 0x38, 0x6C, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00 Ez az 'Á' betű karakterképe, a program drawChar() függvénye a 128-as karakterkód hatására rajzolja ki. Legyen message[]="BOGLÁRKA "; Futtasd le a programot: Á helyett két zizis valamit fog kirajzolni, nem lesz jó. Legyen most message[]="BOGL\200RKA "; A '\200' 128-as értéket helyettesít be a karakterlánc adott helyén, ami Á betűt fog eredményezni. Fapados, kicsit nehezen olvasható szöveg, de már lehet kezdeni vele valamit. Emberi formátumú szöveg kezeléséhez több programozásra lesz szükség: -Először is írd össze, milyen nem ASCII karaktereket akarsz használni. -Rajzold meg a képüket a font8x16_basic tömbben. -Derítsd ki, milyen kódok tartoznak az illető karakterekhez, például figyeld meg soros monitoron az alábbi program kimenetét:
A nem ASCII karaktereket több bájtos kód írja le, az 'Á'-t valószínűleg 0xC381, 'á'-t 0xC3A1, stb. -Írni kell egy olyan függvényt, ami bájtonként sorra veszi a kiíratandó szöveget, az ASCII karaktereket változás továbbítja a drawChar() felé, míg egy beeső 0xC3, C5, ilyesmi esetén megnézi a következő bájtot is és a kettő alapján ad drawChar()-nak egy karakterkép-kódot, példánkban 'Á' vagyis 0xC381 esetén 128-at.
A 256 byte-os ASCII táblázatban már szerepelnek ékezetes karakterek, tehát byte-on belül marad minden (amit a drawchar rutin le is kezel). Két út van (mindkettőhöz meg kell szerkeszteni a magyar ékezetes karaktereket, de első esetben nem kell külön programozni):
1. A magyar karaktereket defíniálod az ASCII táblázat szerinti helyükre (pl. 'Á' helye dec 193), a tömb többi elemét dec 128-tól az utolsó magyar ékezetes karakterig teli kell írni nullával, a tömb az utolsó magyar ékezetes karakternél befejezhető. Ez eszi a memóriát, de nyugodtan használható a message[]="BOGLÁRKA ", le fogja kezelni, nem kell pluszban programozni semmit. 2. tetszőleges sorrendben defíniálod a magyar karaktereket a tömbben a dec 128-as helyről, és a drwachar() rutinban az elején egy if vagy switch/case utasítássorral beállítod a megfelelő indexet. Így kisebb lesz a tömb, nem tartalmaz felesleges adatokat, de programozni kell. Előbbi példánál maradva: 'Á' defíniálva a tömbben a 128-as helyre, a drwachar rutinba pedig beírod: if (n==193) n=128; A többi karakterrel ugyanígy eljársz. Ha van még memória, én az első változatot használnám, később is jól jöhet..
köszönöm a sok értékes hozzászólást, tanácsot ezek mind jó kiindulási alapot adnak
Üdv! segítséget szeretnék kérni írtam egy félkész programot, de ott elakadtam, hogy milliszekundumot átkellene alakítani órába percbe és másodpercbe ebben szeretnék segítséget kérni senkise nézze eddig nagyon a programot még nincsnagyon kész
A hozzászólás módosítva: Máj 24, 2016
Ez jó köszönöm szépen! Az a baj, hogyha az intervalba 100000-et töltök akkor a kijelzőn - számok jelennek meg, ha pedig unsigned long-al int helyett akkorse jó a számlálás milehet itt a baj?
Ne töltsé bele 100000-et
Int érték határ Használj inkább: UnsignedLongot unsigned long time = millis(); A hozzászólás módosítva: Máj 24, 2016
Köszönöm! Még egy kérdés, ha megengeded, miért van az, hogy ha a másodperc 10 alá megy akkor nem 09-08-07 stb így folytatja, hanem 90-80-70?
A tizes nullája bent maradt a kijelzőben, és mivel utána egyjegyű számokat íratsz ki, ez lesz az eredmény.
Próbáld ilyen formában a kiíratást:
A hozzászólás módosítva: Máj 24, 2016
Üdv. elakadtam, nem tudom az ékezetes karaktereket megszerkeszteni, ehhez szeretnék segítséget kérni
Nézzük például a K betűt. Ez a 16 bájt van hozzá definiálva:
Minden bájt egy sort jelent. Ha kirajzolod egymás alá a bitmintákat, már látod is a K betűt:
Ez alapján remélem, érthető, hogyan tudsz saját karaktereket szerkeszteni. A hozzászólás módosítva: Máj 25, 2016
Üdv. Köszönöm, eddig teljesen érthető amit levezettél, ebből hogyan olvasható, szerkeszthető
a felső táblázat.
Ezek az első 3 sor 00 -k mert mindeütt pont van a 4dik sor E6(hex) az nem áll másból mint a felső 4 bit hexa E-t adja ki alsó 4 bit pedig a hexa 6ot szét választva a 8 bit / pixel a 4dik sorban : (ahol X van az 1 ahol . van az 0) felső 4bit alsó 4bit 1110 * 0110 1110 ---> 8+4+2 = 14(dec) -->> E (hex) 0110 ---> 4+2 = 6 (dec) ---> 6 (hex) ezért van a 4dik helyen 0xE6 hexa érték a karaktert leíró adattáblában. Így már érthető ? A hozzászólás módosítva: Máj 25, 2016
Az egyszerűbb hexadecimális átváltáshoz szét választjuk alsó és felső 4 - 4 bitre a 8 bites számot és külön külön fél bájtonként , elvégezzük a hexadecimális konvertálást. A hozzászólás módosítva: Máj 25, 2016
Üdv. még nem értem, hogy az 5-k sorban lévő számsort honnan származtatjuk /ez minden 8 bites rendszerre igaz :
akkor nézzük újra : felső 4 bit : 0110 --->> 0+4+2+0 = 6 dec -->> 6 hex alsó 4 bit : 0110 --->> 0+4+2+0 = 6 dec -->> 6 hex (0 mert pont van azon a biten 1 mert X van azon a biten) ezért lesz a 0x66 a 5. sorban / pozícióban Folytassam ? Van még vissza 10 sor vagy meg tudod magadtól is csinálni a binárisról hexadecimális átváltásokat most már ?! A hozzászólás módosítva: Máj 25, 2016
számrendszerek közti átváltás :
16os hexadecimális számrendszer alapjai 2es bináris számrendszerről írások A 8-as oktális számrendszerről uController programozáshoz némi bináris , decimális, hexadecimális , oktális számrendszerek ismerete is szükséges. A hozzászólás módosítva: Máj 25, 2016
decimálisról hexadecimálisra történő átváltás már megy, 5-k sorra /8, 4, 2, 1/ sikerült rájönnöm az valójában a 2 hatványa
köszönöm, ezt a szájbarágós, érthető levezetést
Ha nem akarsz magad számolgatni, a windows számológép (calculator) átváltja helyetted is...
(Mindent mindenre) A hozzászólás módosítva: Máj 25, 2016
Ne vedd magadra, nem személyeskedésből írom, de azért hajmeresztő, hogy valaki programozni akar és gőze sincs a binális és hexa számokról. Basszus itt tart már az oktatás színvonala?
Oké, hogy már nem kell gépikódban programozni és regisztereket shiftelgetni, de azért még mindig így működik a számítógép és ahogy látható még mindig nem árt tisztába lenni az alapokkal, ha az ember meg akar érteni dolgokat. Mondjuk egy logikai AND / OR / XOR enélkül igencsak nehézkesen fogható fel. Vagy akár egy html RGB színkódot.
Az nem jó mert akkor soha se fog rajta gondolkodni és soha nem is fogja megérteni.
Ha ma az iskolában a nebulókkal programozás címszó alatt hexadecimális / bináris számrendszereket nyomnának, hát nem győzném szapulni a tanárokat, hogy a 80-as évek már elmúltak.
Az informatika hatalmas részéről kiszorult a hexadecimális/bináris aritmetika. Az int32 a problémák 99%-ára elég, de manapság már az int64 megy, mert 64 bites rendszerek vannak szinte mindenütt. Elmúlt az a kor, hogy tudni kellett, hogy mennyi az int felső határa. Fogalmam sincs, internet nélkül meg nem mondom, hogy mekkora a legnagyobb szám, amit az int32/64 lefed. Nem is érdekel. A modern szoftverfejlesztésben (java, C#, C++, javascript,...) mi a fenét kezdesz egy hexadecimális számmal? Milyen problémát tudsz vele megoldani? A fenti bináris kijelzős feladat megoldása PC-n az, hogy felinstallálod a TTF-et, amit grafikusok megrajzoltak, meghívod a metódust, amelyik kirajzolja a képernyőre és kész. Arduino alatt pont azért használsz hexadecimális aritmetikát, amiért C64-en is használtak: kicsi int-méret, nincsenek előre megírt könyvtárak, amik feleslegessé teszik tudnod, hogy melyik regiszter mit csinál, satöbbi. Vedd észre, hogy a hexadecimális aritmetika elavult, kizárólag mikrovezérlők alatt maradt némi értelme, de ott sem túl sokáig lesz már. A mikrovezérlők szépen lassan térnek át 32 bites processzorokra, beépített ROM függvényekkel (ESP8266, Raspberry Pi), ahol nincs többé regiszter írogatás, hanem meghívod, hogy I2C szolgát szeretnél elindítani. Hexadecimális számoknak meg jóformán semmi értelme, decimálisan is megadhatod őket, ha úgy jobban tetszik. A hozzászólás módosítva: Máj 25, 2016
... És így múlik el a világ dicsősége ... ... mindenki a (fél)kész osztályokat eszi, nem kap mást.
Aztán csodálkozunk , hogy a sokadik gigaherzes sokadik magos procin se fut / bútol be a rendszer gyorsabban mint a 2 lemezes XT-s időkben
Arról nem is beszélve, hogy már egy nyomorult oprendszernek is 10GB hely kell a háttértáron...
Senki nem fizeti nekem meg, hogy kis kódot írjak. Lehetne feleakkora ötször gyorsabb kód, sokkal több munkával.
A munkabérem magasabb, mint 1TB merevlemez ára, ezért elegánsan legyint mindenki, ha nagy kódot írok, vagy 1MB memóriát ideiglenesen lefoglalok. Arduino alatt az idő zöme azzal megy el, hogy a 2k RAM elég legyen. Az emberi munka is pénz, nem is kevés. A hozzászólás módosítva: Máj 25, 2016
Egyáltalán nem is rád gondoltam...
A hozzászólás módosítva: Máj 25, 2016
|
Bejelentkezés
Hirdetés |