Fórum témák
» Több friss téma |
Hogyan kell megcsinálni, hogy egy gombnyomással tudjak ki-be kapcsolni?
Már tele van a monitor, de még mindig nem jöttem rá... a be már megy, de nem jövök rá az istennek se, hogy hogy megy a kikapcsolás
Sziasztok.
Még új vagyok ebben a topikban -ha már itt tartunk a programozásban is- és Simpi ajánlotta ezt a programot. Kicsit szkeptikus voltam eleinte, de Simpi segítségével már elég jól sikerült/-ül átlátni a környezetet. Szerencsére ma élőben kitudtam próbálni azt, amit a programban szimulációjában már látni lehetett. Természetesen elsőre el sem indult az alkalmazás, mert az MCRL láb éppen JÚJPISZI módban volt, az az sehová nem volt bekötve. Miután kapott egy 10k -s ellenállatot 5VDD -re, egyből magához tért. Ezúton is köszönetet szeretnék mondani a sok segítségért Simpinek. Konkrétan tegnap este kezdtem el az ismerkedést a programmal, és mostanra már egy bárhogyan variálható futófényt sikerült kreálni, mind ezt egy "két ledes egy kapcsolós" projektből. A program rém egyszerű, és ezért is lett egy hangyányit hosszú (nem shiftelem a biteket, hanem egymás után ki-be kapcsolgatom). A programot mellékeltem hátha valaki tovább tudja gondolni, fejleszteni. A program működése a következő: Amíg a bekapcsoló gomb ki van kapcsolva addig a sárga SLEEP LED folyamatosan villog. Ha a bekapcsoló gombot bekapcsolom, akkor a sárga LED kialszik, és a 4 LED -es futófény elindul. A következő kapcsolóval lehet a futófény irányát változtatni, a másikkal meg oda-vissza futófényre beállítani. (A SLEEP LED azért került bele a rendszerbe, mert a PIC az szó szerint kukázott, bontott volt, és tudtam, hogy az a bitje, jó volt. Tudtam, ha a táp ráadásakor elkezd villogni akkor tudom, hogy a program jó(feltételezve, hogy a B port esetleg teljesen meg van ölve, ha a 4 LED egyike sem világítana egy pillanatra). Az alkalmazásról meg itt látható élőben egy videó. Kérek mindenkit aki ad egy kicsit az esztétikára, a pontosságra az ne kövezzen meg, egyszerűen csak így tudtam megoldani, az az egy CD tokra készítettem el, kétoldalasra a demó panelt.
Nem rossz. Tetszik.
Idézet: „A programot mellékeltem hátha valaki tovább tudja gondolni, fejleszteni.” Annyival tovább lehetne gondolni hogy a kapcsolókat kicserélni gombokra.
Legközelebb majd az jön, egyenlőre a tudományom eddig tart.
De nagyszerűbb aligha :nemtudom: köszííííí
Sziasztok!
Tovább fejlesztettem az akvárium világítást, még azzal a funkcióval kibővítve, hogy kapott egy nyomógombot, amivel akkor lehet ki-be kapcsolni, ha amúgy éppen nem világítana. Leírom a működését pontosan, mert Simpitől megint kikapok, hogy jósolni kell ; ADC0-on méri a feszültséget (fotodióda az ablakban) és ha eléri a küszöbszintet és ott is marad egy pár másodpercig (villámvédelem), akkor bekapcsol (fölkel a nap), míg a napocska világít, addig aktív marad a kimenet, mikor lemegy a nap, akkor pedig rászámol még kb két órát és utána kapcsol ki. Ez már nagyon jól működik /köszi a segítséget/, de a ki-be kapcsoló nyomógombbal gondjaim akadtak. A főfüggvénybe próbáltam meghívni makró formájában, ha a led éppen nem világít, de valamiért nem megy... Illetve vagy a nyomógombot kezeli, vagy az adc-t mit rontok el?
Opsz, rosszat tettem föl.
Az előző tele van butasággal, azt ne nézzétek!
De leírtam szépen, csak most, csak itt, csak Neked!
Ok, megpróbálom így.
Akkor jól sejtem, hogy nem makróként kéne kezelni?
Szia. Megnéztem hogy mit csináltál. Egy ciklus miatt nem kapcsol be a led. Átnéztem a gombkezelésed. Nagyából értem. Én másmilyen gombkezelést használok. Csináltam egy másik gomb kezelést. Annyi baja van hogy a gombot legalább 1 másodpercig le kell nyomni hogy bekapcsoljon.
Szia. A flowcode tud ledmátrixot kezelni? Mert nem találtam benne ilyet. De csináltam egyet. Remélem működni fog majd.
Nekem egy 4*4-es kellett volna. De megoldottam. Amúgy ez a 8*4-eset hol találom.
Bocsi. Elnéztem. Rosszat raktam fel. Itt a jó.
Sziasztok!
Adott egy feltételes elágazás, ha a bemenetünkre jel érkezik az igen ágon halad a program, és egy ledet 5másodpercre kigyújt, aztán el kellene aludnia a lednek, míg meg nem szűnik a jel és újra nem jön... mert ugye egy vételen ciklusban vagyunk és számolja ugyan az 5másodpercet, de újra is indul Nos, az lenne a kérdés, ezt hogyan tudom megcsinálni?
Egyszerű: végtelen ciklusba bele kell rakni a gomb beolvasását és az elágadzást. Igen ágban a led bekapcsolása és az 5s késleltetés. A nem ágban pedig a led kikapcsolás.
Bocsi. Rosszul értelmeztem. De akkor így már jó?
Igazából nem csináltam meg. Flowcode-ban működött. De hogy a valóságban mit csinált volna.
Ha a picnek a belső óráját használom és mondjuk egy 60perces időzítőt csinálok késleltetéssel akkor ott mekkora lehet az eltérés a 60perchez képes? Tehát menyire lesz az pontos?
Akkor 10 óránál 6 percet csúszik. Az nem is olyan sok. Mármint amire nekem kell.
Simpi
Próbálgatom ez a flowcode ot. Csináltam egy órát. Lefordítottam asm be. MPLAB pickit progival feltöltöttem a 877Aba de semmit nem jelez ki. Nézz rá légy szíves, hogy a program rossz, vagy a fordítási beállítások, LCD kezelés stb más mint a parsic-ban.(Bár RB0-5 ig ugyan az a beállítást találtam)
Köszi.
Az órajelet nem találtam hol kell beállítani. Most jó. Hogyan tudom jobbra igazítani, arra még nem jöttem rá. Vagyis mikor még csak 1-2-3 amit kiír akkor ne bal oldalt írja ki hanem, _1-_2-_3 stb... Vagy 01-02-03.
Ez rendben... működik az óra.
(Jó ez a program... csak máshogy kell gondolkozni mint Parsic-nál) Új ötlet. Megszámolni 100ms alatt beérkező jelek számát. A megszakításnál, a TMR0 nál próbálkozok, de nem jön össze. Nincs ötletem, példát se találtam rá.... A számláló része ok... feltételes elágazás, a Port A1 en beteszi változóba és hozzá adogat 1et. De hogy az idő intervallumot hogy határozom meg arra nem jövök rá.
Akkor ha jól értem, ha megszakítást csinálok, akkor az nem külön folyamatként fut le, hanem egy időben a program többi részével?
Ha így van akkor rém egyszerű, mert a tmr(0) val csinálok egy makrót. Amiben lesz egy ciklus, amiben egy feltételk, leosztva 250Ms ra a Hz-et. És ha eléri a megadott Hz-t, akkor egy reset változónak 1es értéket ad. A fő függvényben pedig szintén lesz egy ciklus, amiben a A1 portot vizsgálja, hogy jön be jel vagy nem, ha igen akkor RPM=RPM+1, és önzáró ciklus, hogy A1 port 0-ra eséséig ne haladjon tovább(nehogy 2szer értelmezze ugyan azt a jelet), a nem ágba pedig semmi. A külső fő ciklus pedig reset=1 értékig ismétli magát amit a timerből kap meg mikor eléri a 250ms ot. Amikor kilép a fő ciklusból, reset=0, RPM=RPM*60 és lcd kiíratások, majd vissza(goto A) a timer utáni fő ciklus kezdéshez. Kész és máris méri a fordulatszámot De ez csak akkor igaz, ha a logika szerint a TMR0 megszakításos makróba téve a háttérben fut, és közben halad a főprogram. |
Bejelentkezés
Hirdetés |