Én nem értem a feladatot: miért kell kézzel +/- 20 pixelt mozgatni egy képet? És csak egyik tengely mentén, pl. vízszintesen vagy másként is? Ha beégés elleni védelem akar lenni, amennyiben szükség van rá, az automatikusan működik; időnként módosítja a kép pozícióját egy kód. Esetleg a kép nagyobb, mint a kijelző, és ez az elképzelés alapja?
Szia, Nos, alapvetően a forgó jeladós (ismertebb nevén rotary encoder) megoldás sem rossz éppenséggel, de sokszor van vele rengeteg szívás. Az, hogy melyik jobb, pár kérdés segít eldönteni. Elég/jobb a potméter, ha: -- adott helyzetben ki-bekapcsolva a rendszert mindig ugyanakkora eltolást használ, -- kevés szabad bemeneted van (mondjuk ez 2560-nál nem szempont),
-- szempont a (végtelenül egyszerű) kód.
Minden más esetre jobb az encoder.
A megvalósítás attól függ, hogy melyiket választod. Az analóg bemenet kezeléséhez nem kell semmi trükk, AnalogRead() függvénnyel beolvasod az éppen aktuális állást, ráeresztesz egy skálázást (map() függvény), majd az eredménnyel eltolod a kijelzést.
Enkóderrel kell egy jól működő könyvtárat találni (nem lesz annyira egyszerű), ezt interpretálnod kell a saját kódodba úgy, hogy bent hagyod a megszakításokat, és az encoder fordulás irányát és a keletkező eredményt használod fel az eltolásra. Ezt számottevően komplikáltabb megcsinálni, de mondjuk 3-4 óra alatt elvileg ez is megvan, hacsak nem ultra szar encodered van -- u.i.: kínából az lesz, mert valószerűtlennek tartom, hogy egy 70 000 forintos omron optikai encoderrel fogsz kezdeni a célra.
Maga az eltolás nagy valószínűséggel a TFT kijelző működtető könyvtárának egyik függvényével lesz megoldható. -- Megnéztem és nem. A konkrét megvalósításon (a jelenlegi állapoton) nem rágtam át magam, de nagy valószínűséggel neked kell majd a beolvasás és a kiírás között matekoznod a fenti vizsgálat eredményéül kapott értékkel. Ez azért több órás/napos játék, hogy végére érjen az ember a teljes megértésnek -- ezért sem kezdek neki --, de nem lehetetlen feladat.
Javaslom, hogy bontsd részleteire, előbb oldd meg a kijelzést, aztán a kamera működését, aztán a kijelzést plusz az eltolást (attól függően, hogy a kamerakép kijelzése milyen megoldással van kódolva), majd rakd össze az egészet.
Arduinó Mega 2560 val szeretnék vezérelni egy TFT kijelzőt. A problémám az, hogy potméterrel tervezem a kijelzőn megjelenő képet jobbra-balra (20 pixellel) mozgatni A program írása a gond. Tudnátok-e ebben segíteni egy-két ötlettel, tanáccsal? A kijelző: 1,8 hüvelykes SPI TFT LCD kijelző modul ST7735 128x160 A project: https://www.youtube.com/watch?v=Dp3RMb0e1eA&ab_channel=Indrek Mindezt már megépítettem, csak a potméter kódját nem tudom beilleszteni a fő kódba.
Előszeretettel használom a BuePill paneleket. Ezeken STM32F103C8T6 uC van, és a chip hiány előtt 2-3 dollárért adták őket. Keil fejlesztő rendszerrel, a HAL libraryvel programozom, néha pedig Arduinó környezetben is, ez esetben a PlatformIO plugines VSC-vel. Az Arduino-t akkor kezdtem használni, mikor kínai spi lcd-t akartam használni. Túl sok idő lett volna a meghajtó adatlapja alapján megírni a kódot, bonyolult, rengeteg regisztert kell felhúzni az lcd vezérlőben. Arduinoban van kész library. Később kissé módosítottam a kódot, hogy Keil-lel is menjen.
Évek óta kizárólag hamisított uC-vel lehet kapni a BluePillt. Legkevesebb ötféle hamisított gyártmány létezik. :-)
Ezek közül a Gigabyte egyenértékű, kicsit gyorsabb is, a többiben van olyan, amelynek nem minden perifériája kompatibilis.
Szerencsére a legtöbb igen, de pl. a DMA némelyikben más.
Ebbe nemrég bele is botlottam. Csináltam magamnak egy morse gyakorlót. Úgy működik, hogy memóriába betölti a szinusz görbét, külön a felfutó és lefutó szakaszokat, majd DMA-vak kidarálja egy PWM módban működő timerre. Mivel PWM, egyszerűen két power fettel rá lehet küldeni a hangszóróra, nem kell hangerősítő ic se. Megírtam, próbapanelen kipróbáltam, szép hangja van, nem kopog, minden jó. Pont úgy szól, mint a vevőben a morse.
Fogtam egy boardot, beépítettem a 3d printelt dobozba a hangszóróval együtt, beletöltöttem a firmware-t. Nem működött. Debuggoltam, nem megy a DMA. Más típusú hamisítvány, mint a próbapanelen. :-) Átírtam DMA helyett interruptos megoldásra, úgy jó.
Azért vannak furmányos trükkök is. Pl. az eredeti és a nem eredeti Due ugyanazon a szalagon készül. Amelyik "leesik" a szalagról, azt a büdös életbe nem tudod szóra bírni, hacsak el nem látogatsz valamelyik külföldi Arduino fórumra, mert az itthoniak irigységből vagy mert a disztributor üzemelteti, csak annyit mondanak, ha kínait vettél, így jártál. Tehát a lényeg az, hogy nem kerül bele firmware és nem működik. A külföldiek megadják a kínai linket, ami a Due firmware-e van és lám, máris működik vele jelen esetben a TFT képernyő.
A Megának a kommunikációs, analóg, PWM és egyéb portjai mellett van még 52 digitális portja. Ezek közül ki lehet választani, melyik működjön ki-, ill. bemenetként. De ez már az ősidők óta így van. Arra kell vigyázni, hogy hiába húzod le szoftveresen "L" szintre, mindig lebegni fog valahol az "L" és a "H" szint között. Egyszerű a megoldás, a kiválasztott portot egy ellenállással le-, vagy fel kell húzni a megfelelő szintre. Nem kell forrasztgatni a panelen, hiszen kaphatók prototípus panelek, akár szerelten, akár kit-ben és a huzalozást ezeken el lehet végezni, majd a csapokkal rácuppantani az adott Arduinora.
Debug valóban nincs, viszont futáskori hibánál kiírja az alsó sorba a hibahelyet vagy hibahelyeket, a hibás sor vagy csatolt fájl sorszámával.
Van néhány programom, ami a csatolt fájlokkal együtt több MB-nyi, de az elkészült szoftver, amit az Arduinora feltöltesz csak néhány bájt esetleg néhány kilobájt .hex fájl.
Hibakeresésre futtatáskor pont megfelel a soros monitor.
A többi már csak fantázia kérdése, mint ahogy idekerültek egyes programok. Ha segítségre vagy driverre van szükség, a githubon mindent megtalálhatsz.
Rádióamatőr példákról egész könyvnyi jelent meg még a kezdeti időkben. Szerintem ma már egy egész könyvtárat megtöltene.
Általában home electric-ként adják elő és kézzel-lábbal tiltakoznak az ipari alkalmazása ellen. Ennek ellenére a cég elkészítette és a be is vezette a piacra az ipari robotvezérlő komplett mikrokontrollereit, értsd: PLC-ket.
Nálam mindig készenlétben van legalább 2db Mega arra az esetre, ha a már eléggé avittos alapanyag beszállító rendszerünk bemondaná az unalmast. Nem nagyon örültek neki a főnökeim, mondván, nem ért hozzá senki. Na, de akkor vegyetek PLC-t!, Ja, arra nincs pénzünk. Akkor viszont üzemzavar esetén én döntöm el, hogy széthányom-e a több száz reléből felépített rendszert, vagy bevetek néhány Arduinot, kik az bármilyen soros porton képesek kommunkálni egymással. Az én kedvencem az RS485 és bizonyított is csoffadt ócska működtető (SZRMKVM-J típusú) kábelen, több száz méter hosszon, hibamentesen.
Na, jó, elismerem, hogy megszállottja vagyok az Arduinonak, ez nálam az LSD. :-))
Mikor először megnéztem az eredeti fejlesztő környezetet, meghökkentem, hogy egy ennyire alkalmatlan, primitív vacakot hogyan tudott ilyen sok ember megkedvelni. Egy Led villogónál bonyolultabb programot valóságos művészet az eredeti környezetben megírni. Pl. egy sok fájlos forrásban kínszenvedés megkeresni, hogy hol deklaráltak egy változót, osztályt, bármit. Debuggolni pedig nemes egyszerűséggel nem lehet. Csak üzengetni soros porton. Olyan szintű visszelépésnek tűn, mint a Visual Studio után Commodore 64 basicben kódolni...
Viszont a rengeteg program, pl. a mindenféle driver, nagyon nagy érték. Ha egy szenzort, lcd-t vagy hasonlót akarok felhasználni, egyből megnézem, van-e kész Arduino driver. Kipróbálom, belenézek, hogy rendesen van-e megírva. (óriási különbségek vannak, profi munkák mellett végtelenül primitív kezdő vackok is). Ha jó, megment rengeteg munkától.
Mióta a PlatformIO támogatja az Arduino fordítást és debuggolást (ez egy plugin a VSC-hez), egész más szemmel nézem magát az Arduino rendszert is. Modern fejlesztői környezetben lehet sok ezer soros, számos fájlt tartalmazó programokat kezelni vele. Ha valaki nem ismerné, melegen ajánlom a PlatformIO-t. Simán fordítja az Arduino forráskódot, és rendesen lehet debuggolni is (nem csak üzengetni soros porton).
Az Arduino eredetileg 8 bites Avr processzorokhoz készült, de ma már ARM, ESP stb processzorokon is fut. Már nem sok értelme van a 8 biteseknek, némelyik Arm olcsóbb és összehasonlíthatatlanul fejlettebb.
Különösen az ESP-k esetében jön ki az Arduino előnye. Egzotikus processzor, jó hosszú idő lenne annyira megismerni, hogy C-ben hozzá lehessen nyúlni. Mi hol van, perifériák jellemzői, és így tovább. Az Arduino-val mindezt el lehet kerülni.
Viccnek nem rossz, walkie talkie Arduino vezérléssel. De ha már Arduino van benne, tovább is lehet gondolni az egészet bármilyen vezérlésre, 2,4 GHz-en.
Egy SDR vevő, ami mindenféle hókuszpókusz nélkül működik a rövidhullámú amatőr sávokban és nem kell hozzá számítógép. Mi sem természetesebb, hogy Arduinoval.
"1.1 – audio level 0-16 1.2 – LSB, USB, CW, FM, AM modulation 1.3 – audio passband filter width (2400Hz recommended for SSB) 1.4 – selection of the amateur band 160, 80, 60, 40, 30, 20, 17, 15, 12, 10 or 6m 1.5 – tuning step size 1.6 – selection of the VFO A or B generator 1.7 – RIT – do not use 1.8 – AGC automatic gain control on/off 1.9 – noise reduction level 0-8 1.10 – ATT input signal attenuator (use only 0 or -13dB) 1.11 – second digital ATT2 attenuator in 6 dB steps (use 2 or more) 1.12 – S-meter (signal meter) type 2.1 – Morse decoder on/off for CW emission 2.4 – 2.8 – do not use 3.1 – 3.5 – do not use 8.1 – for the calibration of the Si5351 generator"
Külön-külön és egyben - csomagban olcsóbban - is meg lehet venni az Arduinót, az SDR receiver shieldet, és a könyvet. Az oldalon letölthető doksik is rendelkezésre állnak.
Én szerencsére ajándékba kaptam egy szakajtóval az egyik KTV-internet szolgáltatótól. Egyéb paramétereit nem mértem meg, mert nem tartottam arra érdemesnek. Ment a kukába, úgy, ahogy volt. Abból is a zöld kukába, aminek sárga a teteje. :-))
Ha egy ilyen nevű táp jön veletek szembe, kerüljétek el! Üresjáratban még tud 5V-ot, utólag megmértem. De egy Uno-t, LCD kijelzőt és UH szenzort nem képes működtetni. A táp 3,4V-ra esik.