Inhoudsopgave:
- Stap 1: Bedraad het (touch)screen
- Stap 2: Maak kennis met de bibliotheken
- Stap 3: Ontwerp een grafische gebruikersinterface / hoofdmenu
- Stap 4: Bedraad de twee controllers
- Stap 5: Begin met het bedraden van de draadloze verbinding
- Stap 6: Ga wild! Probeer verschillende dingen uit
- Stap 7: Ontwerp
- Stap 8: 3D printen van de behuizing
- Stap 9: Solderen en finaliseren
- Stap 10: Voorbeeld
Video: Handheld console met draadloze controllers en sensoren (Arduino MEGA & UNO) - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
Wat ik heb gebruikt
- Arduino MEGA
- 2x Arduino UNO
- Adafruit 3,5 TFT 320x480 touchscreen HXD8357D
- Zoemer
- 4 Ohm 3 W luidspreker
- 5 mm LED-verlichting
- Ultimaker 2+ printer met zwart PLA-filament
- Lasercutter met MDF-hout
- Zwarte spuitverf (voor het hout)
- 3x nRF24L01+ draadloze zendontvangers
- 2x 16 mm knop
- 2x Druksensoren
- 3x 9V batterijhouders
- Broodplank
- 2x 0,96'' OLED I2C-schermen
- Mannelijke - vrouwelijke draden
- Soldeerstation
- Superlijm
- 2x eenkanaals aanraakmodule (ROOD/BLAUW)
Stap 1: Bedraad het (touch)screen
We gaan er dus een draagbare console van maken, met twee draadloze controllers.
Daarom zullen we een hoofdeenheid hebben (het grootste deel, met het LCD-scherm)
De hoofdeenheid wordt uitgevoerd met de Arduino MEGA.
De twee afzonderlijke controllers zullen elk een Arduino UNO uitvoeren.
Later zullen we de Arduino's met elkaar laten communiceren om controllergegevens te verzenden.
Begin met het correct aansluiten van het 320x480-scherm op uw hoofdschermeenheid (Arduino MEGA), zoals in deze tutorial. (Adafruit heeft een geweldige gedetailleerde tutorial voor bedrading en code).
Voor geluid heb ik een zoemer en een 3W 4Ohm-luidspreker aangesloten om digitale pinnen en GND te scheiden.
met de toon (pin, frequentie, duur); U kunt enkele basis monofone geluiden creëren.
Stap 2: Maak kennis met de bibliotheken
Het Adafruit 320x480-scherm ondersteunt de bijbehorende Adafruit_GFX- en Adafruit_TFTLCD-bibliotheken.
Lees de documentatie. Ik denk dat het daar best goed wordt uitgelegd.
Zorg ervoor dat je de juiste instellingen in de Arduino IDE invoert:
Extra -> Bord -> Arduino/Genuino MEGA of MEGA 2560
Extra -> Poort -> [De poort met ''Arduino MEGA'' erin]
Deze specifieke schermbibliotheek ondersteunt aangepaste lettertypen, basisvormen en een verscheidenheid aan kleuren.
Opmerkelijk is misschien dat de verversingssnelheid te laag is voor vloeiende animaties. Als u het scherm elke vinkje wilt bijwerken, zal het te traag zijn om elke pixel opnieuw te tekenen en zal het flikkeren
Dus ik zou willen voorstellen om hier creatief omheen te werken, zoals hoe sommige van de oudere handhelds met animatie omgingen: met keyframes. Minder is meer! En in plaats van alles elke seconde opnieuw te tekenen, kunt u, als u een rechthoek naar links of rechts wilt verplaatsen, eenvoudig het spoor wissen dat het achterlaat, in plaats van het hele object te wissen en opnieuw te tekenen.
Ik gebruikte bijvoorbeeld de schermflikkering als een knipperend effect voor het personage bij de introreeks.
Van de Adafruit_GFX-bibliotheek gebruikte ik voornamelijk de tft.fillRect(x, y, width, height, color); en tft.print(tekst); functies.
Experimenteren staat centraal.
Stap 3: Ontwerp een grafische gebruikersinterface / hoofdmenu
Nadat je kennis hebt opgedaan binnen de bibliotheek en de beperkingen/bevoegdheden kent, kun je beginnen met het ontwerpen van een hoofdmenuscherm.
Nogmaals, denk aan rechthoeken. Tenminste dat is wat ik deed.
Hier is mijn code voor de gebruikersinterface
pastebin.com/ubggvcqK
U kunt schuifregelaars maken voor de helderheid van het scherm, om de ''Lite''-pin op uw Adafruit-aanraakscherm te bedienen via een analoge pin.
Stap 4: Bedraad de twee controllers
Voor het controller-gedeelte is het eigenlijk aan jou wat voor soort sensoren je wilt gebruiken, afhankelijk van welke game je van plan bent te maken
Oké, dus voor de controllers die ik besloot te gebruiken:
- Een druksensor
- Een OLED-scherm
- Eenkanaals aanraakmodule die aan of uit gaat
- Bewegingssensor (RobotDyn APDS9960)
- nRFL01+ Transceiver (voor draadloze communicatie)
- Een drukknop
Let op: De Gesture sensor en de OLED gebruiken beide SCL/SDA aansluitingen. Het duurde even voordat ik me realiseerde dat Arduino er maar twee heeft: A4 en A5. Maar je kunt deze gewoon parallel op het breadboard aansluiten en het werkt prima
Stap 5: Begin met het bedraden van de draadloze verbinding
Het bedraden van de nRF24L01+ modules kostte me wat tijd om het te laten werken.
Ik moest mijn toevlucht nemen tot de TMRh20 RF24-bibliotheek, nadat ik niet in staat was om de juiste sensorgegevens naar het scherm te sturen.
Om meerdere Arduino's met elkaar te laten communiceren, moeten we ervoor zorgen dat ten minste één van de UNO's wordt gevoed, evenals de MEGA.
Gebruik de seriële console van de MEGA om de resultaten die je van de UNO krijgt uit te printen en kijk of het werkt.
Hier is de code
Hier is de bibliotheek
Stap 6: Ga wild! Probeer verschillende dingen uit
Een cruciaal onderdeel van mijn ontwikkelingsproces was om gewoon een heleboel dingen uit te proberen!
Wat voor knoppen wil je gebruiken?
Wat stop je in je controllers?
Kijk eens rond op websites, je vindt naast de gebruikelijke ''A/B''-knoppen of analoge joysticks nog veel meer componenten. Laat je inspireren en motiveren om het eens te proberen!
Zodra je een duidelijk en werkend idee hebt van wat je in de controllers wilt plaatsen, bedraad je de componenten.
Afhankelijk van hoe ze werken, moet u digitale ingangen of analoge ingangen gebruiken.
OPMERKING: Sommige componenten hebben mogelijk SCL-/SDA-pinnen nodig om correct te werken. En als je twee of meer sensoren hebt die beide hetzelfde nodig hebben, krijg je waarschijnlijk een paniekaanval zoals ik. Maar u hoeft zich geen zorgen te maken
Je kunt de SDA- en SCL-pinnen van beide sensoren in serie met elkaar plaatsen, naar A4 en A5 en het zal werken
Stap 7: Ontwerp
Als je eenmaal een cool idee hebt voor de sensoren die je wilt gebruiken, schets dan enkele ideeën voor een ontwerp dat je leuk vindt.
Ga daarna aan de slag met enkele modelleringsprogramma's zoals Blender, Maya, Cinema 4D.
Ik heb Blender gebruikt om een (ruw) model te maken.
Om duidelijke metingen in Blender te krijgen, kunt u de eenheid van de rastergrootte wijzigen in millimeters.
Nadat je een model hebt gemaakt, zorg er dan voor dat je geen dubbele hoekpunten hebt en dat je je normalen opnieuw hebt berekend.
Exporteer het bestand als een.stl, als je een 3D-printer zoals ik wilt gebruiken.
OPMERKING: In Blender moet u de exportschaal op 0,1 zetten, als u in de volgende stap de nauwkeurige grootte in Cura wilt
Stap 8: 3D printen van de behuizing
Dit model is bedrukt met 2,85 mm zwart PLA-filament op een Ultimaker 2+ printer.
CURA downloaden
Laad je. STL in Cura, en het zal je laten zien hoe lang het zal duren.
Voor een handheld-case kan het tot 10 uur duren om af te drukken, afhankelijk van de grootte.
Voor modellen met een laag detail kun je het proces echter versnellen, wat ik deed.
Dit zijn mijn instellingen:
Laaghoogte: 0.2
Wanddikte: 0.8
Dikte boven/onder: 0.8
Pijp: 0.4
Temperatuur: 60 graden Celsius
Stroom: 100%
Rand: Overal waar de bouwplaat wordt aangeraakt
Infill dichtheid: 20%
Geleidelijk: 0
Mondstuktemperatuur: 220 C
Afdruksnelheid: 120%
Stap 9: Solderen en finaliseren
Je hebt een lange weg afgelegd.
De laatste stap is het aanschaffen van een perfboard / veroboard en het vertalen van uw breadboard-verbindingen naar een onderdeel van een prototypingboard.
Zorg ervoor dat de elektronica in de bedrukte behuizingen past en snij misschien wat MDF van hout om onderdelen te maken waar knoppen / controller-ingangen doorheen steken.
Ik heb hiervoor een lasercutter gebruikt.
Het belangrijkste is om te rotzooien, dingen uit te proberen die je anders nooit hebt gedaan en plezier te hebben!
Ik hoop dat deze tutorial duidelijk genoeg was… Het was een behoorlijk moeilijk project, met een geweldig resultaat!:)
Stap 10: Voorbeeld
Aanbevolen:
Draadloze gamecontroller met Arduino en NRF24L01+ (ondersteuning voor één of twee controllers): 3 stappen
Draadloze gamecontroller met Arduino en NRF24L01+ (ondersteuning voor één of twee controllers): Je kunt het volledige project vinden op mijn website (het is in het Fins): https://teukka.webnode.com/l/langaton-ohjain-atmega-lla- ja-nrf24l01-radiomodulilla/Dit is een heel korte briefing over het project. Ik wilde het gewoon delen als iemand zou willen
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino - Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter - RC Helikopter - RC-vliegtuig met Arduino: 5 stappen (met afbeeldingen)
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino | Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter | RC Helikopter | Rc-vliegtuig met Arduino: een Rc-auto besturen | Quadcopter | Drone | RC vliegtuig | RC-boot, we hebben altijd een ontvanger en zender nodig, stel dat we voor RC QUADCOPTER een 6-kanaals zender en ontvanger nodig hebben en dat type TX en RX is te duur, dus we gaan er een maken op onze
Niet-ondersteunde controllers gebruiken met een IOS 9.3.5-apparaat: 23 stappen
Niet-ondersteunde controllers gebruiken met een IOS 9.3.5 Apparaat: Benodigde materialen: PlayStation 4-controller Lightning-oplaadkabel Laptop met Windows 10 iPod Touch 5e generatie laptopmuis Respectieve oplaadkabel van laptop
Inleiding tot robotica voor basisschoolleerlingen met Hummingbird-controllers: 18 stappen
Inleiding tot robotica voor basisschoolleerlingen met Hummingbird-controllers: de meeste robotica-tools die momenteel op de markt zijn, vereisen dat de gebruiker specifieke software op zijn harde schijf downloadt. Het mooie van de Hummingbird Robotic Controller is dat deze kan worden uitgevoerd met een webgebaseerde computer, zoals een Chromebook. Het is ook al
Arduino-controllers: 10 stappen (met afbeeldingen)
Arduino-controllers: een Arduino-gamecontrollersysteem dat Arduino en de p5.js-bibliotheek gebruikt. Het idee hiervan is om een Arduino-project te creëren dat gemakkelijk kan worden gerepliceerd en uitgebreid. De controlleraansluitingen zijn ontworpen om gebruik te maken van een heleboel verschillende sensoren en ingangen