İçindekiler:
- Adım 1: Malzemeler ve Araçlar
- 2. Adım: LED Şeridi Daha Küçük Şeritlere Kesin
- Adım 3: Ekranı Birlikte Lehimleme
- Adım 4: Çekirdek Elektroniği Lehimleme
- Adım 5: Denetleyici
- Adım 6: Gömlek
- Adım 7: Programlama
- Adım 8: Bitmiş Ürün
Video: Tişört Üzerinde Esnek Ekranda Pong Oynamak: 8 Adım (Resimli)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:21
Bu benim 2013 yılı Cadılar Bayramı kostümüm. Yaklaşık bir yıldır üzerinde çalışıyorum ve yaratması epeyce adam saatini aldı. Ekran 14 x 15 piksel, yani oldukça düşük çözünürlük ama yine de eğlenceli şeyler yapabilir. Hasar görmeden katlanamasa da fiziksel olarak her yöne esnektir. USB üzerinden bir pro mega'ya bağlı tek bir düğme ve sürgülü tencereden oluşan bir denetleyiciye sahiptir. Onu uzun süre canlı tutmak için gerekli voltajı elde etmek için seri olarak bağlanmış iki korkunç 2200 mAh pil ve ardından onu kullanılabilir hale getirmek için 5 Voltluk bir regülatör kullanır. Tüm elektronik parçalar gömleğin içindeki ceplere yerleştirilmiştir, böylece bunlar çıkarılabilir ve gömlek yıkanabilir. İşlevsel bir pong oyunu oynar. İlk önce Tom Thumb yazı tipinin değiştirilmiş bir versiyonunu kullanarak güzel mavi harflerle "PONG PLAY" kelimelerini süslüyor (https://robey.lag.net/2010/01/23/tiny-monospace-font adresinde bulunabilir)..html). Beş saniye sonra, ilerlemek için düğmeye basma veya düğmeye basmama ve geride mükemmel bir deneyim bırakma seçeneği verilebilir. Düğmeye basmayı seçtiğinde oyun başlar. Sağdaki kırmızı kürek bilgisayar raketidir ve sağdaki yeşil kürek, yukarı ve aşağı hareket etmek için sürgülü pot tarafından kontrol edilen oyuncu küreğidir. Her iki taraf da bir puan kazanmaya çalışırken top etrafta zıplar. Oyuncu, bilgisayarı hızlandırmak için raketlerinin kenarıyla topa vurabilir (güzel bir özellik), bilgisayar bunu yapamaz ve bunun yerine toptan biraz daha yavaş hareket ederek sıkışıp kalır. Bir nokta puanlandığında, puanlama tarafındaki kürekte bir piksel beyaza dönüşür. Alttan ikili olarak sayılır. burada yeşil veya kırmızı sıfır ve beyaz 1. 21 kazanılacak puandır (veya kimin 21 puan aldığına bağlı olarak kaybeder) ve böylece oyuncu kürek 10101 okuduğunda, "KAZANDINIZ" metni görüntülenir. Bir kez daha değiştirilmiş Tom Thumb'da. Aynı şey olur, ancak bunun yerine "SEN KAYBET" görüntülenir. Bir galibiyet veya kayıptan sonra oyun, Pong Play'den hemen sonraki noktaya kadar yeniden başlar. Tamamen yeniden başlatmak için, ekran hariç tüm elektroniklerin bulunduğu kutu olarak da bilinen "Sihirli Kutu" üzerindeki yeniden başlatma düğmesine basılır.
Adım 1: Malzemeler ve Araçlar
* ile işaretlenen şeyler isteğe bağlıdır ancak tavsiye edilir Ve bu nedenle belirli bir sıra yoktur… Malzemeler: 4 Metre Adafruit Neopixle Metre başına 60 piksel şerit 1 T-shirt * 1 çift Jartiyer 1/2 yard kumaş fazlasıyla yeterli olacaktır (Non esnek dokuma tercih edilir) 6 fit USB A erkek - USB B erkek kablo 1 USB A dişi konnektör 3 2 pin JST dişi konnektör 4 2 pin JST erkek teller pil şarj cihazı 2 6600 mAh pil 1 Arcade tarzı Düğme 1 arduino pro-mega 1 FTDI başlığı 1 USB B dişi konnektör, ara kartı ile 1 açma/kapama anahtarı (geçişli) 1 sıfırlama anahtarı (geçişli veya anlık) 1 sürgülü potansiyometre *1 sürgülü pot düğmesi 1 yüksek amper konektör çifti *1 proje çantası 1 5V 3+ amper voltaj regülatörü küçük biraz plastik biraz lehim biraz tel biraz iplik * biraz sıcak tutkal * biraz elastik biraz zaman (Belki "biraz" dan biraz daha fazla) biraz azim (muhtemelen bundan biraz daha fazlasına ihtiyacınız olacak) biraz ısıyla daralan makaron veya elektrik bandı Destek üzerine biraz süper yapıştırıcı biraz demir Aletler *Yardımcı Eller Normal El s (veya bunlara erişimi olan biri) Havya *Sıcak Tutkal Tabancası Dremel veya Zımpara Kağıdı Keski Tel Sıyırıcılar Tel Kesiciler Zımba Tabancası Tornavida Testere Pimleri Dikiş Makinesi Kumaş Makasları
2. Adım: LED Şeridi Daha Küçük Şeritlere Kesin
Tercih ettiğiniz kesme aletini kullanın ve şeridi her biri 15 piksel uzunluğunda 14 parçaya kesin. Yalnızca bakır izleri arasında kesin, "DO" "DIN" "+5V" ve "GND" gibi bir şey etiketleyin. Zaten bakırın üzerine lehimlenmişse, hemen kesilirler. Açıkta kalan bakırı çok fazla kesmemeye çalışın, ancak biraz çentik atarsanız, sorun değil. 14 şeridin tamamı kesildikten sonra, şeritleri lehimleme yolundan çıkarmak için her iki uçtan biraz kauçuk kesin.
Adım 3: Ekranı Birlikte Lehimleme
Kabloyu alın ve yaklaşık 3,5 inç (9 cm) parçalara kesin. Benim durumumda, lehimleme sırasında düz kalmayı kolaylaştırmak için üç farklı rengim var, ancak bir renk gayet iyi çalışır. Bu küçük adamlardan yaklaşık 40'a ihtiyacınız olacak, ancak her ihtimale karşı birkaç tane daha kesin. Teli kesmeyi bitirdikten sonra, uçlarını şeritleyin ve kalaylayın (lehimleme deneyiminiz varsa bir sonraki paragrafa geçebilirsiniz), yani küçük bir parça plastiği çıkardıktan sonra her telin ucuna biraz lehim koyun. Lehimi ısıtmayın ve tele geçiş yapmaya çalışmayın, havya ile bakırın altından ısıtıp üstüne lehimi koyun. Sabırlı olun ve sıcak telin lehimi eritmesini bekleyin. Başlamak için havyayı lehime sertleştirmek caziptir (Sabırsızlığım ve tam olarak nasıl hissettiğinizi biliyorum) ancak lehim de yapışmaz. Şerit bölümlerinin her iki ucundaki açıkta kalan bakır izleri için de aynısını yapın. Zaten lehim varsa, bunun için endişelenme. Şerit için daha sonra kolaylaştırmak için küçük bir höyük oluşturmak isteyebilirsiniz. Şeritle çalışırken, hızlı bir şekilde yapın ve şeride ısı uygulayarak fazla zaman harcamamaya çalışın. Lehimi iz üzerinde eritmek için sadece yapmanız gerekeni yapın. İlk şeridin sonuna kadar her iz üzerinde bir tel lehimleyin (İlk şerit, telleri ve konektörü olandır, açıkta kalan uca lehimleyin). Şeride bakarsanız, teli lehimlediğiniz yere kadar üzerinde küçük oklar göreceksiniz. Oklar zıt yönü gösterecek şekilde başka bir şerit alın ve GND izinden gelen teli diğerinin GND izine, +5V'den +5V'ye vb. lehimleyin. Bunu, her bölümden sonra okların yön değiştirdiğinden emin olarak tekrarlayın, böylece onları izlerseniz yukarı ve aşağı zikzak çizin ve sonunda uzun şerit üzerine uzatılabilir. 14 şeridin tümü lehimlendikten sonra, bunları yerleştirin ve ardından LED'ler bir ızgara oluşturacak şekilde hizalayın. Ardından, şeride zarar vermeden daha sonra çıkarılabilen bir yöntemle bunları bir arada tutun. Ben scotch bant kullandım. Her şeyi bir arada tutacak kadar yapışkan ama kalıntı bırakacak kadar yapışkan değil. Zımba veya koli bandı gibi kalıcı hiçbir şey önermiyorum. Her şey birbirine bantlandıktan sonra, +5V altındaki şeritten hemen yanındakine bir tel lehimleyin. Alt kısmın tamamında güç muslukları sonuna kadar gidene kadar tekrarlayın. Bu, LED'lerin çizgisi ilerledikçe ekranın kararmaması içindir.
Adım 4: Çekirdek Elektroniği Lehimleme
USB B bağlantı kartını (BOB) USB B konektörüne lehimleyin. Uygun kabloları USB A konektörüne lehimleyin. https://image.pinout.net/pinout_USB_files/pc_usb_connectors_pinout-p.webp
Adım 5: Denetleyici
Birincisi, başlamak için doğru şekli seçmektir. Her şey, denetleyicinin nasıl yapılandırılmasını istediğinize bağlıdır. Daha çok düz bir kontrolör istedim, bu yüzden 3 1/2" x 3/4" tahta parçası aldım. parçaları uyumlu ve çalışmak için rahat görünecek şekilde düzenleyin. Tüm parçaların nereye gitmesi gerektiğini çizmek için bir fransız eğrisi, pusula, üçgen ve düz kenar kullanın. Seçtiğiniz kesme aletini kullanarak temel taslağı kesin. Bir yasaklama testeresi en iyisi olurdu ama ben iyi çalışan bir başa çıkma testeresi kullandım. Kenarları pürüzsüz hale getirmek için zımparalayın, ardından daha rahat hale getirmek için köşeleri zımparalayın. Anahtarın deliğini delin, ardından zımparalayın, keskileyin ve/veya Dremel'i altta uygun hale getirecek herhangi bir parçayı çıkarın. Üst kısımla hiçbir şey yapmamaya çalışın ve sadece bükerek, açı vererek veya içeri girmesi için başka herhangi bir şeyle sığdırabilmeniz için gerekenleri zımparalayın. Yerleştirdikten sonra plastik somunla tutturun ve değiştirmek. Potansiyometre topuzunun sığacağı alanı delin ve bir alanı keserek çıkarın, böylece batabilir ve tamamen sığabilir. Bir vidanın tutabilmesi için birkaç delik açın. USB A konektörünün genel genişliğini biraz artıracak küçük parçalarını bükün (resimlere bakın). Konektör için bir parça kesip ayırın, konektörün oturduğundan emin olmak için aşamalı olarak kontrol edin. Konektörü yuvasına süper yapıştırın. Küçük bir plastik parçası alın ve konektörün üzerine oturacak şekilde kesin (resimlere bakın) ve ardından tahtaya zımbalayın. Yola çıkabilecek parçaları kesin. Potansiyometreyi vidalayın ve düğmeyi takın. Pozitif kabloyu potansiyometrenin uçlarından birine (değişken kısım değil) ve negatif kabloyu karşı uca lehimleyin. D-pinini pot üzerindeki değişken pime lehimleyin. Pota üzerindeki pimden pozitif tel ile düğme üzerindeki pimlerden birine bir tel lehimleyin. Düğmedeki diğer pime D + lehimleyin. Yedek teli kesin ve ihtiyacı olan parçaları yalıtın.
Adım 6: Gömlek
Işığın geçmesine izin verecek rahat bir gömlek bulun. Bu basic beyaz tişörtü seçtim. İçeriden parlayan ışık görülebildiği sürece, renk veya stil gerçekten önemli değil. Ancak ön taraftaki grafikleri önermiyorum. İstediğiniz yere karar vermenize yardımcı olması için gömleğin üzerine her şeyi yerleştirin ve üzerine çizmek için silinebilir bir işaretleme aracı kullanın. Ben (tanıdığım bazı insanlar) kumaşları işaretlemek için tasarlanmış ve kolayca yıkanan bir kalemim var. Pillerin, kontrolör kasasının ve ekranın boyutunu ölçün ve buna uygun kağıt parçalarını kesin. Ardından kağıdı esnek olmayan bir kumaş parçasına iğneleyin. Bir örgü bunun için iyi çalışır. Ardından, çevresinde bir dikiş için yaklaşık çeyrek inç bırakarak dikdörtgeni kesin. Ardından kağıt parçasını kılavuz olarak kullanarak kıvrımları kumaşa ütüleyin. Şimdi kağıt çıkarılabilir. Cebin en üstte olacak kısmında kendi üzerine üç kez katlayın. Ütüleyin ve yerinde tutmak için sabitleyin. Katın ortasından sonuna kadar bir görünüm dikin. Şimdi köşeyi alın ve birbirine dik dikilmemiş kenarlar paralel olacak şekilde katlayın ve köşeye en yakın ütülenmiş kırışık boyunca bir görünüm dikin (Resimler gerçekten yardımcı olur). Bunu diğer köşe için de yapın. Eğer cebinizden bir geçiş anahtarı çıkacaksa, cebin tabanında anahtarın değdiği yere bir düğme deliği dikin. Ardından bir düğme deliği dikin ve orta kısmı kesin. Gerçekten ayrıntılı talimatlar veremem çünkü ilik açmak için harika bir aletim vardı. Sadece cep dikilmeden önce delikleri açtığınızdan emin olun. Birkaç iğne alın ve cebin işaretlerinin köşelerinden gömleğin içinden geçirin. Cebi alın ve her köşeyi bir pime (gömleğin iç tarafına) yerleştirin, dikiş için çeyrek inç bırakın ve gömleğe sabitleyin. Cep sabitlendikten sonra. cebi tutmayan pimleri çıkarın ve cebi gömleğe dikin. Tüm cepler için tekrarlayın. Ekranı tutan büyük cep için, cebin altındaki teller için bir boşluk bırakın. Gömleğe bir delik açmak için yeri işaretleyin ve arkası (kumaşın daha parlak kısmı ile) üzerine bir ütü alın ve ütüleyin. Ardından, küçük bir delik için (geçiş anahtarı için kullandığım gibi), bir düğme deliği yapın. Daha büyük bir delik için, taslağı işaretleyin ve çizgi boyunca (veya eğri ya da neye sahipseniz) bir zikzak dikiş kullanın ve orta kısmı kesin. Dilerseniz ceplerin ağırlığını tutmak için askıları, öndeki cepleri tutan iki klipsi ve pantolonun arkasını tutan iki klipsi kullanabilirsiniz. Askıların tenime değecek kısımlarına da küçük bir kol kumaş diktim. İki gömlek biraz fazla ısınabilir, bu yüzden vazgeçtim ve küçük kumaş kılıfı kullandım.
Adım 7: Programlama
Ve işte kod. İyi yorumlanmış birkaç bölüm var ama büyük çoğunluğu değil. Farklı kısımlar hakkında sorularınız varsa, bana satır numarasını (bir numaralı satır olarak #include ile) verebilir veya satır(lar)ın ve içinde bulunduğu işlevin (loop() veya compMovePaddle(gibi) bir kopyasını verebilirsiniz.)) ve bunu size açıklamak için elimden geleni yapacağım, ardından açıklayan koda bir yorum ekleyeceğim. #include #define PIN 6 //oyun için giriş pinlerinin hangileri olduğunu söyler int buttonPin = 40; // esier olduğu için ikili dizide tutulan puanı belirler int playerScore[5] = {0, 0, 0, 0, 0}; int compScore[5] = {0, 0, 0, 0, 0}; //topun yönünü belirler int bvd=0;//0 aşağı, 1 yukarı int bhd=0;//0 sağ, 1 sol //topun konumunu belirler int bvp = 8; int bhp = 6; //topun hızlı modda olup olmadığını kontrol eder boolean fast = false; // puan olup olmadığını kontrol eder. boolean cIsPoint = yanlış; boolean pIsPoint = yanlış; //paddle konumları int cPaddle = 0; int pPaddle = 0; uzun öncekiMillis = 0; uzun öncekiMillisForComp = 0; //hızlı ve yavaş hareket eden top için gecikme sürelerini ayarlayın normInt'deki "Int" ve fastInt aralık içindir int normInt = 50; int fastInt = 10; //kazanmayı kontrol etmek için kullanılır. 1 oyuncu kazanır, -1 bilgisayar kazanır ve 0 henüz hiçbir şey olmadı int win = 0; // bir hatadan kurtulmak için. addOne deyiminde kullanılır ve başka hiçbir yerde kullanılmaz. int = 0; //Başlamadan önce görüntülenen şey, -1 bir escape int pongPlay = {1, 2, 3, 4, 10, 11, 12, 13, 16, 18, 20, 27, 29, 33, 34, 41, 42, 61, 62, 63, 70, 71, 72, 76, 85, 86, 88, 91, 92, 94, 100, 101, 102, 103, 131, 132, 136, 139, 144, 145, 146, 147, 148, 161, 162, 166, 175, 183, 185, 192, 194, 195, 196, 197, 198, 199, 204, 205, 206, 207, 208, -1}; //eğer kazanırsan int youWin = {1, 2, 3, 4, 5, 16, 17, 18, 19, 20, 27, 33, 34, 39, 46, 47, 48, 49, 54, 55, 56, 57, 58, 77, 78, 79, 84, 88, 91, 92, 93, 94, 95, 99, 103, 106, 110, 114, 118, 130, 131, 132, 144, 145, 146, 147, 151, 162, 163, 168, 169, 170, 177, 181, 192, 193, 204, 205, 206, 207, -1}; //eğer kaybedersen int youLose = {1, 3, 5, 16, 17, 18, 19, 20, 24, 26, 28, 31, 32, 32, 33, 34, 35, 39, 46, 47, 48, 49, 62, 65, 77, 78, 79, 84, 86, 88, 91, 94, 99, 103, 106, 110, 122, 123, 124, 130, 131, 132, 144, 148, 152, 153, 154, 162, 163, 168, 169, 170, 181, 192, 193, 204, 205, 206, 207, 208, -1}; // led şeridi kurar Adafruit_NeoPixel şeridi = Adafruit_NeoPixel(210, PIN, NEO_RGB + NEO_KHZ800); //kurulum, giriş için pin 40'ı döndürmez, şeridi başlatır, //mesajı görüntüler ve gösterir. geçersiz kurulum() { pinMode(buttonPin, INPUT); strip.begin(); for (int i = 0; pongPlay>0; i++){ strip.setPixelColor(pongPlay, strip. Color(0, 0, 255)); } şerit.göster(); gecikme (5000); while (digitalRead(buttonPin) == LOW){ //Bu bir tuzak!(düğmeye basılana kadar.) } } void loop() { clearScreen(); //(int i = 0; i < 5; i++){ if (playerScore==1){ strip.setPixelColor(204-i, strip. Color(255, 255, 255)); }else if((playerScore==0)){ strip.setPixelColor(204-i, strip. Color(0, 255, 0)); } if (compScore==1){ strip.setPixelColor(5+i, strip. Color(255, 255, 255); }else if((compScore==0)){ strip.setPixelColor(5+i, strip. Color(255, 0, 0)); } } //topu başlangıç pozisyonuna çeker strip.setPixelColor(98, strip. Color(255, 255, 255); şerit.göster(); //topun yukarı mı aşağı mı gideceğine karar verir while(pIsPoint == false && cIsPoint == false){ clearScreen(); imzasız uzun akımMillis = millis(); //oyuncu kürek konumunu atar pPaddle=checkPaddlePos(); //bir sonraki konumu kontrol eder checkNext(); //topu hareket ettirmek if (hızlı == false){ if(currentMillis - öncekiMillis > normInt){ öncekiMillis = currentMillis; hareketTop(); } }else if(hızlı == true){ if(currentMillis - öncekiMillis > fastInt){ öncekiMillis = currentMillis; hareketTop(); } } //topu çiz if(bhp%2 != 0){ strip.setPixelColor(bhp*15+14-bvp, strip. Color(255, 255, 255); }else if (bhp%2 == 0){ strip.setPixelColor(bhp*15+bvp, strip. Color(255, 255, 255); } //bilgisayar kürek hareketi compMovePaddle(); // kürekler çizin drawPaddles(); //aslında her şeyi koy.şerit.göster(); //bir puanın puanlanıp puanlanmadığını kontrol etmek if (pIsPoint == true){ that = 0; bhd=0; addOne(); kırmak; }else if(cIsPoint == true){ olan = 1; bhd=1; addOne(); kırmak; } } if (kazan == 1){ clearScreen(); for (int i = 0; youWin>0; i++){ strip.setPixelColor(youWin, strip. Color(255, 0, 0)); şerit.göster(); } gecikme (5000); for (int i = 0; i < 5; i++){ playerScore = 0; compScore = 0; } kazanmak = 0; }else if (win == -1){ clearScreen(); for (int i = 0; youLose>0; i++){ strip.setPixelColor(youLose, strip. Color(0, 255, 0)); şerit.göster(); } gecikme (5000); for (int i = 0; i < 5; i++){ playerScore = 0; compScore = 0; } kazanmak = 0; } pIsPoint = yanlış; cIsPoint = yanlış; bvp = 8; beygir = 6; bvd=rastgele(0, 2);//0 aşağı, 1 yukarı hızlı=yanlış; } //Oyun için yapay zeka void compMovePaddle(){ unsigned long currentMillis = millis(); if(currentMillis - öncekiMillisForComp > 51){ öncekiMillisForComp = currentMillis; if (bvp >= 13 && 10-cPaddle 0){ cPaddle--; }else if(bvp = 0 && cPaddle < 10){ cPaddle++; }else if(bvp-3 > 10-cPaddle && 10-cPaddle >= 0 && cPaddle > 0){ cPaddle--; }else if(bvp < 10-cPaddle && 10-cPaddle <= 10){ cPaddle++; } } } //topu hareket ettirir void moveBall(){ if (bhd == 0){ bhp--; }else if(bhd == 1){ bhp++; } if (bvd == 0){ bvp--; }else if(bvd == 1){ bvp++; } } //diziye bir tane ekler. Hangisi 0 ise oyuncunun puanına eklenir. 1 ise, bilgisayarlara void addOne(){ if (ki == 0){//eğer oyuncunun puanıysa //Bir ekleyin. Bu, bildiğim en basit yol. for (int i=0; i < 5; i++){//loop if (playerScore == 0){//bu değer sıfır ise playerScore=1;//yap 1 break; //o zaman uzaklaş }else {//eğer 1 playerScore=0;//sıfır yap ve döngü yap } } }else if(hangisi == 1){ for (int i=0; i < 5;i++){ if (compScore == 0){ compScore=compScore+1; kırmak; }else { compScore=0; } } } //Birinin kazanıp kazanmadığını kontrol eder. if (compScore[0]==1 && compScore[2]==1 && compScore[4]==1){ win = -1; }else if (playerScore[0]==1 && playerScore[2]==1 && playerScore[4]==1){ win = 1; } } //bir sonraki pozisyonda topları kontrol eder void checkNext(){ //bir puanın olup olmadığını kontrol eder if (bhp == 13){ pIsPoint = true; }else if(bhp == 0){ cIsPoint = true; } //eğer bir puan alınırsa, bu şeylerin geri kalanını atlamak yerine if (pIsPoint == false || cIsPoint == false){ //topu dikey olarak kontrol eder if (bvp+bvd==15){ bvd = 0; }else if(bvp+bvd==0){ bvd = 1; } //topu yatay olarak kontrol eder if (bhp+bhd==13){//bilgisayar tarafında ilk önce if (bvp >= 10-cPaddle && bvp <= 10-cPaddle+4){ if(bhd==1) { bhd=0; }else if(bhd==0){ bhd=1; } hızlı = yanlış; }else if(bvp+bvd == 10-cPaddle || bvp+bvd == 10-cPaddle+5){ if(bvp != 0 && bvp !=14){ if (bvd == 0){ bvd=1; }else if(bvd == 1){ bvd=0; } bhd=1; }else if (bvp == 0 || bvp == 14){ bhd=1; } hızlı = yanlış; } }else if(bhp+bhd==1){//sonra oyuncu tarafında if (bvp >= pPaddle && bvp <= pPaddle+4){//rakete normal bir noktadan mı vuruyor? //topu Sektir! if(bhd==1){ bhd=0; }else if(bhd==0){ bhd=1; } }else if(bvp+bvd == pPaddle || bvp+bvd-5 == pPaddle){//köşedeki küreğe çarpıyor mu if(bvp != 0 && bvp !=14){//öyle mi yukarı veya aşağı değil mi? //Topu Sektir! if (bvd == 0){ bvd=1; }else if(bvd == 1){ bvd=0; } bhd=1; hızlı = doğru; }else if (bvp == 0 || bvp == 14){//yukarı mı aşağı mı yukarı mı? //topu Sektir! bhd=0; fast = true;//topu daha sonra hızlı hareket ettirmek için değeri ayarlayın } } } } } int checkPaddlePos(){ //potu okur ve buna göre raket pozisyonuna karar verir if (analogRead(A15)<93){ return 0; }else if(analogRead(A15)<186){ return 1; }else if(analogRead(A15)<279){ return 2; }else if(analogRead(A15)<372){ return 3; }else if(analogRead(A15)<465){ return 4; }else if(analogRead(A15)<558){ return 5; }else if(analogRead(A15)<652){ return 6; }else if(analogRead(A15)<745){ return 7; }else if(analogRead(A15)<837){ return 8; }else if(analogRead(A15)<=931){ return 9; }else if(analogRead(A15)<=2014){ return 10; } } void drawPaddles(){ //paddle'ları doğru noktada çizer ve raketteki puanı for(int i = 0; i < 5; i++){ if (playerScore==1){ strip. setPixelColor(pPaddle+i, strip. Color(255, 255, 255); }else if((playerScore==0)){ strip.setPixelColor(pPaddle+i, strip. Color(255, 0, 0)); } if (compScore==1){ strip.setPixelColor(199+cPaddle-i, strip. Color(255, 255, 255); }else if((compScore==0)){ strip.setPixelColor(199+cPaddle-i, strip. Color(0, 255, 0)); } } } void clearScreen(){ for(int i=0; i<=210; i++){ strip.setPixelColor(i, strip. Color(0, 0, 0)); } şerit.göster(); }
Adım 8: Bitmiş Ürün
Ve işte, bitmiş gömlek!
Önerilen:
GlassCube - Cam PCB Üzerinde 4x4x4 LED Küp: 11 Adım (Resimli)
GlassCube - Cam PCB'lerde 4x4x4 LED Küp: Bu web sitesindeki ilk talimatım, cam PCB'leri kullanan bir 4x4x4 LED Küp oldu. Normalde aynı projeyi iki kez yapmaktan hoşlanmam ama son zamanlarda Fransız yapımcı Heliox'un bu videoya rastladım ve bu video bana orijinal projemin daha büyük bir versiyonunu yapma konusunda ilham verdi
Arduino DIY 6x6 Matrix Tişört: 8 Adım (Resimli)
Arduino DIY 6x6 Matrix Tişörtü: İlk talimatlarıma hoş geldiniz! Size yaklaşık 50€'ya kendi LED matrix tişörtümü nasıl yaptığımı ve Tyler Jones'un harika LED matrix kontrol yazılımını kullanarak güzel animasyonları ve resimleri nasıl gösterebileceğimi göstermek istiyorum. İlk başta 6x8 piksel m yaptım
MANYETİK ESNEK KOLLU GÜNEŞ KABLOSUZ LAMBA: 8 Adım (Resimli)
MANYETİK ESNEK KOLLU GÜNEŞ KABLOSUZ LAMBA: Bu proje kırık bir lambadan yapılmıştır. düğümMCU. Bu dekoratif lamba herhangi bir yöne ayarlanabilir. manyetik malzemelere yapıştırılır veya masaya konur. Aşağıdaki gibi iki modda kontrol edilebilir: - Kablosuz kontrol modu, aşağıdaki gibi
Stranger Things LED Tişört: 8 Adım (Resimli)
Stranger Things LED Tişört: İhtiyacınız olacak malzemeler: 1x Düz Beyaz T-Shirt Mat Siyah Kumaş Boyası (Amazon) 26x Adreslenebilir RGB LED'ler (Polulu) Lehim ve Elektrik Teli Isıyla Daralan Makaron (Maplin) 1x Arduino Uno 1x USB Pil Paketi 1x USB-A Kablosu 1x İğne & Beyaz Tehdit
Lasercut Esnek İletken Kumaş İzleri: 6 Adım (Resimli)
Lasercut Esnek İletken Kumaş İzleri: Esnek olmayan kumaştan iletken kumaş izleri nasıl yapılır ve bunları esnek kumaşa yapıştırın. İhtiyacınız olacak: İletken kumaş. Less EMF'den Cobaltex kullandım http://www.lessemf.com/fabric.htmlWonder Under veya başka bir ütüyle yapışkan kaplama (