Inhoudsopgave:

Handheld Arduino Paper Rock Scissors-spel met 20x4 LCD-scherm met I2C - Ajarnpa
Handheld Arduino Paper Rock Scissors-spel met 20x4 LCD-scherm met I2C - Ajarnpa

Video: Handheld Arduino Paper Rock Scissors-spel met 20x4 LCD-scherm met I2C - Ajarnpa

Video: Handheld Arduino Paper Rock Scissors-spel met 20x4 LCD-scherm met I2C - Ajarnpa
Video: Microbit Rock Paper Scissor Lizard Spock 2024, Juli-
Anonim
Handheld Arduino Paper Rock Scissors Game met 20x4 LCD-scherm met I2C
Handheld Arduino Paper Rock Scissors Game met 20x4 LCD-scherm met I2C
Handheld Arduino Paper Rock Scissors Game met 20x4 LCD-scherm met I2C
Handheld Arduino Paper Rock Scissors Game met 20x4 LCD-scherm met I2C
Handheld Arduino Paper Rock Scissors Game met 20x4 LCD-scherm met I2C
Handheld Arduino Paper Rock Scissors Game met 20x4 LCD-scherm met I2C

Hallo allemaal of misschien moet ik zeggen "Hallo wereld!"

Het zou een groot genoegen zijn om een project met u te delen dat mijn toegang tot veel Arduino-dingen is geweest. Dit is een handheld Arduino Paper Rock Scissors-spel met een I2C 20x4 LCD-scherm. Ik weet dat je misschien denkt: "Nog een Paper Rock Scissors-spel?" Maar de meeste Arduino Paper Rock Scissors-spellen gebruiken eenvoudige LED's en ik zag er ook een die papieren symbolen gebruikte die door servo's werden opgetild. Die zijn gaaf. Dit project maakt gebruik van een 20x4 LCD-scherm en deed er een met I2C en een zonder (hier niet weergegeven). Ik wilde een goedkope koffer met een afgewerkte look, niet alleen een puinhoop. Niet iedereen heeft toegang tot een 3D-printer en wil iemand betalen die dat wel heeft. En ik wilde dat het gemakkelijk te maken was, zodat ik de ideeën met anderen kon delen. Aangezien mijn programmeervaardigheden op beginnersniveau zijn, is de schets vrij eenvoudig en gemakkelijk te begrijpen en te bewerken. Dit was mijn persoonlijke opleiding tot het maken van een schets. Je zult veel aantekeningen in de schets vinden en het heeft vele, vele (20+?) iteraties doorlopen totdat ik geloof dat het precies goed is. Project kost minder dan $ 20 om te maken (niet I2C).

Ik ben in 2018 begonnen met Arduino en heb hun website doorgenomen en alles gelezen wat ik kon. Gebouwd en geëxperimenteerd met de voorbeeldprojecten waarmee het wordt geleverd en lees veel Instructables die velen van jullie in de loop der jaren hebben gedeeld. Waardeer ze echt en heb zoveel van jullie allemaal geleerd. Bedankt. Nu wil ik wat delen van wat ik heb geleerd door mijn eigen creativiteit toe te voegen. Voordat de opmerkingensectie zich opstapelt met veel vragen over hoe dit te doen en houd er rekening mee dat ik hiermee begon zonder ervaring in Arduino. Ik heb geleerd door de voorbeeldprojecten op de Arduino- en de Instructables-websites te bouwen. Ik heb van jullie geleerd. Als je vastloopt, is dat misschien de snelste manier om een oplossing te vinden.

Stap 1: Projectintroductie

Projectintroductie
Projectintroductie
Projectintroductie
Projectintroductie

