Fórum témák

» Több friss téma
Fórum » Folyamatábrás mikrokontroller programozás Flowcode-dal
Lapozás: OK   192 / 361
(#) NyariG hozzászólása Ápr 26, 2014 /
 
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?
(#) NyariG válasza (Felhasználó 15355) hozzászólására (») Ápr 26, 2014 /
 
Szuper működik! azt tudod hogy sor vége kocsi vissza karaktert hogy tudok küldeni?
(#) frekivalto hozzászólása Ápr 26, 2014 /
 
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...
(#) rammeradrian hozzászólása Ápr 26, 2014 /
 
Ü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...
(#) Bakman válasza frekivalto hozzászólására (») Ápr 26, 2014 /
 
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.

Shot_720.jpg
    
(#) Bakman válasza rammeradrian hozzászólására (») Ápr 26, 2014 /
 
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.
(#) frekivalto válasza Bakman hozzászólására (») Ápr 26, 2014 /
 
Köszi, megpróbálom, és jelzek.
(#) rammeradrian válasza Bakman hozzászólására (») Ápr 26, 2014 /
 
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!
(#) rammeradrian válasza Bakman hozzászólására (») Ápr 26, 2014 /
 
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?
(#) Bakman válasza rammeradrian hozzászólására (») Ápr 26, 2014 /
 
Ez teljes mértékben attól függ, milyen szenzortól jön az adat.
(#) rammeradrian válasza Bakman hozzászólására (») Ápr 26, 2014 /
 
Idézet:
„egy MCP9700-as hőmérővel mérem a hőfokot”
(#) frekivalto válasza Bakman hozzászólására (») Ápr 26, 2014 /
 
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ó...
(#) frekivalto válasza rammeradrian hozzászólására (») Ápr 26, 2014 /
 
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
(#) Bakman válasza frekivalto hozzászólására (») Á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
(#) frekivalto válasza Bakman hozzászólására (») Á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.
(#) Bakman válasza frekivalto hozzászólására (») Ápr 26, 2014 /
 
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.
(#) frekivalto válasza Bakman hozzászólására (») Ápr 26, 2014 /
 
Nagy kár érte, pedig jó lett volna...
Köszönöm a segítséget.
(#) frekivalto válasza Bakman hozzászólására (») Ápr 26, 2014 /
 
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
(#) Bakman válasza frekivalto hozzászólására (») Á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.

Shot_721.jpg
    
(#) frekivalto válasza Bakman hozzászólására (») Ápr 26, 2014 /
 
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...?
(#) Bakman válasza frekivalto hozzászólására (») Ápr 26, 2014 /
 
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
(#) bodgabo hozzászólása Á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.
(#) kokozo válasza bodgabo hozzászólására (») Ápr 26, 2014 /
 
Szia!
Mid$(string, start, size)

stringmod.fcf
    
(#) Bakman válasza bodgabo hozzászólására (») Ápr 26, 2014 /
 
Mid és StringToInt függvények.
A hozzászólás módosítva: Ápr 26, 2014
(#) frekivalto válasza Bakman hozzászólására (») Á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.
(#) frekivalto hozzászólása Ápr 28, 2014 /
 
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?
(#) watt válasza frekivalto hozzászólására (») Ápr 28, 2014 /
 
"Timer2 beállításnál" Ez mit jelent?
(#) frekivalto válasza watt hozzászólására (») Ápr 28, 2014 /
 
Ezt jelenti:
A többi beállítás pedig:
A hozzászólás módosítva: Ápr 28, 2014
(#) watt válasza frekivalto hozzászólására (») Ápr 28, 2014 /
 
Szia! Ebben az esetben tényleg eléggé szór a kristály.
(#) Bakman válasza frekivalto hozzászólására (») Ápr 28, 2014 /
 
Ha az Encoder megszakítást (vagy egyszerűen az egész Encoder részt) letiltod, nem jobb a helyzet?
Következő: »»   192 / 361
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