İçindekiler:

LED Şerit Atari Pong Atari Makinesi: 8 Adım
LED Şerit Atari Pong Atari Makinesi: 8 Adım

Video: LED Şerit Atari Pong Atari Makinesi: 8 Adım

Video: LED Şerit Atari Pong Atari Makinesi: 8 Adım
Video: 35 lik viski tek dikiş 2024, Temmuz
Anonim
LED Şerit Atari Pong Arcade Makinesi
LED Şerit Atari Pong Arcade Makinesi

Benim adım Gabriel Podevin ve bu benim ilk zorbalığım. Şu anda elektronik, robotik, devre ve programlama ile çok ilgilenirken bir şeyler yaratmayı ve inşa etmeyi seven 16 yaşında bir lise öğrencisiyim. Umarım bunu inatçı bulabilirsin, bunu faydalı bulabilirsin.

Bu derste size retro tarzı bir Atari Pong Oyununu retro bir arcade kasasının içinde nasıl yapacağınızı göstereceğim. Projenin demosu için yukarıdaki videoyu görebilir, ayrıca bitmiş projeyi ve kasayı tek başına ve iki resimde görebilirsiniz. Bu anlaşılmaz çalışmanın sonunda, kodun derinliklerine ineceğim ve onu kişiselleştirmek için nasıl düzenleyeceğim.

Temel parça listesi bölümlere ayrılacaktır: Araçlar, montaj parçaları ve bileşenler

İhtiyacınız olacak araçlar aşağıdakileri içerecektir:

- Delmek

- Havya

- Tornavida (kullanmaya karar verdiğiniz vidalara uygun)

- Çoklu Metre

- dolaşan testere, şerit testere veya lazer kesiciye erişiminiz var mı

-Tel kesici veya makas

- Tutkal tabancası

Montaj için ihtiyacınız olacak parçalar şunları içerecektir:

- Ahşap tutkalı

- 10 inç x bir inçlik tahta bloklar

- büyük bir çeyrek inç kontrplak levha veya tercih edilen ahşap

- Yarım inç uzunluğunda 24 vida

- 14 x 6.5 inç led yayıcı plastik (isteğe bağlı)

- kırmızı ve mavi elektrik bandı

İhtiyacınız olacak bileşenler şunlardır:

- 2 adet 100k ohm potansiyometre

- 8 metre bireysel adreslenebilir Led şerit (Metre başına 30 led)

www.amazon.ca/ALITOVE-WS2812B-Individually-Addressable-Waterproof/dp/B018XAELE4/ref=sr_1_1?s=hi&ie=UTF8&qid=135323567&sr=1-

- birkaç metre tel veya birden fazla renk tel

- bir varil jakı fişi aracılığıyla 6v çıkış veren ac - dc güç adaptörü

- 1 arduino Uno R3

Eğer benim gibi bir Arduino Uno R3'e erişiminiz yoksa, atmel328-pu işlemci kullanan bu projede kullanacağım gibi bir tane oluşturabilirsiniz. Kendi https://www.instructables.com/id/How-to-make-your-own-Arduino-board/'unuzu nasıl oluşturacağınızı öğrenmek için bu bağlantıyı takip edin.

Bir arduino uno kullanıyorsanız, birinci adıma devam edin.

Adım 1: LED Dizisini Oluşturma

LED Dizisini Oluşturma
LED Dizisini Oluşturma
LED Dizisini Oluşturma
LED Dizisini Oluşturma
LED Dizisini Oluşturma
LED Dizisini Oluşturma

Bu adım, yapmanız gereken tüm lehimleme nedeniyle en basit zaman alıcı adımdır.

- Başlamak için 10 3/4 inç'e 6 1/2 inçlik bir tahta parçasına ihtiyacınız olacak.

- Tahta parçanızı aldıktan sonra, Led şeridinizi alın ve her 10 led'de veya her 6 1/2 inçte bir 26 segment kesin.

- Segmentleri kestikten sonra, yukarıdaki ilk resimde gösterilen aşağıdaki resimlerde gösterildiği gibi dikey olarak ahşabınıza yapıştırın.

-şeritleri yapıştırdıktan ve yerleşmelerine izin verdikten sonra lehimlemeye başlayacağız.