Het LCD-scherm van Amazon gekozen en I2C 20x4 LCD gekozen vanwege de lage kosten (ongeveer $ 12 - $ 18) en het gemak van bedrading en programmering. Als je wilt, kun je er een gebruiken zonder I2C en misschien krijg je er een voor $ 7. Maar u moet een andere bibliotheek en een ander bedradingsschema gebruiken en meer Arduino-pinnen gebruiken. Maak je geen zorgen, het heeft genoeg om beide kanten op te gaan. Seriële I2C 20x4 zou gemakkelijker te bouwen zijn, minder draden zijn minder verwarrend. Maar parallel 20x4 LCD is ongeveer $ 5 goedkoper. Ik tekende schema's voor beide bedradingsschema's. De meeste andere onderdelen heb ik bij Amazon en een paar lokale winkels gekocht. Mijn box is een lege cappuccino-drankmixbox. Ik vind het leuk dat het deksel er gemakkelijk af kan om de stroom aan of uit te zetten, aan componenten te werken of de batterij te vervangen. En "Hé!" de doos was gratis en ik hou van cappuccino. Het recyclen van plastic is goed voor het milieu. Je kunt elke doos gebruiken die je leuk vindt, zodat alles erin past, of zelfs de doos of het broodplankje van het project overslaan. Ik wilde goedkoop een "afgewerkte projectlook". Ik wed dat iemand een 3D-geprinte versie maakt. De Arduino speelt het Paper Rock Scissors-spel met je op het LCD-scherm, houdt de score bij, je kunt invoeren met de knoppen en als je kiest is er een optie waarmee je vals kunt spelen. Oorspronkelijk was de cheat-functie geschreven voor foutopsporingsdoeleinden en toen ik ermee klaar was, heb ik er commentaar op gegeven. Voor de lol heb ik hem er weer in gedaan.

Stap 2: Broodplank

Broodplank
Broodplank
Broodplank
Broodplank

Ik heb mijn circuits met Arduino Uno gebroodboard, maar toen ik alles samenvoegde, gebruikte ik Arduino Nano omdat het beter in de doos past. Dus je kunt dit met beide bouwen. Maar vergeet niet om een paar instellingen in IDE te wijzigen. De Nano wordt aan de achterkant van het LCD-scherm geïnstalleerd met behulp van Command Strips of dubbelzijdig plakband. Plaats de Arduino Nano naast het I2C-piggyback-bord zodat de USB-connector naar buiten wijst (rechts van het LCD-scherm). U kunt een 9v of 4x AA (die u 6v geeft) batterijdoos gebruiken met SPST-schuifschakelaar voor stroomvoorziening die ook in de doos is gemonteerd, ook met Command Strips. De Arduino heeft het in beide richtingen gebouwd en heeft een ingebouwde spanningsregelaar die het naar de 5 volt brengt die het nodig heeft. Als je erover nadenkt, kan deze game "meestal lege 9v-batterijen" recyclen voor stroom en prima werken. (Je vervangt wel twee keer per jaar de batterijen van de rookmelder, toch?) Andere apparaten die een 9v-batterij gebruiken, zeggen misschien dat deze leeg is bij 6 - 8 volt; maar het is niet dood totdat het "Arduino Dead!"

Tijdens het ontwerpen van het project gebruikte ik 4 SPST-drukknoppen voor invoer. Maar om het voltooide spel in de doos te bouwen, gebruikte ik 5 SPST-drukknoppen. Ik dacht dat ik in de toekomst misschien zou proberen een spel te maken dat meer knoppen nodig had. Misschien een doolhofspel? Een weerstandsspanningsdeler voor de knoppen is samen gemonteerd op een stukje protobord dat ook kan worden gemonteerd met Command Strips.

Stap 3: Montage

samenkomst
samenkomst
samenkomst
samenkomst
samenkomst
samenkomst

Samenkomst:

De 4 belangrijkste assemblages zijn het LCD-scherm met optioneel I2C-piggyback-bord, Arduino Nano, de weerstanden en schakelaars die in serie zijn geschakeld aan het onderling verbonden proto-bord en de accubak met aan/uit-schakelaar.

Je zou moeten beginnen met breadboarden op het circuit of het protobord vast te bedraden volgens het schema. Ik bewaar het LCD-scherm graag met de voorkant naar beneden in het deksel van de doos om te voorkomen dat er krassen op komen. Ik gebruikte een header aan slechts de ene kant van Arduino die 5v heeft om deze op het proto-bord aan te sluiten. Ik heb een brug gemaakt met 3 headers (veel soldeerwerk) van de Arduino naar het proto-bord, zodat ze plat op de achterkant van het LCD-scherm liggen met Command-strips of dubbelzijdig plakband. Maar echt, de borden kunnen worden aangesloten door gewoon draden van de ene naar de andere te solderen. Gebruikte een vrouwelijke header om het proto-bord aan te sluiten op de LCD I2C. De weerstandspoten van het protobord kunnen worden gebruikt om de 5 soldeerpunten voor de knoppen te maken. Het andere been van elke knop gaat naar Arduino-pin A0. Voor elke knop zijn 2 draden gesoldeerd. Gebruik een Ohm-meter om te bepalen welke knoppoten je moet gebruiken, maar over het algemeen kun je niet fout gaan met niet-aangrenzende benen (diagonaal van elkaar).

Kies je instellingen voor je Arduino in IDE. Download de schets en laad deze op de Arduino en test / probleemoplossing.

Klaar om het in een doos te doen? Het label voor cappuccino verwijderd, mijn doos gewassen en gedroogd. Zorgvuldig gemeten en het gat in de doos voor het LCD-scherm uitgesneden, zoals u kunt zien, en het is gemonteerd met 3 pluggen die aan drie LCD-hoekgaten zijn geschroefd (2 aan de onderkant van de doos, 1 bij het deksel) net lang genoeg om de achterkant van de doos en houd deze met wrijving op zijn plaats. Het schroefgat op het LCD-scherm van het piggyback-bord bevindt zich mogelijk te dicht bij de terminal, dus ik laat het weg. Gebruik een Exacto-mes om geleidegaten voor schroeven in de pluggen te boren zodat ze niet splijten (voorzichtig, niet uitglijden en jezelf steken, pluggen vasthouden met een tang). Moest de doos een beetje buigen / pletten voor de definitieve installatie, maar hij springt terug naar de juiste vorm. De gaatjes voor de knoppen worden "geboord" door ze te positioneren (lijnen trekken met rechte rand) en de klemmen op te warmen met een soldeerbout totdat ze "door" de doos "smelten". Verwijder vervolgens de knoppen nadat ze zijn afgekoeld en soldeer op 6" - 9" CAT 5e draadresten of 18ga tot 22ga draad aan de knoppen. Installeer de knoppen eerst met draad terug in hun gaten en soldeer vervolgens op het weerstands-protobord. Een stipje superlijm, hete lijm of zelfs gewoon wrijving houdt de knopen op hun plaats. Op één build werden enkele telefoonkabelsplitsers gebruikt (de rode cirkels in de doorzichtige plastic blokken) om de laatste handvol verbindingen tussen de accubak, het weerstandsprotobord en de LCD / Arduino-assemblage te vergemakkelijken. Als je wilt, kun je in plaats daarvan soldeer en krimpkous gebruiken. Duw vervolgens voorzichtig en langzaam alle draad en componenten in de doos en sluit het deksel. Je hebt wel een batterij geïnstalleerd en de Arduino-schets geüpload voordat je dit allemaal deed? Je hebt ook de bibliotheek nodig voor 20x4 LCD-schermen met of zonder I2C (wat je ook kiest) die je gratis kunt downloaden op Github. Zet het aan, probeer het uit en kijk of het werkt. Later heb ik mijn schets met pauzes bewerkt om het leesbaarder te maken, het "knipperende stippen-effect" en wat andere dingen toegevoegd, samen met veel opmerkingen. Probeer de Arduino zo te plaatsen dat de USB nog steeds kan worden aangesloten en een nieuwe schets kan worden geüpload. Gebruikte natuurlijk een stroomschema bij het maken van de schets. Je zult zien dat de opmerkingen vrijwel bepalen waar elk blok van het stroomschema was.

