Er is een grote verscheidenheid aan manieren om informatie van een persoon over te brengen naar een microcontroller of computer, en een daarvan is het gebruik van een joystick. Laten we eens kijken hoe we een analoge joystick met twee assen en een knop op de Arduino kunnen aansluiten.
Het is nodig
- -Arduino;
- - joystick met twee assen;
- - 3 weerstanden met een nominale waarde van 220 Ohm;
- - 1 RGB of 3 conventionele LED's.
instructies:
Stap 1
De joystick is een handig en gebruiksvriendelijk apparaat voor het verzenden van informatie. Er zijn een groot aantal soorten joysticks in termen van het aantal vrijheidsgraden, het principe van het lezen van de aanduidingen en de gebruikte technologieën. Joysticks worden meestal gebruikt om de beweging van alle mechanismen, gecontroleerde modellen, robots te regelen. De analoge joystick, waar we vandaag naar zullen kijken, is een handgreep die is bevestigd aan een kogelgewricht met twee onderling loodrechte assen. Wanneer de knop wordt gekanteld, roteert de as het beweegbare contact van de potentiometer, waardoor de spanning aan de uitgang verandert. De analoge joystick heeft ook een toetsknop, die wordt geactiveerd wanneer u de hendel verticaal indrukt.
Stap 2
Sluit de joystick aan volgens onderstaand schema. Sluit de analoge uitgangen X en Y van de joystick aan op analoge ingangen A1 en A2 van de Arduino, de uitgang van de SW-knop op digitale ingang 8. De joystick wordt gevoed door een spanning van +5 V.
Stap 3
Laten we zo'n schets schrijven om duidelijk te zien hoe de joystick werkt. Laten we de pinnen declareren, de bedrijfsmodi ervoor instellen. Merk op dat we in de setup ()-procedure de switchPin-invoer op een hoog niveau hebben gezet. Dit activeert de ingebouwde pull-up weerstand op deze poort. Als je het niet aanzet, zal de 8e Arduino-poort in de lucht hangen en pickups vangen als de joystickknop niet wordt ingedrukt. Dit zal leiden tot ongewenste, chaotische valse positieven.
In de lus ()-procedure pollen we constant de status van de knop en geven deze weer met behulp van de LED op uitgang 13. Omdat de switchPin-ingang omhoog wordt getrokken, is de LED constant aan en wanneer de knop wordt ingedrukt, gaat deze uit, en niet omgekeerd.
Vervolgens lezen we de aflezingen van de twee potentiometers van de joystick - de output van de X- en Y-as. De Arduino heeft een 10-bit ADC, dus de waarden die van de joystick worden gelezen, liggen in het bereik van 0 tot 1023. In de middelste stand van de joystick, zoals je in de afbeelding kunt zien, liggen de waarden in de regio 500 ongeveer in het midden van het bereik.
Stap 4
Meestal wordt een joystick gebruikt om elektromotoren te besturen. Maar waarom zou u het niet gebruiken om bijvoorbeeld de helderheid van een LED te regelen? Laten we een RGB-LED (of drie gewone LED's) aansluiten op de digitale poorten 9, 10 en 11 van de Arduino volgens het bovenstaande diagram, en natuurlijk de weerstanden niet vergeten.
Stap 5
We zullen de helderheid van de overeenkomstige kleuren wijzigen wanneer de positie van de joystick langs de assen wordt gewijzigd, zoals weergegeven in de afbeelding. Vanwege het feit dat de joystick door de fabrikant mogelijk niet nauwkeurig gecentreerd is en het midden van de schaal niet rond de 512 ligt, maar van 490 tot 525, kan de LED lichtjes oplichten, zelfs als de joystick in de neutrale stand staat. Als u wilt dat het volledig wordt uitgeschakeld, breng dan de nodige wijzigingen aan in het programma.
Stap 6
Op basis van het bovenstaande diagram zullen we een schets schrijven van de Arduino die de helderheid van de RGB-LED bestuurt met behulp van een joystick.
Eerst zullen we de correspondentie van pinnen en twee variabelen - ledOn en prevSw - voor het werken met de knop declareren. Wijs in de setup-procedure () de functies toe aan de pinnen en sluit de pull-up-weerstand aan op de knoppin met de opdracht digitalWrite (swPin, HIGH).
In de lus () definiëren we het indrukken van de joystickknop. Wanneer u op de knop drukt, schakelen we de bedieningsmodi tussen de "zaklamp" -modus en de "kleurenmuziek" -modus.
In de modus freeMode () wordt de helderheid van de LED's geregeld door de joystick in verschillende richtingen te kantelen: hoe sterker de kanteling langs de as, hoe helderder de overeenkomstige kleur schijnt. Bovendien wordt de transformatie van waarden overgenomen door de kaartfunctie (value, fromLower, fromUpper, toLower, toUpper). De functie map () brengt de gemeten waarden (van Laag, naar Hoog) langs de joystick-assen naar het gewenste helderheidsbereik (naar Laag, naar Hoog). U kunt hetzelfde doen met gewone rekenkundige bewerkingen, maar deze notatie is veel korter.
In de modus discoMode () worden drie kleuren afwisselend helderder en dooft uit. Om de lus te kunnen verlaten wanneer de knop wordt ingedrukt, controleren we elke iteratie om te zien of de knop is ingedrukt.
Stap 7
Het resultaat is een zaklamp gemaakt van een driekleurige RGB-led, waarvan de helderheid van elke kleur wordt ingesteld met behulp van een joystick. En wanneer u op de knop drukt, wordt de modus "kleurmuziek" geactiveerd. Al gebruik ik hem juist als nachtlampje.
Zo leerden we hoe we een analoge twee-assige joystick met een knop op de Arduino kunnen aansluiten en er metingen van kunnen lezen. U kunt een interessanter gebruik van de joystick bedenken en uitvoeren dan ons voorbeeld.