A zip-nek semmi baja. Csomagold ki valahová, majd találsz benne egy LCD16x2 könyvtárat. Ezt másold be a libraries könyvtáradba. (Nem írtam le külön, de tényleg mókolni kellett vele, mert a zipben nem logikus helyen van.)
Nem biztos, hogy van értelme sok energiát fektetni a program átírásába. (Igaz, továbbra sem néztem még bele, válaszolni is két nap alatt sikerült...) Sok működő és ingyenes ELS projekt van a neten, esetleg érdemes olyanra vadászni, amelyik nem valami speckó alkatrészre épül.
Megoldodott részlegesen probléma. Nem hagyott a dolog nyugodni, egy másik program szerkezete adta az ötletet. Az ino elindítása után kéri, hogy könyvtáron belül legyen, ez rendben, de a többi alkönyvtárt nem hívja meg, kézzel kel bemásolni. Másolás után elindul, problémát az a francos kijelző okozza, mert a gyári zip, biztosan hibás, mert könyvárba történő meghívása után, azt mondja, nem tartalmaz megfelelő könyvtárat. Másik könyvárral (16x2) elindul, de egy ponton, amikor a gombokat keresi, elakad, mert ebben nincs gomb definiálva. Most már csak az a kérdés honnan lehet hibátlan OLIMEXINO-328-LCD16x2 könyvtárat letölteni, vagy <LiquidCrystal_I2C.h> re átalakítani . Még egyszer köszönöm a segítő szándékot.
Nekünk az UNO-s menetvágóban, bár Assemblerben írt programmal, az 1200-as fordulaton az 1000-es encodert le tudja kezelni úgy, hogy közben marad egy kis ideje a kijelzőre is. Ha jól számolom, akkor ez 80 kHz. C nyelven nyilván nem tudja ezt a sebességet produkálni.
Nem mélyedtem el a programban, még felületesen sem. A múltkorában viszont találkoztam egy olyan enkóder könyvtárral, ami állítólag kb. 30 kHz-ig bírja UNO esetében.
Az enkódert általában nem szokás lekérdezni, hanem olyan lábra van bekötve, amelyik tud megszakítást generálni és egy pici de hatékony kód lépteti a számlálót amerre kell. Egy felületesebben megírt változattal 20 kHz környékéig eljutottam pár éve, tehát ha jól van megcsinálva, akkor működhet.
Bemásoltam az általad ajánlottat,legalább tovább megy de a képen látott helyen ismét elakad. Még nem töltöttem lapra csak ellenőrzés módban futtattam. Az Olimexino-val már tegnap próbáltam. Jól láttad LiquidCrystal_I2C lcd(ADDRESS_LCD,16,2); vel próbálom, egyszerűbb mint a sima 16x2.
Az LCD, amit használ az itt található. Ha csak nincs ilyen modulod, akkor nem érdemes ezzel küzdeni, mert a modul kezeli a gombokat is meg a képernyőt is egy PIC segítségével. Ugyanezen a lapon megtalálod a keresett library-t is, de van benne egy hiba. Az LCD16x2.cpp-ben az
Üdv, Amennyiben hibaüzenet is bemásoltad volna egyszerűbb lenne. Illetve az sem ártana tudni, hogy mely arduinot használod (uno,mega) Az LCD-t hogyan hajtod meg?
Tiszteletem a fórum társaknak. Program cserekerekek kiváltását hivatoot szolgálni, Segítséget szeretnék kérni, program futtatásában. Program LCD hibával tér vissza. Vagy négy különböző könyvtárat is letöltöttem, de egyiket sem fogadja el, zip könyvárba feltelepülnek. Sajnos a programozáshoz nem értek, csak használni tudom, ha hibátlan a program. Segítséget előre is köszönöm.
Csak még annyit, hogy pl olyan tiny-re amivel arduval már nem tudsz semmit, ezzel simán, mivel nem boot loader- en keresztül tolja le hanem a programozó készülék oda veri bele ahonnan a progi indul, tehát a bootloader helyére is tolhatsz progit!
Megemlítek neked egy általam használt alternatívát. Van egy olcsó Bascom névre hallgató elég hatékony kódot generáló basic fordító atmelekre. ( Ne egy sorszámozott goto-kal teli kódra gondolj) Magam évek óta használom, pár száz kbyteos forráskódú, szívhang elemző, vagy sok csatornás EEG programokat írtam ezzel. Jól kezeli a procik hw elemeit, illetve az időkritikus részeknél simán lehet ASM-be váltani. Az ingyenes demó verzióval kipróbálható.
Biztos úgy van, ahogy mondod, te vagy a szakértője a témának. Én nem tudom pontosan mennyi van (volt aki jóval száz fölöttiről beszélt a 16 bites verzióknal, mert a 8 biteseket nagyjából még én is átlátom), ezért is érdeklődtem itt. Egy biztos: a korszerűség, kényelem jegyében azt érzékelem, hogy szinte minden programozó manapság "menekül" az AVR ASM programozástól, mindenki valamilyen C fejlesztő rendszert/fordítót javasol, hogy ott kezdejek ezekkel foglalkozni. És azért egy ilyen AT Mega pdf adatlap még terjedelemre is elég "ijesztő", ha megnyitja az ember.
Na majd meglátjuk, majd jobban beleásom magam, aztán ha elakadok, majd jelentkezem. Köszi neked is az infókat.
Köszi, de attól félek, hogy ennek a huroknak meg a benne lévő utasítás ciklusoknak az össz eredő végrehajtási ideje nagyobb lesz így már mint 0.5 us.
Lehet, hogy át kéne tanulmányoznom idővel egy 16 bites AVR assembly utasításkészletét. Csak azt a tapasztaltam, akikkel beszélgettem már erről, hogy manapság már szinte senki (a profi programozók se) fejlesztenek ilyen AVR programokat ASM-ben, mert ezek már nem azzal a pár száz (hanem akár több ezer), viszonylag áttekinthető utasításkészlettel dolgoznak, mint egy 8 bites PIC, amiket eddig volt szerencsém programozgatni, és viszonylag átláthatók, megtanulhatók még nekem is, csak ugye "lassúak" nekem. Ez a 16 bites adatkezelésű AVR vagy (akár a PIC világ is) ilyen szinten egy más világ, nyilván a profi programozó se fog kínlódni manapság ASM-ben, inkább egy jó minőségű C fordítót használnak, ha még beleférnek a szűkös futási idő keretbe.
De valami trükje, csínja-bínja csak van ennek az AVR technikának, hiszen egy kis "vacak" Ardunió csak-csak elvezérelget egy 3D nyomtatót, néhány 10 kHz-es step/dir frekivel, ami azért nem annyira rossz eredő eredmény egy ilyen kis "kütyühöz" képest.
Úgy gondolom, hogy ha a fordító az PORTx regiszterekhez hozzáférést lát, 8 bites blokkokban fogja kezelni az adatokat.
Így ha egy 16 bites adatot írsz egy PORTx regiszterbe, akkor a fordító automatikusan fogja kezelni, akkor a 8 bites regiszterekhez tartozó két blokkot használ úgy, hogy az alsó 8 bitet a PORTx regiszter megfelelő bitjeire írja, majd az felső 8 bitet pedig a PORTx regiszter következő bitjeire.
Köszönöm a segítségedet, ezek nagyon biztatóak, ha tényleg így megvalósíthatók C-ből is. Bár az nagy kérdés, hogy ha egy port csak 8 bit szervezésű, szélességű, akkor mi lesz a 255 feletti adattal, ahogy Dezsoe ezt fekvetette. Én is azt gyanítom, hogy ehhez olyan Arduino típus kellene, ami 16 bites adat szervezésű, és képes egy utasításban a 0-FFFF adat mezőt "mozgatni" vagy azokkal műveletek végezni. Mert az időnyerés miatt pont ez a bajom ezekkel a 8 bites utasításokkal, hogy ezekből több kell, mint amikor ezt egy soros utasítás is elintézi.
PORTx regiszterre való közvetlen hivatkozással a leggyorsabb.
Példaként, ha a 16 bites adatot egy adott portra (például PORTB) kiírni:
void setup() { // port - kimenet DDRB = 0xFFFF; // minden bit kimenet }
void loop() { // 16 bites adatot a PORTB-re PORTB = 0xABCD; // Példa }
Ez az ABCD értéket írja ki a PORTB regiszterbe.
Például Arduino UNO 328P mikrovezérlője 16 MHz-es órajellel ketyeg.
Az PORTx regiszterekhez történő közvetlen hozzáférés egy utasításnak számít, ez elég gyors, így amíg egy 16 bites adatot ki tudsz írni a portra, mindössze egy utasításciklus hosszúságú lesz, azaz körülbelül 62.5 nanoszekundum. (1 / 16 000 000 másodperc)
Fontos, hogy ez azt feltételezi, hogy az adott művelet szinkronizált a processzor órajelével, és nincs egyéb időveszteség a környezetben.
A portok 8 bites szélességben írhatók/olvashatók. Nem kell hozzá feltétlenül lemenni assembly-ig, C-ből is elérhetőek. A mellékelt képen PA, PB, PC és PD kezdetű lábak tartoznak egy-egy 8 bites egységbe. Láthatóan nincs minden láb kiépítve, ahogy más mikrokontrollereknél is szokott lenni.
A profi hozzáértőktől, AVR programozóktól kérdezném: Van az Arduino utasítások közt olyan, ami csak egy-két sorból áll, és képes 8-16 bit szélességű adat Output műveletet egy porton végezni 0.5 mikrosec alatt?
Mert ahogy látom, szinte mindenütt csak ez a bitenkénti LED ki-be kapcsolgatási játék demo program van terítéken.
dtb | 1914
2024-02-27 22:00:15
[2001]
Egy másik verzió, ez egyszerűbb...
dtb | 1914
2024-02-27 21:54:40
[2000]
Elég régóta keresgéltem már egy power loss indikátor panelt, ma véletlenül beleszaladtam... Ha esetleg valaki készít magának, én is szívesen megvennék belőle 4-5 darabot! Igazából úgy lenne célszerű, hogy egy panelra kerülne a puffer kondi és a védő dióda, meg maga az indikátor rész is, és 4 vagy 5 csatlakozó lenne:5VIN, 5VOUT, 2 x GND, meg a Signal
kaqkk007 | 1563
2023-04-30 09:53:50
[1999]
Akkor átvert, gyárilag jár hozzá.Max veszel bele egyet és beleteszed.
Ha okos volt a klímás vagy a klíma előlapjának a belsejére vagy a távirányító elemfedelenének a belső oldalára ragasztotta , de az is lehet hogy a papírok közt van egy kicsi fehér dobozkában .
Elvileg benne van gyárilag a wifi stick , csak meg kell keresned a qr kódos matricát a papírok közt azt beolvasni a telóddal , letölteni az alkalmazást és rátanítani a wifidre
lassan itt a nyár és szeretném az itthoni klímát valahogy "okosítani", hogy ne kelljen állandó üzemben menni, de mire hazaérek már a megfelelő hőmérséklet fogadjon. Szóval nem tudom valaki már csinált-e ilyet, hogy ne kelljen újra feltalálnom a kereket. Ha nekem kell előlről megoldani, akkor is kérdezném, mi lenne a jobb megoldás. Egy arduinoval kiolvassam az eredeti távvezérlő kódjait, majd egy programban ezeket felhasználva készítsek egy "wifire csatlakozott távvezérlőt" amit távolról telefonon tudok kezelni, vagy alapból a klímába kössem be a vezérlést?