U zult merken dat de knoppen in een serie / parallelle schakeling zitten, waardoor u één Arduino-ingangspin voor zoveel knoppen kunt gebruiken als u wilt. Het circuit werkt als een spanningsdeler om een waarde toe te voeren aan de analoge pin die de waarde verandert die wordt gelezen door elke ingedrukte knop. U kunt de seriële monitor gebruiken om uw circuitwaarden te berekenen op basis van uw weerstanden en de "geaccepteerde waarden" in uw schets te wijzigen.

Ik wens je veel plezier met het zelf bouwen! Als je er een maakt of zelfs wat mods van maakt, deel het dan met de rest van ons. Bedankt voor het lezen.

Stap 4: Programmeren en instellingen

Programmering en instellingen
Programmering en instellingen
Programmering en instellingen
Programmering en instellingen

Nu voor de lol met IDE. Ik hoop dat je wat cappuccino hebt gedronken. Je hebt het misschien nodig om wakker te blijven.

Het kan zijn dat u enkele bibliotheken moet instellen. U hebt Wire.h nodig voor I2C, LCD.h voor LCD, LiquidCrystal_I2C.h voor I2C-gestuurde LCD. U moet ook de opdracht lcd.begin(20, 4) gebruiken om Arduino te vertellen dat u een LCD-scherm met 4 regels van 20 tekens gebruikt en dat er mogelijk andere instellingen zijn.

Voor informatie over het installeren van bibliotheken, zie:

In de Arduino IDE zul je misschien merken dat je je bord en de poort waarop het is aangesloten moet instellen. De poort is te vinden in het bedieningspaneel van uw computer/apparaatbeheer/Universal Serial Bus-controllers. Je moet uitzoeken welke Arduino je gebruikt. Ik gebruik Arduino Nano, maar Uno werkt hier ook voor. Kies je instellingen zorgvuldig.

Mogelijk moet u uw I2C-adres achterhalen. Je zou het rechtstreeks van de bordjumpers moeten kunnen lezen. U kunt ook een I2C-scanner downloaden van Arduino.cc of ook https://www.gammon.com.au/forum/?id=10896 en andere plaatsen.

Ergens rond dit punt zou je het programma in de Arduino moeten kunnen laden en testen op functionaliteit. Licht het LCD-scherm op? Kun je karakters lezen? Een van de keren dat ik het circuit heb gebouwd en het vervolgens heb getest, brandde de achtergrondverlichting, maar de tekens waren onleesbaar. Uren (dat klopt, HOURS) doorgebracht met het proberen van instellingen en toning-verbindingen om er zeker van te zijn dat het goed was gebouwd. Heb het een paar dagen opgegeven. Kwam er later op terug en realiseerde me dat de variabele weerstand op het piggyback-bord op het minimum was ingesteld. Draaide het op en de karakters waren zichtbaar. Met hoofd op bureau knallen. Nog een reden om met je hoofd tegen je bureau te bonzen? Als u de batterij moet vervangen, moet u deze variabele weerstand mogelijk opnieuw aanpassen. Toen dit gebeurde, sneed ik een klein gaatje in de achterkant van de doos voor toegang.

Mogelijk moet u in dit programma uw eigen knopwaarden instellen op basis van de weerstanden die u voor uw knoppen gebruikt. U kunt hiervoor deze handige kleine schets gebruiken en vergeet niet om de seriële monitor te activeren. Voer de schets uit en druk op elke knop en noteer elke waarde. Bewerk vervolgens de schets om uw knopwaarden weer te geven. Upload vervolgens de bewerkte schets naar je bord en kijk of het werkt.

Er zijn veel kleine variabelen die allemaal precies goed moeten zijn en de jouwe kan anders zijn dan de mijne. Geduldig zijn en verschillende dingen proberen, zal je helpen om de jouwe te laten werken. Onthoud ook dat nadat je je Arduino-variabelen hebt ingesteld (zoals bordnaam, com 3, 5 of wat dan ook, processor en programmeur [allemaal onder tools]), je ze misschien allemaal goed hebt ingesteld, maar het werkt niet omdat je opnieuw moet opstarten. Koppel de Arduino los en sluit hem weer aan op uw computer. Mogelijk moet u uw computer ook opnieuw opslaan en opnieuw opstarten.