-üç farklı renkli tele ihtiyacınız olacak

- tüm pozitifler bir kabloya ve tüm negatifler bir kabloya bağlanırken, son kablo led şeritleri birbirine saracak şekilde kablolanmalıdır. Bu adımın başındaki ikinci resim, kabloları nasıl bağlayacağınızı gösteren bir şemadır.

-Son olarak, onları lehimledikten sonra, lehim bağlantılarınıza karşılık gelen renklerle bir elektrik şeridi saracaksınız. Yukarıdaki üçüncü resimde gösterildiği gibi.

-son olarak Arduino'ya bağlanacağız. dijital girişiniz veya orta teliniz size dijital giriş 6 pin bağlanacak ve toprak ve pozitifiniz kart üzerindeki pozitif ve negatif raylara bağlanacaktır.

2. Adım: Kürek Kontrolleri

Kürek Kontrolleri
Kürek Kontrolleri
Kürek Kontrolleri
Kürek Kontrolleri
Kürek Kontrolleri
Kürek Kontrolleri

Bu çok basit adım için tek yapmanız gereken her bir potansiyometreye üç kablo lehimlemek. Potansiyometreyi lehim noktaları sizden uzağa bakacak şekilde tutarsanız, sol uç pozitif olacak ve orta uç çıkacak ve sağ uç topraklanacaktır. yukarıdaki şemada gösterildiği gibi

Kabloları lehimledikten sonra onları Arduino'ya bağlayacağız. olumlu ve olumsuz yağmurlara karşılık gelen olumlu ve olumsuz oraya bağlanacaksınız. Potansiyometre üzerindeki çıkış kabloları arduino üzerindeki farklı girişlere bağlanacaktır. biri (A0) fişine diğeri (A1) fişine bağlanacaktır.

Adım 3: Kasayı Kesmek

Kasayı Kesmek
Kasayı Kesmek
Kasayı Kesmek
Kasayı Kesmek
Kasayı Kesmek
Kasayı Kesmek
Kasayı Kesmek
Kasayı Kesmek

bu kısım size kesmeniz gereken şeylerin boyutlarını ve açılarını verecektir.

****çok önemli***** ahşabınızın çeyrek inç (1/4 inç) kalınlığında olduğundan emin olun

ayrıca parçaları keserken parçalarınızı etiketlemeyi unutmayın

kesilecek temel kısım alt, arka, üst, ön üst, ön alt olarak etiketlenecektir…. başlangıçtaki resimlerde gösterilen

parça boyutları

- Alt: 13 3/4 inç X 10 1/4 inç

- Arka: 13 3/4 inç X 15 1/2 inç

- Üst: 13 3/4 inç X 6 1/2 inç

- Ön alt: 13 3/4 inç X 4 1/4 inç

- Arama Paneli: 13 3/4 inç X 6 inç

- İç üst: 13 3/4 inç X 3 1/4 inç

- LED dış cephe kaplaması: 6 1/4 inç X 1 inç (bunlardan ikisini kesin)

- LED İç alt: 13 1/4 inç X 4 1/2 inç

- iç arka LED panel: 13 1/4 inç X 9 inç

- Bloklar: 1 inç X 1 inç X 1 inç (10 blok kesin)

- Akrilik panel: 13 3/4 inç X 6 1/2 inç

Yukarıdaki resimler size yan panel parçasının açılarını ve boyutlarını gösterecektir. ayrıca bu kısımdan iki tane kesmeniz gerekecek

Adım 4: Kasa Montajı

Kasa Montajı
Kasa Montajı
Kasa Montajı
Kasa Montajı
Kasa Montajı
Kasa Montajı

Bu talimatların bu noktasında neredeyse her şeyi bitirdiniz. Muhtemelen tüm bu parçalara ve kesiklere sahip olduğumu düşünüyorsunuz, onlarla ne yapacağım. Bu son adım size kasanızı nasıl monte edeceğinizi öğretecektir.

-Yapacağımız ilk şey, kasayı toplamaya başlamak. önceki adımdaki tüm ahşap kesimlerin işe yaradığı yer burasıdır.

