Idag har vi ett projekt med en mikrokonsol, som vem som helst kan upprepa.
Nödvändiga material och komponenter:
Den här manualen är hämtad från AlexGyver YouTube-kanal. Mikrokontrollern för detta projekt behöver detta:
Detta är Attiny85 i DIP-paketet, det räcker för oss. För att inte löda det tar vi det så kallade uttaget.
Vi behöver också en skärm med Aliexpress, OLED med en upplösning på 128 x 32 pixlar.
Pins är också praktiska.
Knappar vi kommer att använda här är:
Naturligtvis kan du ta tangentbord, men de måste vara färdigställda, men jag vill egentligen inte klippa och löda. Batterifacket är av denna typ:
Och vi kommer att montera vår spelkonsol med en brödskiva (om du vill kan du skapa en bräda själv). Vi kommer att blinka USBasp-programmeraren, men vilken AVR som helst gör det.
Kopplingsschema Komponenterna kommer att vara följande:
Displayen ansluts till I2C-bussstiften på mikrokontrollern. Vi ansluter knappar till andra fria stift. Lägg också till en strömbrytare för att slå på / stänga av systemet. Och i princip är det allt, det återstår att ansluta strömmen.
Firmwaren laddas in i mikrokontrollern av programmeraren enligt följande schema:
Låt oss nu komma igång med monteringen och ordna alla element på brädskivan. Låt oss försöka montera och se hur det hela ser ut.
Det blev ganska asketiskt. Inte dåligt. Överskottet av brödskivan kan sågas av.
Nu fixar vi alla komponenter bara genom att löda benen.
Nu måste du ansluta slutsatserna enligt schemat. För detta ändamål rekommenderar författaren att använda en tunn kinesisk monteringsledning.
Och för enkelhets skull kan du använda detta speglade anslutningsdiagram.
Dessa ledningar har en så tunn isolering att du kan löda dem direkt. Isoleringen i sig smälter och tråden lödas.
Fortsätt sedan till att täta batterifacket och brytaren. Facket måste också fixeras med en varm limpistol.
Det är allt, systemet är monterat, det återstår att ladda ner firmware. Vi kommer att blinka “stenen” separat genom att ansluta den till programmeraren på brädskivan.
Firmware, som för alla författares projekt, är i den allmänna domänen och kan laddas ner från. Även på projektsidan hittar du ett diagram och all annan nödvändig information om detta projekt.
Vi kommer inte att tänka på nedladdningen i detalj, om något inte är klart, kan du alltid titta på de detaljerade instruktionerna för författaren.
För firmware, installera bara Arduino ide, installera kärnan för att arbeta med Attiny-seriens mikrokontroller, välj ett kort, välj en programmerare.
Sedan väljer vi frekvensen 8 eller 16 MHz, öppnar fliken "Verktyg", hittar och väljer "Record Loader".
Det finns ingen lastare där, men mikrokontrollern är inställd på önskad frekvens. Välj sedan fliken "Skiss" - "ladda ner via programmeraren". Och vi väntar tills skissen laddas i mikrokontrollern.
Nu tar vi ut "stenen" och sätter in den i hjärtat av vår minispelkonsol.
Som ni ser, det fungerar! Och nu ska vi titta närmare på vad vi har i firmware. ATtiny85 är en mikrokontroller med 512 byte RAM, vilket är mycket litet. 99% av biblioteken för att arbeta med en sådan skärm använder en buffert på sidan av mikrokontrollern för att rita om bilden korrekt, eftersom den här skärmen inte kan läsa data från sin egen buffert, och den är där förresten.
Bufferten för denna visning på 128 * 32 pixlar tar 512 byte, om vi vill komma ihåg tillståndet för varje bit, det vill säga en pixel.
Förutom bufferten måste vi också lagra andra data, så det här alternativet passar verkligen inte i minnet av en sådan storlek.
Därför beslutades att sänka skärmupplösningen till 64 * 16 pixlar genom att buffra kvadrater på 4 pixlar.
Författaren arbetade direkt med den här skärmen och lyckades genomföra sin idé. En skiss kan komma till nytta för någon som vill arbeta med den här skärmen med Attiny.
Nu när det gäller själva spelet. Det fungerar helt enkelt. En boll rör sig på en separat timer, rörelsen består i att ta bort en punkt med samma koordinater och lägga till en ny punkt i de nya koordinaterna.
Beräkning av koordinater är helt enkelt tillägget av hastighetsvärden till koordinaterna i visningssystemet.
När bollen går bortom de horisontella väggarna, studsar den helt enkelt från dem och ändrar hastighetens vertikala komponent till motsatsen, det vill säga med ett minustecken (-).
Dessutom kontrollerar programmet de vertikala gränserna för spelplanen, om bollen träffar racketen (tja, eller vad du än kallar det korrekt), så stöter det, och avvisningsvinkeln är slumpmässig.
Om bollen bryter väggen bakom racketen har spelaren därför förlorat den aktuella omgången, och motståndaren får en poäng.
Rörelsen av spelarens racket implementeras på samma sätt som rörelsen av bollen, det vill säga den gamla racketen raderas och en ny dras, redan med nya koordinater. Koordinaterna ändras när du klickar på knappen.
Således visar det sig mycket snabbare än att rengöra hela skärmen och göra alla element igen.
Nu för motståndarens racket. Det styrs av AI (artificiell intelligens).
Konstgjord intelligens sägs naturligtvis högt, men ändå gör denna intelligens en mycket enkel sak, nämligen att den får racketen att röra sig i den riktning där bollen är nu, medan man försöker justera sin mitt längs den vertikala axeln med bollen vertikala koordinaten. För att verkligen slå en sådan motståndare gjorde författaren honom långsam, det vill säga han beräknar sitt nästa drag igen med timern, och har därför kanske inte tid att fånga bollen och därmed slå tillbaka honom.
Även i spelet implementerad mekanik med ökande komplexitet. Var 10: e poäng till förmån för spelaren ökar hastigheten på bollen. Tillsammans med detta växer också reaktionshastigheten för AI (motståndaren).
Som ett resultat är här en så enkel liten Pong. Inte för ingenting, detta videospel utvecklades allra första, eftersom även en nybörjare som programmerar kan skriva det. Men trots projektets uppenbara enkelhet tog uppstyret med den kinesiska skärmen ungefär 20 timmars ren tid från författaren. Samtidigt tog han inte hänsyn till den tid som användes för att skriva själva spelkoden och andra arbetsflöden relaterade till felsökning och inställning av kretsen.
I det här är själva surret monteringsprocessen, inte applikationen.Att utveckla spel, även de enkla, kan vara riktigt intressant. Särskilt när du försöker skjuta dem in i en mycket liten mikrokontroller. Och när den kinesiska skärmen väntar dig runt hörnet ...
Det är allt. Tack för din uppmärksamhet. Vi ses snart!
Författarens video: