Fórum témák
» Több friss téma |
Most a következő a problémám: Egy értéket amit változtatok folyamatosan és int típusú, szeretnem az sd kártyán levő fájlba tárolni. De oda csak stringet enged. Hogy tudom a int számokat stringbe konvertálni?
Szuper működik! azt tudod hogy sor vége kocsi vissza karaktert hogy tudok küldeni?
Sziasztok.
LCD RAM írásnál, előre feltöltöm az egyedi karaktereket. Ha jól tudom, akkor maximálisan 8db egyedi karaktert lehet. Ha ezenfelül szeretnék még, akkor "menet közben" újra írhatóm a RAM-ot, de újraírás esetén sajnos egy CLEAR parancs is végrehajtódik. Ezt a CLEAR parancsot el lehet valahogy kerülni? Mert így amit előzőleg kiírattam, az törlődik, így nincs értelme a második írást használni...
Üdv!
Olyan kérdésem lenne, hogy szeretnék egy ventillátor fordulatszám szabályzót készíteni, egy meglévő programomba. Amit tudnia kéne, hogy egy MCP9700-as hőmérővel mérem a hőfokot. Ahogy néztem, 500mV-ot ad 0°C -on majd fokonként +10 mV. Ott akadtam el, hogy ha ADC-vel beolvasom az értéket, akkor hogy tudom elérni, azt, hogy 40~50%-os kitöltési tényezőm legyen 30°C-nál majd 40°C körül már 100%. A legnagyobb bajom, a változók típusai közti ugrások miatt van. Ha az ADC-t feszültségként olvasom, akkor float-ban tér vissza, de a kitöltési tényezőt byte-ban kell megadni...
LCD Dsiplay -> Egyedi kód -> RAM_Write
Innen töröld ki a Clear Display részt. Nem tudom, milyen eredményt hoz, próba cseresznye.
Olvasd ki az ADC értékét Byte-ban, majd ezzel számolj.
30 °C -> 800 mV -> 41 (Byte-ban kifelyezve) 40 °C -> 900 mV -> 46 (Byte-ban kifelyezve) Ha ADC értéke kissebb, mint 41 -> 50 % (128 Byte-ban) Ha ADC értéke nagyobb, mint 46 -> 100 % (255) A maradék értékekre lehet többágú elágazást is rakni, lévén kevés egyéb lehetőség van, vagy képlet: x=(ADC-41)*25+128 (x a PWM kitöltési tényezője byte-ban kifelyezve, 25 pedig 128/5 (megközelítőleg)). 10 bites ADC-vel finomabban lehet szabályozni a PWM kitöltési tényezőjét, ez mikrokontroller függő, hogy van-e benne egyáltalán ilyen.
Köszi, megpróbálom, és jelzek.
16F877- amin fut a program és azt szeretném kiegészíteni, és 10 bites AD-ja van. Mindjárt ki is próbálom. Köszi!
Na ez így működik, köszi! Még egy kérdés, hogy lehetne megoldani, hogy kiírjam a celsius értéket egy LCD-re?
Ez teljes mértékben attól függ, milyen szenzortól jön az adat.
Idézet: „egy MCP9700-as hőmérővel mérem a hőfokot”
Idézet: „LCD Dsiplay -> Egyedi kód -> RAM_Write Innen töröld ki a Clear Display részt. Nem tudom, milyen eredményt hoz, próba cseresznye. ” Sajnos nem jó...
ADC értékét beolvasod INTbe, majd számítás:
ADC_out = (ADC_real_temp_value - 102) / 2 ADC_temp_egyes = ADC_out MOD 10 ADC_temp_tizes = ADC_out MOD 100 / 10 majd kiíratod számként elsőnek a tizes, másodiknak az egyes értéket. A hozzászólás módosítva: Ápr 26, 2014
Mi a hibajelenség? Olvasgatom az LCD-k adatlapját, de nem találok benne utalást, hogy a CGRAM írása után törölni kellene a kijelzőt (vagy csak nem teljesen értem a leírtakat).
Esetleg próbáld ki úgy, hogy csak a 0x01 tartalmú sort törlöd. A hozzászólás módosítva: Ápr 26, 2014
Köszönöm, hogy foglalkozol vele...
Amikor mind a négy sort töröltem, akkor nem írt ki semmit, amit eddig kiírt azt se írta ki. Ha csak az első két sort akkor, nem változott semmi, 0-7-ig beírt egyedi karakterek megvoltak, utána amit beírtam 0-ásnak akkor megváltozott az eredeti is. Ha az utolsó két sort töröltem, akkor volt lcd törlés, és csak az új egyedi karaktert írta ki. Megpróbálom amit javasoltál.
Pár fórumon olvasgattam a témában, úgy tűnik, nem lehet megoldani. Ha átírod a CGRAM-ot, akkor az a kijelzőn azonnal megjelenik.
Nagy kár érte, pedig jó lett volna...
Köszönöm a segítséget.
Azt olvastam hogy 8 db egyedi karaktert lehet írni, ez igaz?
Természetesen HD44780-as kijelzőre. A hozzászólás módosítva: Ápr 26, 2014
Kicsit fura a kérdésed, mivel eddig erről volt szó. Igen, 8 egyedi karaktert lehet megtanítani a kijelzővel, ami addig marad benne, amíg ki nem kapcsolod. A Flowcode-ban a "RAM_írás" parancs szolgál erre (adalapokon CGRAM [Character Generator RAM]). Az első érték (nIdx) a karakter helye 0-7 -ig, a többi pedig maga a karakter (lásd melléklet). A képpontokat binárisan összeadod, majd decimális számra váltod.
Visszahívásnál a PrintASCII parancs kell, ahol a karakter indexét kell megadnod.
Igen ezt tudtam. Így készült el a programom. Viszont néha jól jönne több egyedi karakter, de egyszerre csak nyolcat tudok kiíratni, mert utána ha átírom a CGRAM-ot, akkor törli az előzőleg kiírt egyedi karaktereket.
Ezért kérdeztem csak, hogy max. 8-at lehet beírni...?
Ezt kérdezted:
Idézet: „Azt olvastam hogy 8 db egyedi karaktert lehet írni, ez igaz?” Nincs benne a maximum, ezért értettem félre a kérdést. A netes leírások alapján igen, max. 8 egyedi karaktert lehet eltárolni a kijelzőben. Több helyen azt olvasni, hogy ha a már a kijelzőre kiírt egyedi karakter CGRAM tartalmát megváltoztatod, akkor a kijelzőn is megváltozik a karakter. A szinte mindenhol kapható 1602-es kijelzők többnyire Angol-Japán betűkészlettel rendelkeznek, de pl a HEStore-ban kapható BC-1602 AYPLEH kijelzőben Angol-Európai készlet van (adatlap 3. oldal). Már ha a magyar karakterekkel vagy szűkében. Sőt, ebben a kijelzőben egyszerre három karaktertábla van, ki lehet választani, melyiket akarod használni (az egyik megrendelőm kért ilyen kijelzőt, nem mellesleg nagyon szépek a karakterek a "hagyományos" kijelzőkhöz képest). Valahol azt olvastam, lehet egyedi karakterkészlettel is kérni kijelzőt, de minimum 100 vagy 1000 darabot kell venned, gondolom ez nem opció. A hozzászólás módosítva: Ápr 26, 2014
Sziasztok!
Adat manipulálásba gabalyodtam bele. Soros kommunikációval veszek egy 9 Byte-os adatcsomagot ami ASCII-ban így néz ki: Wxxx zzz(cr), és egy string típusú változóban tárolom. Az első W, a középső szóköz és az utolsó "kocsivissza" karakter mindig ugyanaz, az xxx és a zzz pedig három jegyű számok, amiket szeretnék külön, integer típusú változókba tenni (ezeket szeretném tovább használni).Már úgy elbonyolítottam, hogy át se látom már és persze nem is működik.
Szia!
Mid$(string, start, size)
Mid és StringToInt függvények.
A hozzászólás módosítva: Ápr 26, 2014
Köszönöm.
Nem ékezetes betűkkel vagyok hiányba, csak egyedi karaktereket szerettem volna többet használni. Inverz karakterek, alákúzott karakterek, stb... Lcd kijelzőből jelenleg 20*4 használok, amit javasoltál megnéztem, kisebb, de ki fogom majd próbáli.
Sziasztok.
Nem értem, hogy 16MHz quartz-al,Timer2 beállításnál megszakítási frekvencia 3125Hz. Ha eddig számolok, akkor 1 Hz-enként kellene léptetnie a változó értékét. A valóságban gyorsabb, így növelnem kellett a számlálási értéket, kb. 20%-al, hogy "pontos" időzítőt tudjak felhasználni. "A programon belüli időzítések "jók", jónak tűnnek. " Azért idézőjelben, mert 300ms-5sec. közötti időzítéseket használok. Mit nem veszek figyelembe? Miért nem 3125-ig kell számolni az 1 Hz-hez?
"Timer2 beállításnál" Ez mit jelent?
Ezt jelenti:
A többi beállítás pedig: A hozzászólás módosítva: Ápr 28, 2014
Szia! Ebben az esetben tényleg eléggé szór a kristály.
Ha az Encoder megszakítást (vagy egyszerűen az egész Encoder részt) letiltod, nem jobb a helyzet?
|
Bejelentkezés
Hirdetés |