-Montaja başlamak için tabanda 4 adet 1x1x1 ahşap blok, iki yan panel, arka ve ön alta ihtiyacımız olacak. 4 bloğu tabanın her bir köşesine yerleştirin ve adımın başlangıcında ikinci resimde gösterildiği gibi kenar ile blok arasında çeyrek inç bırakın.

-daha sonra tahtadan ve bloklardan bazı pilot delikler açmanız gerekecek. bir kez bu vidayı yaptıktan sonra dibe.

-Ardından yan panelleri takacağız. Panelleri bloğun dış tarafındaki çeyrek inç boşluğa yerleştirin. yan panelden ve ahşap bloktan bir pilot delik açın ve panelleri vidalayın. diğer taraf için tekrarlayın.

-Yan panelleri tamamladıktan sonra. ön alt paneli takacağız. paneli alt kısmı ile aynı hizada olacak şekilde yerleştirin ve yanlarda pilot delikleri bloklara delin ve paneli vidalayın.

-Sonunda sırtını takacağız. ön alt panelde yaptığınızın aynısını yapın ve tekrar vidalayın.

-Bu noktada, inşa etmeniz gereken bir temeliniz ve bu davayı nasıl bir araya getirdiğimize dair bir anlayışınız var.

-Bu sonraki bölüm, daha küçük bir alanla çalıştığınız için biraz daha zor. Başlamak için tüm üst parçalara ve 6 bloğa ihtiyacımız olacak.

-Şimdiye kadar inşa ettiğiniz şeyi sırtına koyun ve blokları üstten çeyrek inç köşelere yerleştirin. (başlangıçtaki üçüncü resimde gösterildiği gibi)

-yan ve arka için pilot delikler açın ve vidalayın.

-şimdi tepenin geri kalanını bir araya getireceğiz

-Üst panelinizi alın ve blokların üzerine yerleştirin, kılavuz delikleri delin ve üstünü vidalayın. Fince yaptıktan sonra montajınızı ***dikkatle*** ters çevirin ve her köşeye kenara paralel birer blok yerleştirin. yan panellerden pilot delikler açın ve bunları bloğa vidalayın. kasayı tekrar dik konuma getirin ve üst kısımdan bloklara pilot delikler açın ve vidalayın.

-bu yuva kısmı biraz zor. ön üst panelinize ve son iki bloğunuza ihtiyacınız olacak. önce üst ön panelinizden önceki bloklara bir pilot delik açın ve vidalayın. şimdi son iki bloğu alın ve köşeye yerleştirin ve yan panelinizi ve ön üst panelinizi bloklara vidalayın. bir kez daha kasayı ters çevirin ve iç üst paneli bloğa yerleştirin ve vidalayın.

- böyle bir şeyle kalmalısın (bu adımın ilk resminde gösterilmiştir)

sonraki adım, montajın geri kalanını açıklayacaktır.

Adım 5: Montajı Bitirmek

Meclisi Bitirmek
Meclisi Bitirmek
Meclisi Bitirmek
Meclisi Bitirmek
Meclisi Bitirmek
Meclisi Bitirmek

Bu noktada, davayı neredeyse tamamladınız ve yerine koymanız gereken birkaç şey inşa ettiniz ve işiniz bitmiş olacak.

Şimdi geriye kalan tek şey elektroniği kurmak.

- Potansiyometreniz için kadran panelinize delikler açarak başlayacağız. rahat olacağını düşündüğünüz delikleri açmaktan çekinmeyin. benim durumumda her iki potansiyometre için delikleri alttan 2 1/2 inç ve yanlardan 3 1/2 inç yerleştirdim.

-Deliklerinizi açtıktan sonra bu paneli kasanın üzerine koyacağız. ancak vidalamak yerine yapıştıracağız, kasanın kenarına bol miktarda yapıştırıcı sürün ve paneli yerleştirin ve bazı kelepçelerle veya ağır bir şeyle tutun.

-Yapıştırıcı kuruduktan sonra elektronik parçaları yerleştireceğiz. Ama önce arka paneli çıkarmamız gerekecek.

-Arka taraf kapandığında, LED'leri ve diğer bileşenleri içeriye yerleştirmeyi kolaylaştırmak için kasayı ön tarafa yerleştirmenizi tavsiye ederim.