Upload deze schets, start de monitor, druk op de knoppen en noteer de waarden, bewerk vervolgens de Paper Rock Scissors-schets en vervang mijn weerstandswaarden door die van jou. Voer de Paper Rock Scissors-schets uit en kijk of het goed werkt. Oh ja, heb je je knoppen in de verkeerde volgorde geïnstalleerd? Mogelijk moet u ze opnieuw installeren als u ze in een bepaalde volgorde wilt.

Veel plezier!

Stap 5: Schets voor het lezen van knoppen helpt u uw weerstandswaarden te vinden om in de hoofdschets te bewerken. Druk op elke knop en noteer uw weerstandswaarden om in de hoofdschets te komen

// knop lezen schets

ongeldige setup() {

// plaats hier je setup-code om een keer uit te voeren:

Serieel.begin(9600);

}

lege lus() {

// plaats hier je hoofdcode om herhaaldelijk uit te voeren:

int-knop; //Voor het lezen van knoppen

knop = 0; //Voor het lezen van knoppen

knop = analoog lezen (A0); //Opdracht gebruikt om de knoppen te lezen

vertraging (100);

Seriële.println(knop);

Stap 6: Onderdelenlijsten en gereedschappen die u mogelijk nodig heeft

Onderdelenlijst van Amazon:

Arduino Uno of Arduino Nano

20x4 LCD-scherm met of zonder I2C

9v of 6v accubak met SPST schuifschakelaar (of koop de schuifschakelaar apart)

5x SPST-drukknoppen

1x Optrekweerstand 1k - 5k

5x Weerstanden minder dan 1k, 200 - 500 Ohm is goed

Onderdelenlijsten Andere locaties of winkels:

9v of 4x 1,5-volt batterij (9v optie laat je "meestal lege" batterijen recyclen)

Command Strips (gebruikt een navulverpakking) of dubbelzijdig plakband

Telefoonkabelsplitsers (optioneel, maar maakt het gemakkelijk om draden aan te sluiten)

Een paar centimeter van 1/4 deuvel

Kleine houtschroeven om deuvels op het LCD-scherm te monteren

Soldeer

Krimpkous voor 18 ga draden

Restanten of recyclingonderdelen:

Lege cappuccino-drankmixdoos (niet iedereen heeft een 3D-printer, drink wat cappuccino en recycle wat plastic)

Ongeveer 1 "x 2" Proto-bordschroot, hoewel ik protoboard van Amazon heb gebruikt

Verschillende lengtes van 18ga tot 22ga draad of Cat 5e massieve kern

Hulpmiddelen die u mogelijk nodig heeft:

Kleine Philips-schroevendraaier

Kleine platte schroevendraaier

Exacto Mes

Soldeerbout en soldeer

Zware schaar

Naaldbektang

Heerser

Stap 7: wat meer informatie en de hoofdschets

Bedankt voor het lezen. Ik weet dat het veel is. Dit is mijn eerste Intructable en dit alleen al was een beetje leerzaam voor mij. Terugkijkend zie ik dat ik op sommige plaatsen te kort ben en op andere. Ik had de vergadering meer in stappen moeten opsplitsen. En sinds ik dit project ongeveer een dozijn keer heb gebouwd totdat het precies goed was, zijn sommige van de foto's van het ene of het andere model. Ik moet teruggaan en foto's maken van slechts één model. Ik wil ook een video of twee opnemen. Dus ja, ik kom terug om deze dingen te repareren. Maar voor nu leg ik het in jouw handen. Ik hoop dat je er net zoveel plezier aan beleeft als ik aan het bouwen ervan. Nogmaals bedankt voor het lezen.

Aanbevolen: