- Potřebný materiál
- Porozumění modulu joysticku:
- Kruhový diagram:
- Programování pro propojení joysticku:
- Zobrazení simulace:
- Hardware a práce:
Vstupní zařízení hrají zásadní roli ve všech projektech elektroniky. Tato vstupní zařízení pomáhají uživateli komunikovat s digitálním světem. Vstupní zařízení může být stejně jednoduché jako tlačítko nebo komplikované jako dotyková obrazovka; liší se podle požadavku projektu. V tomto tutoriálu se naučíme, jak propojit joystick s naším mikrokontrolérem PIC, joystick je skvělý způsob interakce s digitálním světem a téměř každý by jej používal pro hraní videoher v dospívání.
Joystick se může zdát jako sofistikované zařízení, ale ve skutečnosti je to jen kombinace dvou potenciometrů a tlačítka. Proto je také velmi snadné rozhraní s jakýmkoli MCU, pokud víme, jak používat funkci ADC daného MCU. Už jsme se naučili, jak používat ADC s PIC, a proto by to bylo jen řešení pro propojení Joysticku. Pro lidi, kteří si začínají vybírat, se doporučuje naučit se výše uvedený projekt ADC a také projekt LED Blinking Sequence Project, aby bylo snazší porozumět projektu.
Potřebný materiál
- PicKit 3 pro programování
- Modul Joy Stick
- PIC16F877A IC
- 40kolíkový držák IC
- Perf deska
- 20 MHz Crystal OSC
- Špendlíky Bergstik
- 220ohmový rezistor
- 5 LED diod libovolné barvy
- 1 pájecí souprava
- IC 7805
- 12V adaptér
- Připojovací vodiče
- Nepájivá deska
Porozumění modulu joysticku:
Joysticky jsou k dispozici v různých tvarech a velikostech. Typický modul Joystick je zobrazen na obrázku níže. Joystick není nic jiného než pár potenciometrů a tlačítko namontované přes inteligentní mechanické uspořádání. Potenciometr slouží ke sledování pohybu joysticku X a Y a tlačítko slouží ke snímání stisknutí joysticku. Oba potenciometry vydávají analogové napětí, které závisí na poloze joysticku. A můžeme získat směr pohybu interpretací těchto změn napětí pomocí nějakého mikrokontroléru. Dříve jsme propojovali Joystick s AVR, Joystick s Arduino a Raspberry Pi.
Před propojením jakéhokoli senzoru nebo modulu s mikrokontrolérem je důležité vědět, jak funguje. Zde má náš joystick 5 výstupních kolíků, z nichž dva jsou pro napájení a tři pro data. Modul by měl být napájen + 5V. Datové piny jsou pojmenovány jako VRX, VRY a SW.
Termín „VRX“ znamená variabilní napětí na ose X a termín „VRY“ znamená variabilní napětí v ose Y a „SW“ znamená spínač.
Když tedy pohybujeme joystickem doleva nebo doprava, hodnota napětí na VRX se bude lišit a když ji budeme měnit, bude se lišit VRY. Podobně, když s ním pohneme úhlopříčně, bude se lišit VRX i VRY. Když stiskneme spínač, SW kolík bude připojen k zemi. Níže uvedený obrázek vám pomůže lépe pochopit výstupní hodnoty
Kruhový diagram:
Nyní, když víme, jak Joystick funguje, můžeme dojít k závěru, že k přečtení všech tří datových pinů modulu Joystick budeme potřebovat dva ADC piny a jeden digitální vstupní pin. Kompletní schéma zapojení je zobrazeno na obrázku níže
Jak je vidět na schématu zapojení, místo joysticku jsme jako analogové napěťové vstupy a logický vstup pro spínač použili dva potenciometry RV1 a RV3. Dalo by se sledovat štítky napsané fialovou barvou, aby odpovídaly názvům kolíků a odpovídajícím způsobem propojily.
Pamatujte, že analogové piny jsou připojeny ke kanálům A0 a A1 a digitální přepínač je připojen k RB0. Jako výstup budeme mít připojeno také 5 LED světel, abychom mohli jedno svítit podle směru pohybu joysticku. Takže tyto výstupní piny jsou připojeny k PORTU C od RC0 po RC4. Jakmile posouváme naše obvodové schéma, můžeme pokračovat v programování, poté simulovat program na tomto obvodu, poté vytvořit obvod na prkénku a poté nahrát program na hardware. Pro lepší představu o mém hardwaru po provedení výše uvedených připojení je uvedeno níže
Programování pro propojení joysticku:
Program rozhraní joystick s PIC je jednoduchá a přímočará. Již víme, ke kterým pinům je Joystick připojen a jaké jsou jejich funkce, takže prostě musíme přečíst analogové napětí z pinů a podle toho ovládat výstupní LED.
Kompletní program, jak to udělat, je uveden na konci tohoto dokumentu, ale pro vysvětlení věcí rozbíjím kód na malé smysluplné úryvky níže.
Jako vždy je program spuštěn nastavením konfiguračních bitů, nebudeme moc diskutovat o nastavování konfiguračních bitů, protože jsme se to již naučili v projektu LED Blinking a je to stejné i pro tento projekt. Jakmile jsou nastaveny konfigurační bity, musíme v našem PIC definovat funkce ADC pro použití modulu ADC. Tyto funkce se také naučily v tutoriálu jak používat ADC s PIC. Poté musíme deklarovat, které piny jsou vstupy a které jsou výstupní piny. Zde je LED připojena k PORTC, takže jsou výstupními piny a spínací kolík joysticku je digitální vstupní kolík. K deklaraci stejné tedy používáme následující řádky:
// ***** I / O konfigurace **** // TRISC = 0X00; // PORT C se používá jako výstupní porty PORTC = 0X00; // MAke all pins low TRISB0 = 1; // Jako vstup se používá RB0 // *** Konec konfigurace I / O ** ///
Na ADC kolíky nemusí být definován jako vstupní piny, protože při použití funkce ADC bude přiřazen jako vstupní pin. Jakmile jsou kolíky jsou definovány, můžeme volat ADC_initialize funkce, které jsme definovali dříve. Tato funkce nastaví požadované registry ADC a připraví modul ADC.
ADC_Initialize (); // Konfigurace modulu ADC
Nyní vstoupíme do naší nekonečné smyčky while . Uvnitř této smyčky musíme sledovat hodnoty VRX, VRY a SW a na základě hodnot musíme kontrolovat výstup LED. Můžeme zahájit proces monitorování čtením analogového napětí VRX a VRY pomocí níže uvedených řádků
int joy_X = (ADC_Read (0)); // Přečtěte si osu X joysticku int joy_Y = (ADC_Read (1)); // Přečtěte si osu Y na joysticku
Tato linka bude ukládat hodnotu VRX a vry v proměnné joy_X a joy_Y resp. Funkce ADC_Read (0) znamená, že načítáme hodnotu ADC z kanálu 0, což je pin A0. Připojili jsme VRX a VRY k pinům A0 a A1, a tak čteme od 0 a 1.
Pokud si můžete vzpomenout z našeho tutoriálu ADC, víme, že čteme analogové napětí, PIC, které je digitálním zařízením, bude číst od 0 do 1023. Tato hodnota závisí na poloze modulu joysticku. Výše uvedený diagram štítků vám pomůže zjistit, jakou hodnotu můžete očekávat pro každou pozici joysticku.
Zde jsem použil mezní hodnotu 200 jako dolní mez a hodnotu 800 jako horní mez. Můžete použít cokoli chcete. Pojďme tedy použít tyto hodnoty a podle toho začneme svítit LED diodami. Abychom to mohli udělat, musíme porovnat hodnotu joy_X s předdefinovanými hodnotami pomocí smyčky IF a vytvořit LED piny vysoké nebo nízké, jak je znázorněno níže. Řádky komentářů vám pomohou lépe porozumět
if (joy_X <200) // Joy move up {RC0 = 0; RC1 = 1;} // Rozsvítí horní LED jinak, pokud (joy_X> 800) // Joy přesunuta dolů {RC0 = 1; RC1 = 0;} // Svítí spodní LED jinak // Pokud není pohnuto {RC0 = 0; RC1 = 0;} // Vypnutí obou LED
Můžeme podobně udělat totéž i pro hodnotu osy Y. Musíme pouze vyměnit proměnnou joy_X za joy_Y a také ovládat další dva piny LED, jak je znázorněno níže. Pokud joystickem nepohybujete, vypneme obě LED diody.
if (joy_Y <200) // Joy pohybuje doleva {RC2 = 0; RC3 = 1;} // Svítí vlevo LED jinak if (joy_Y> 800) // Joy přesunuta doprava {RC2 = 1; RC3 = 0;} // Rozsvítí se pravá LED jinde // Pokud se nepřesune {RC2 = 0; RC3 = 0;} // Vypněte obě LED
Nyní máme ještě jednu poslední věc, kterou musíme udělat, musíme zkontrolovat přepínač, pokud je stisknutý. Přepínací kolík je připojen k RB0, takže můžeme znovu použít smyčku if a zkontrolovat, zda je zapnutá. Pokud je stisknuto, otočením LED indikujeme stisknutí spínače.
if (RB0 == 1) // Pokud stisknete Joy RC4 = 1; // Zářící střední LED, jinak RC4 = 0; // VYPNUTO prostřední LED
Zobrazení simulace:
Celý projekt lze simulovat pomocí softwaru Proteus. Jakmile program napíšete, zkompilujte kód a propojte hexadecimální kód simulace s obvodem. Pak byste si měli všimnout, že LED světla září podle polohy potenciometrů. Simulace je uvedena níže:
Hardware a práce:
Po ověření kódu pomocí simulace můžeme sestavit obvod na desce chleba. Pokud jste sledovali výukové programy PIC, všimli byste si, že používáme stejnou desku perf, na kterou je připájen obvod PIC a 7805. Pokud máte také zájem o vytvoření takového, abyste jej mohli použít se všemi svými projekty PIC, pak pájejte obvod na desce perf. Nebo můžete také postavit celý okruh na prkénku. Jakmile je hardware hotový, bude to něco podobného níže.
Nyní nahrajte kód do mikrokontroléru PIC pomocí PICkit3. Pokyny najdete v projektu LED Blink. Jakmile se program nahraje, měli byste si všimnout, že žlutá kontrolka zhasne. Nyní použijte joystick a změňte knoflík, pro každý směr joysticku si všimnete, že příslušná LED stoupá. Když je stisknutý spínač uprostřed, zhasne LED uprostřed.
Tato práce je jen příkladem, můžete na ní postavit spoustu zajímavých projektů. Kompletní fungování projektu lze také najít na videu na konci této stránky.
Doufám, že jste pochopili projekt a užili jste si jeho sestavení, pokud máte s tím nějaký problém, neváhejte jej zveřejnit v sekci komentářů níže nebo jej napsat na fóra pro získání pomoci.