-Artık geri döndüğünüze göre, potansiyometreyi sadece açtığımız deliklerden geçirerek ve bol miktarda sıcak tutkal koyarak kasanın içine yerleştireceğiz.

***Dikkat***-Lehim noktaları kırılgan olabileceğinden LED dizisini yerleştirirken son derece dikkatli olun.

-Şimdi en önemli kısma gelmiş bulunuyoruz, led dizisini yerleştiriyoruz. tahtayı ikinci resimde gösterildiği gibi yerleştirin.

-Bir kez led iç panelinizi alın ve kasanın içine doğrudan LED dizisi arka panelinin altına yerleştirin. Bu parça bana sıkı bir uyum sağlayabilir. ayrıca devam etmeden önce kurumasını bekleyin.

-Son kısma ulaştınız. LED'ler ve bu kısım arasındaki kontrast için bu son kısmın (LED İç Arka) bir tarafını siyah veya beyaz boyamanızı tavsiye ederim.

-Bunu doğrudan LED desteğinin arkasına yerleştireceğini bileceğiz ve hareket etmelerini önlemek için LED'lerin arkasına hafifçe bastıracağız. yerleştirdikten sonra hareket etmesini önlemek için kenar boyunca tutkal uygulayın. üçüncü resimde gösterilmiştir.

****tebrikler tüm montajı bitirdiniz!!!

oyunu kodlamak için son adıma geçin

Adım 6: Kod

Buraya kadar geldiğin için bir kez daha tebrik ederim.

Bu bölümde size kodu ve nasıl çalıştırılacağını göstereceğim, ayrıca kodda değiştirebileceğiniz ve kişiselleştirebileceğiniz şeylere ek olarak.

ama buna girmeden önce, indirmeyi de bağladığım (adafruit_NeoPixel-master) ihtiyacınız olacak.

master'ı kurmak için arduino programınızı açın

1. çizime git

2. açık dahil kitaplığı

3. tıklayın (add.zip kitaplığı)

4. (adafruit_NeoPixel-master) dosyasını seçin ve işlemi tamamlayın

Bunun altına oyunun kodunu yapıştırdım.

#Dahil etmek

#Dahil etmek

uzun topXabs = 12;

uzun topYabs = 4;

int topX;

int topY;

int topvelX = 1;

int topvelY = 1;

int indeksi;

int fps = 50;

int palet genişliği = 3;

int paddlemax = 9 - paddlewidth + 1;

int knobseg = 1023 / (paddlemax);

int kürek1 = 4;

int paddle2 = 4;

#define NUMPIXELS 260

#define PIN 6

Adafruit_NeoPixel piksel = Adafruit_NeoPixel(NUMPIXELS, PIN6, NEO_GRB + NEO_KHZ800);

geçersiz kurulum() {

piksel.begin();

Seri.başla(9600);

}

boşluk döngüsü () {

temiz ekran();

updateBall();

updatePaddle1();

updatePaddle2();

displayBall();

displayPaddle1();

displayPaddle2();

piksel.göster();

algılama Çarpışma();

gecikme (fps);

}

void clearScreen() {

for (int i = 0; i < NUMPIXELS; i++) {

piksel.setPixelColor(i, piksel. Color(0, 0, 0));

}

}

geçersiz updateBall() {

ballXabs += ballvelX;

ballYabs += ballvelY;

}

geçersiz algılama Çarpışma() {

Serial.print(ballYabs);

Seri.print(" ");

Serial.println(paddle1);

if (ballvelX > 0 && ballXabs >= 25) { //sağ duvarla çarpışır

Serial.println("ÇarpışmaX");

puan1(); //ballvelX*=-1;

}

if (ballvelX < 0 && ballXabs <= 0) { //sol duvarla çarpışır

Serial.println("ÇarpışmaX");

puan2(); //ballvelX*=-1;

}

if (ballvelY > 0 && ballYabs >= 9) { //üst duvarla çarpışır

Serial.println("ÇarpışmaY"); topvelY *= -1;

}

if (ballvelY < 0 && ballYabs <= 0) { //alt duvarla çarpışır

Serial.println("ÇarpışmaY");

topvelY *= -1;

}

// kürek 2 çarpışmasını algıla

if ((ballvelX > 0 && ballXabs == 24) && ((ballYabs >= paddle2) && (ballYabs <= paddle2 + paddlewidth - 1)))

{ //sağ duvarla çarpış

Serial.println("CollisionPaddle");

topvelX *= -1;

}

// kürek 1 çarpışmasını algıla

if ((ballvelX = raket1) && (ballYabs <= raket1 + kürek genişliği - 1)))

{ //sağ duvarla çarpış

Serial.println("CollisionPaddle");

topvelX *= -1;

}

}

void updatePaddle1() {

int topuzu = analogRead(A0);

paddle1 = yuvarlak((uzun)düğme / (uzun)düğme);

}

geçersiz updatePaddle2() {

int button2 = analogRead(A1);

paddle2 = yuvarlak((uzun)düğme2 / (uzun)düğme);

}

geçersiz displayBall() {

topX = yuvarlak(ballXabs);

ballY = yuvarlak(ballYabs);

if (ballX % 2 != 0) {

indeks = (9 - ballY) + 10 * ballX;

if (ballX != 0) {

piksel.setPixelColor(ballY + 10 * (ballX - 1), piksel. Renk(30, 0, 0)); //ballcolor'un sol tarafı

}

if (ballX != 25) { piksel.setPixelColor(ballY + 10 * (ballX + 1), piksel. Color(30, 0, 0)); //top renginin sağ tarafı

}

if (ballY != 9) { piksel.setPixelColor(index - 1, piksel. Color(30, 0, 0)); //top renginin alt tarafları

}

if (ballY != 0) { piksel.setPixelColor(index + 1, piksel. Color(30, 0, 0)); //top renginin üst tarafları

}

}

Başka {

indeks = ballY + 10 * ballX; if (ballX != 0) {

piksel.setPixelColor((9 - topY) + 10 * (ballX - 1), piksel. Renk(30, 0, 0)); // topun sol tarafı çift sıra

}

if (ballX != 25) {

piksel.setPixelColor((9 - ballY) + 10 * (ballX + 1), piksel. Color(30, 0, 0)); // topun sağ tarafı çift sıra

}

if (topY != 9) {

piksel.setPixelColor(index + 1, piksel. Color(30, 0, 0)); // topun alt tarafları çift sıra

}

if (ballY != 0) { piksel.setPixelColor(index - 1, piksel. Color(30, 0, 0)); // topun üst tarafları çift sıra

}

}

piksel.setPixelColor(indeks, piksel. Renk(255, 0, 0)); ///top renginin merkezi

}

void displayPaddle1() {

for (int i = 0; i < kürek genişliği; i++) { piksel.setPixelColor(paddle1 + i, piksel. Color(0, 0, 255);

}

}

geçersiz displayPaddle2() {

for (int i = 0; i < paddlewidth; i++) { piksel.setPixelColor(NUMPIXELS - 1 - paddle2 - i, piksel. Color(0, 0, 255));

}

}

geçersiz puan1() {

resetBall(0);

}

geçersiz puan2() {

resetBall(1);

}

void resetBall(int player) {

gecikme(1000);

topXab'ler = 12

; topYabs = 4;

ballvelX = oyuncu ? 1: -1;

ballvelY = 1;

temiz ekran();

gecikme(1000);

displayBall();

piksel.göster();

gecikme(1000);

displayPaddle1();

displayPaddle2(); piksel.göster(); gecikme(2000); }

Adım 7: Bitirme

Bitiricilik
Bitiricilik

Kodu yükledikten sonra, arka panelde varil jakı güç adaptörünüz için yeterince büyük bir delik açın. arduino'ya takın ve son olarak arkayı yeniden monte edin.

Ayrıca parça listesine LED difüzör akrilik ekledim, şimdi bunu LED'lerin üzerine yerleştirip yapıştırabilirsiniz

Bunu yaptıktan sonra, ailenize ve arkadaşlarınıza karşı saatlerce süren rekabetçi oyunları oynamaya ve keyfini çıkarmaya hazırsınız.

Son olarak projeyi tamamladığınız için sizi tebrik etmek istiyorum.

Herhangi bir sorununuz varsa, buradan benimle iletişime geçin ve sorunu çözmenize yardımcı olmayı çok isterim.

Önerilen: