İçindekiler:

Osu! Klavye: 8 Adım (Resimlerle)
Osu! Klavye: 8 Adım (Resimlerle)

Video: Osu! Klavye: 8 Adım (Resimlerle)

Video: Osu! Klavye: 8 Adım (Resimlerle)
Video: ışıksız klavyeyi ışıklı yapma #shorts 2024, Kasım
Anonim
Osu! Tuş takımı
Osu! Tuş takımı

Geçenlerde osu adında bir ritim oyunu oynamaya başladım! ve ticari bir mini klavyenin videosunu gördükten sonra kendim tasarlamanın eğlenceli bir proje olacağını düşündüm. Bundan kısa bir süre sonra, ilk projem olarak onu talimatlara koymanın iyi bir fikir olacağına karar verdim.

Bu projeyi aynen son talimata kadar tekrarlamak istiyorsanız, o zaman benim konuğum olun, ancak verdiğim bazı kararlar en düşük fiyat veya en iyi kaliteye dayanmıyor. Bazı bileşenler neredeyse tamamen seçildi çünkü onları etrafta dolaştırdım. Eğer halledebilirsen, projeni kişiselleştirmen için seni teşvik ederim.

Not 1: SMD bileşenleri (küçük elektronikler) kullanılır, bu nedenle bu projeyi tekrarlarsanız lehimleme becerileri gerekir. belki lehimlenmesi kolay bir versiyon eklenecektir ama bu ledler oluk deliği paketinde gelmiyor

Not 2: Kodu birden çok kez güncelledim ve şimdi sürüm 3'e geçtim. Tüm kodu çevrimiçi bırakacağım ama son sürümü kullanmanızı tavsiye ederim. Şu anda led işlevine sahip değil, ancak en iyi performans gösteren olmalıdır.

Adım 1: Malzemeler ve Açıklamalar

Malzemeler ve Açıklamalar
Malzemeler ve Açıklamalar

Projenizi nasıl yaptığınıza bağlı olarak farklı bileşenlere ihtiyacınız olabilir, ancak bu bileşenler benim kullandıklarım. Vaktiniz varsa ve paradan tasarruf etmek istiyorsanız, aliexpress formu sipariş edin ve PCB'yi sipariş etmeyin.

1 Arduino pro mikro + USB kablosu

3 Kailh BOX kırmızı anahtar

3 10k direnç (0805 SMD)

3 100nF kapasitör (0805 SMD)

4 APA102 RGB LED (5050 SMD)

3 Tuş

1 Bu projede sağlanan baskılı devre kartı (PCB)

Bu projede sağlanan 1 adet 3D baskılı kılıf

Neden bir Arduino pro mikro kullanıyorum?

Uno (Atmega328) gibi çoğu arduino kartı, USB iletişimi için yerel desteğe sahip değildir. Evet, onları USB üzerinden çok kolay programlayabilirsiniz ve sanırım geçici çözümler var, ancak USB iletişimi söz konusu olduğunda bunu basit tutmayı seviyorum ve geçici çözümlerin bu kadar duyarlı olup olmadığını bilmiyorum. Bu kartlar, USB iletişimini mümkün kılmak için harici bir çip kullanırken, Arduino pro micro (Atmega32U4) yerleşiktir.

anahtarlar

Kullanabileceğiniz birçok mekanik anahtar vardır. Kailh veya Cherry MX'den doğrusal, dokunsal veya tıkırtı. Hangisini seviyorsan onu seç. Ailexpress'te ucuz oldukları için Kailh anahtarlarını kullandım. PCB kullanmayı seçerseniz, Kailh BOX anahtarlarına ihtiyacınız olacaktır. Renk hissi belirler.

elektronik bileşenler

Bu bölümde onlar hakkında çok fazla açıklama yok, ancak PCB kullanmıyorsanız, lehimleme kolaylığı için sadece normal oluk deliği bileşenlerini tavsiye ederim. Ne yazık ki kullanılan ledler çukur paketlerde mevcut değildir. Lehimleme becerilerinizden çok emin değilseniz, SMD paketlerinde tel kullanmanızı da tavsiye etmem. PCB üzerindeki SMD için bile "ileri" lehimleme becerileri gereklidir.

konut

Bu projede bir konut sağlıyorum, ancak şu anda kusurlu. Cıvataları takmak için modifikasyonlar gerekiyor, ledlerin açıklıkları uygun değil, arduino açıkta ve USB'nin sığması için bir parçanın kesilmesi gerekiyor. Gelecekte yeni bir konut eklenebilir. Bir 3D yazıcınız varsa, devam edin ve yazdırın, ancak lütfen bu kusurlu durumu yazdırmak için kendi yolunuzdan çıkmayın ve sadece bir tür proje kutusu kullanın.

Adım 2: Şematik

şematik
şematik

Bu projenin şeması oldukça basit, ancak bu uygulamayı merak eden ve bilmeyenler için bileşenlerini açıklamak istiyorum.

Bağlantıları Arduino'ya değiştirin

Anahtarlar Arduino pinleri 0, 2 ve 3'e bağlıdır çünkü bu pinler harici kesme olarak kullanılabilir. Bu, kod bölümünde daha ayrıntılı olarak açıklanmaktadır.

geri tepme devresi

Şemanın sol tarafında 3 kez kopyalanmış bir devre vardır. Bu devre, anahtarı devre dışı bırakmak için kullanılır. Zıplamanın ne olduğunu bilmek için, zıplamayı anlamanız gerekir ve bunu anlamak zor değildir.

İlk resmi boyamak için ilk önce bu simülasyona bakın (düğmeye hızlı tıklayın ve aşağıdaki sinyale bakın)

Bir düğmeye bastığınızda veya bıraktığınızda, zıplar ve sinyaliniz birkaç milisaniye boyunca birkaç kez yüksek ve düşük arasında değişir. Bir Arduino gerçekten hızlıdır ve bu kısa sürede her yüksek ve düşük okur. Program, yüksek veya düşük her okunduğunda bir tuşa basma veya bırakma gönderir, böylece her basışta bilgisayarınız birden fazla tuşa basar. Bir ritim oyunu için ideal değil.

Bu geri tepme devresi, sinyalin düşen kenarını yavaşlatacaktır. Arduino'ya giden sinyal, zıplama meydana geldiği kadar hızlı değişemeyecektir, bu nedenle tek bir basış olarak okunacaktır. Bir sonraki gerçek baskı için yavaşlaması konusunda endişelenmeyin çünkü öyle olacak.

İleri:

Atmaga32U4, 0,2Vcc - 0,1V = 0,9 voltta bir dijital düşük okur. Kapasitörün deşarj olduğu herhangi bir andaki voltajı Vcc * e^(-t/RC)'dir. Anahtarınız üzerinde farklı bir geri dönme süresi ölçerseniz, direnç ve kapasitör değerlerinizi hesaplayabilirsiniz.

formül formu

LED'ler

RGB LED'ler, bir saat ve veri hattı kullanılarak ayrı ayrı adreslenebilen APA102 ledleridir. Çalışmaları için harici bileşenlere gerek yoktur. Birçok LED için 5 volt ve toprağa paralel bir kapasitör kullanmalısınız, ancak sadece 4 LED ile buna ihtiyacınız yok.

Adım 3: Pano Tasarımı

Yönetim Kurulu Tasarımı
Yönetim Kurulu Tasarımı

PCB, JLCPCB'de tasarlanmıştır. Onlara sponsor olmuyorum ama ucuz prototipler için mükemmel PCB'ler yapıyorlar. 2 dolar için aynı tahtadan 10 tane alıyorsunuz, ancak nakliye benim için yaklaşık 11 dolardı. Eğer zorunlu olarak RGB aydınlatma istemiyorsanız ve sadece bir tane yapmayı planlıyorsanız, klavyenizi PCB'siz yapmayı düşünmelisiniz.

Tahtanın tasarımı oldukça basitti. Sadece anahtarlar için bir bileşen eklemem gerekiyordu, ancak bazı videoları izledikten sonra askıda kaldım. Fark ettiğim tek kusur, deliklerin yerleşiminin anahtarlara biraz fazla yakın olması.

PCB'yi sipariş etmek için https://jlcpcb.com/ adresine gidin ve 2 katmanlı seçeneği seçin. Sizden bir Gerber dosyası isteyecektir. ".zip" dosyasını indirin ve pencereye sürükleyin. Zipten çıkarmanıza gerek yok. Ayarlar iyi olmalı ve devam edip siparişi tamamlayabilirsiniz.

Adım 4: Kasa Tasarımı ve Montaj İpuçları

Kasa Tasarımı ve Montaj İpuçları
Kasa Tasarımı ve Montaj İpuçları
Kasa Tasarımı ve Montaj İpuçları
Kasa Tasarımı ve Montaj İpuçları
Kasa Tasarımı ve Montaj İpuçları
Kasa Tasarımı ve Montaj İpuçları
Kasa Tasarımı ve Montaj İpuçları
Kasa Tasarımı ve Montaj İpuçları

Tasarım

Daha önce de bahsettiğim gibi tasarımım kusurlu ama yine de isterseniz yazdırabilirsiniz. tasarım Fusion 360'ta yapıldı. Ücretsiz bir 3D modelleme yazılımı ve mucit ve solidworks'ten edindiğim tecrübeler ile çalışmak oldukça kolaydı. Kasanın köşelerindeki daireler baskı yatağından soyulmayı önlemek içindir.

Kendi davanızı yapıyorsanız, gerçekten önemli olan tek bir şey var. Anahtarlarınızın sağlam bir şekilde yerleştirilmesi ve hareket etmemesi gerekir. Kailh BOX anahtarlarını kullandığınızı varsayarak kendi tasarımınız için kullanabilmeniz için boyutları olan kare kesiklerin resimlerini sağladım.

toplantı

Artık birleştirmek için gereken tüm bileşenlere sahipsiniz. Anahtarlar lehimli olduğu için bu ilk versiyonun montajı için bir sipariş var.

1. SMD bileşenlerini lehimleyin. bunlar dirençler, kapasitörler ve LED'lerdir.

2. Arduino pro mikroyu lehimleyin.

3. Lehimlemeden önce 3 anahtarı 3D baskılı kapak plakasına yerleştirin. Anahtarlar lehimlendikten sonra kapak plakası çıkarılamaz. Anahtarların lehiminin sökülmesi tavsiye edilmez ve onları yok edebilir.

4. Şimdi anahtarları yerinde lehimleyin. Bunu olabildiğince çabuk yapın, çünkü plastik anahtarlar onları eritebilir ve mahvedebilir veya tıklama sayılarını önemli ölçüde azaltabilir.

5. Birleştirilmiş kapak plakasını 3D baskılı kutuya yerleştirin ve tuş kapaklarını engellemiyorsa bantla veya cıvatalarla sabitleyin.

6. Anahtarları anahtarlara yerleştirin ve işiniz bitti.

tavsiyeler

Kodunuzu yükledikten sonra arduino üzerindeki LED'leri sökün veya maskeleyin. Kodunuz yüklenmiyorsa, ancak bitmiş bir ürün olarak bakmak hoş değilse, led'lerin olması güzel. Beceri ve sivri uçlu cımbız gereklidir.

Ayrıca alt kısımdaki bazı kavrama ayakları kaymayı önlemek için iyidir ve rgb ışığının parlamasına izin verir.

Adım 5: Code V1 (donanım Geri Dönme)

Kod V1 (donanım Geri Dönme)
Kod V1 (donanım Geri Dönme)
Kod V1 (donanım Geri Dönme)
Kod V1 (donanım Geri Dönme)

Bu projenin kodu yeni başlayanlar için uygun değil, bu yüzden arduino'da programlamaya yeni başlıyorsanız, bu kod muhtemelen sizi biraz korkutacaktır. Yine de elimden geldiğince neler olduğunu açıklamaya çalışacağım. Bazı şeyler bu metinde daha sonra açıklanmaktadır, bu nedenle sorularınız varsa lütfen önce tamamını okuyun.

Kodun yüklenmesi

Önce 3 ".ino" dosyasını indirin ve bir klasöre koyun. Arduino IDE'niz yoksa, resmi arduino sitesinden ücretsiz olarak indirin.

Arduino'nuzu PC'nize bağlayın ve "OSU_Keyboard_code_V1.ino" dosyasını açın. Araçlar Panosu'nda "Arduino/Genuino Micro" seçeneğini seçin. Ayrıca Araçlar'da doğru COM bağlantı noktasını seçin. Bu bazen değişebilir. Kodu Arduino'nuza yüklemek için ekranın sol üst köşesindeki oka tıklayın ve sol altta tamamlandığını söyleyene kadar bekleyin.

OSU_Keyboard_code_V1

Dahil etme ve tanımlama

İlk önce Klavye kitaplığını eklemeniz gerekir. Bu, Arduino'yu klavye olarak kullanmayı mümkün kılar.

Sonra bazı değerler tanımlarım. Define tıpkı bir değişken gibidir ancak program çalışırken değişmezler. İlk 9 klavye karakteri, arduino pin numarası ve port bitleri içindir.

Ardından LED verilerinin ve saatin bağlantı noktası bitleri.

Ayrıca led sayısı ve renk çarkının açısı için bir değişken tanımlanmıştır.

Kurmak

Kodun bu kısmı, arduino prize takıldığında yalnızca bir kez yürütülür.

Öncelikle LED'lerin saat ve data pinleri çıkış, switch pinleri giriş olarak ayarlanır. Bu, pinMode()'un gelişmiş versiyonudur. Eğer ilgileniyorsanız, "doğrudan bağlantı noktası manipülasyonu" için arama yapın.

Keyboard.begin() sadece klavye olarak usb bağlantısını başlatır.

Sonraki 3 kesme, anahtar pinlerine bağlanır. Anahtar pininde her değişiklik tespit edildiğinde küçük bir program yürütülecektir. Bu küçük program ileride yapılacaktır.

Döngü

Arduino'ya güç verildiğinde bu kısım sürekli olarak tekrarlanacaktır.

Sadece LED'lerin rengini değiştirmek ve güncellemek için kullanıyorum.

kesintiler

Burada sadece switch pinlerinde bir değişiklik tespit edildiğinde çalıştırılacak olan küçük programlar yapılır. Hangi pime tepki verdikleri dışında aynıdırlar.

Önce butona basılıp basılmadığını kontrol eder ve doğru klavye komutunu gönderir.

LED (farklı bir sırayla açıklanmıştır)

LED'lerin nasıl kontrol edildiğini merak ediyorsanız APA102 veri sayfasına bakmalısınız.

Azıcık

Bu yine dijital yazmanın doğrudan bağlantı noktası işleme sürümüdür.

Önce 0 mı yoksa 1 mi göndereceğini kontrol eder ve sırasıyla data pinini düşük veya yüksek çeker. Sonra saat pinini çok kısa yüksek yazıyor ve tekrar düşük yazıyor.

bir bayt

Bu, bir "for" döngüsü ile oneBit'i 8 kez tekrarlar. Bir bayttaki ilk biti okur ve değerini oneBit işlevine iletir ve sonraki 7 bit için de aynısını yapar.

LedData

Bu, bir led için gereken verileri sağlamak için oneByte'ı 4 kez tekrar eder. İlk bayt 111xxxxx ile başlar ve xxxxx yerine 5 bitlik bir parlaklık değeri gelir. Parlaklık 0 ila 31 (2^5 = 32 seviye) arasında ayarlanabilir.

Sonraki 3 bayt mavi, yeşil ve kırmızı değerler içindir. Her renk için bir bayt.

ColorWheelThisLed

Bu işlev ledData'yı çağırır ve renk çarkındaki bir açıya bağlı olarak rgb renklerini verir.

16 bit değeri, 60 derecelik eşit aralıklı 6 bölümde bölünür. Resimlere bakmak daha iyi anlamanıza yardımcı olabilir.

(8 bitlik bir sürüm de sağlanmıştır ancak çok titrek olduğu için yorumlanmıştır)

BaşlangıçEndFrame

Ledlere her yeni renk göndermek istediğinizde ve ledlerin gerçek rengini güncellemek istediğinizde başlangıç çerçevesi kullanılmalıdır.

Bitiş çerçevesine gerek olmadığı için yalnızca başlangıç çerçevesini kullanıyorum. Başlangıç çerçevesi 4 bayt 0'dır. Bitiş çerçevesi 4 bayt 255'tir (111111111).

Adım 6: Code V2 (Zamanlayıcılarla Debounce yazılımı)

The Code V2 (Zamanlayıcılarla Debounce yazılımı)
The Code V2 (Zamanlayıcılarla Debounce yazılımı)

Bir süre oynadıktan sonra, donanımın geri dönmesiyle ilgili bazı çift dokunma sorunları fark ettim. Bu, başka değer dirençleri veya kapasitörler ile düzeltilebilir, ancak düğmeler ve kapak çıkarılabilir olmadığından, yazılımın geri tepmesinin iyi bir çözüm olacağını düşündüm. Yazılım geri dönüşü, donanım geri dönüşü uygulansa da uygulanmasa da çalışmalıdır. Mevcut kurulumumda kapağı çıkarmadım, bu yüzden dirençleri ve kapasitörleri yerinde bıraktım.

Açıklaması biraz daha zor olduğu için kodu önceki sürüm kadar kapsamlı bir şekilde açıklamayacağım.

Temelde kodun çoğu aynı şekilde çalışır ve led koduna dokunulmaz. değişen şey, harici kesintilerin artık arduino işlevlerini kullanmamasıdır. Şimdi saf C kodunda çalışıyor. Ve şimdi eklenen şey yazılım kesintisidir. Bunun için, zıplama durana kadar belirli bir süre beklemek için AVR zamanlayıcılarını kullandım. Zamanlayıcılar kesintiye dayalı olduğundan, geri çekilme süresi döngüde meydana gelen hiçbir şeyden etkilenmez.

Bulabildiğim tek dezavantajı, arduino gecikme işlevlerinin artık kullanılamaması. Çünkü gecikme işlevleri Zamanlayıcı 0'ı kullanır ve bu program geri dönmek için Zamanlayıcı 0'ı kullanır.

Resimde kodun kabaca nasıl çalıştığını görebilirsiniz. Mem biti, bir zamanlayıcının çalışıp çalışmadığını gösterir. Gösterilmeyen şey, düğmenin sonunda basılan girişin düşük olmasıdır. Bu durumda, düğme zaten bırakılmışken yalnızca bir tuşa basma gönderilir. Bu, bilgisayar söz konusu olduğunda anahtarın basılı tutulacağı anlamına gelir. Bu nadir istisna için, bir zamanlayıcının süresi dolduğunda bir kontrol gerçekleştirilecektir. Bir zamanlayıcının sonunda düğmeye basılmazsa, bir tuş bırakma komutu gönderilir.

Adım 7: Code V3 (Dikey Sayaçlı Yazılım Debounce) (önerilir)(LED yok)

Code V3 (Dikey Sayaçlı Debounce yazılımı) (önerilir)(LED yok)
Code V3 (Dikey Sayaçlı Debounce yazılımı) (önerilir)(LED yok)

Bu kodun AYRICA, aşağı çekme dirençlerine ihtiyaç duymadığınız bir sürümü de vardır. Her düğmeyi girişe ve GROUND'a bağladığınızdan emin olun! Yerleşik pull-up kullanılır

Ayrıca V2 kodunda bazı kayıtsız baskılar yaşadım. Sanırım kod, zamanlayıcı ve harici kesme ile çok karmaşık hale geldi ve bazı istisnaları kaçırmış olabilirim. Bu nedenle internetten yazılım geri dönme yöntemlerini araştırmaya sıfırdan başladım.

(Dürüst olmak gerekirse, bu projenin en az yarısı bu noktada düğmeden çıkma haline geldi)

Biraz araştırdıktan sonra şu yazıya rastladım:

www.compuphase.com/electronics/debouncing….

Dürüst olmak gerekirse, tam olarak nasıl çalıştığını tam olarak anlamam biraz zaman aldı. Bazı oldukça karmaşık bit manipülasyonları içeriyor, ancak bunu mümkün olduğunca kolaylaştırmaya çalışacağım. Ancak benim açıklamalarım sadece yazıya ek olacak, bu yüzden en azından "dikey sayaçlar", "açıklamalı bir uygulama" ve "gecikmeyi azaltma" bölümlerini okumalısınız.

açıklamam

Eklediğim zamanlama şeması (WaveDrom'da yapılmış) bunu anlamayı zorlaştıracak bit matematiği en azından biraz daha anlaşılır hale getirmelidir. Görüntünün 2 sayaç biti olduğuna dikkat edin, ancak kodumda 3 tane var. Bu, daha uzun bir geri dönme süresi anlamına gelir.

Değer başına bir bit

Dikey sayaç uygulaması ile aynı anda birden fazla düğmeyi paralel olarak geri döndürmek mümkündür. Tüm değerler Byte(uint8_t) türündedir ve 8 bitten oluşur. biz bu baytlardan herhangi birinin hangi değeri içerdiğiyle ilgilenmiyoruz, bunun yerine bitlerin kendileriyle ilgileniyoruz. Geri döndürülecek her düğme, her baytın yalnızca bir bitini kullanır. İlk düğme her baytın yalnızca ilk bitini kullanır, ikinci düğme ikinci biti vb. kullanır.

Hepsi aynı anda

Bit matematiği kullanarak bu pin geri dönüşlerini paralel olarak yürütmek mümkündür. Ve bit matematiği oldukça karmaşık olmasına rağmen, işlemci için çok verimlidir.

8 bitlik bir veri tipi ile bunu 8 buton için yapmak mümkündür. Daha büyük veri türleri kullanmak, aynı anda daha fazla geri dönmeye izin verir.

geri tepme

Geri dönme rutini, bir zamanlayıcı kesintisi ile her 1 milisaniyede bir yürütülür.

butona basıldığında, geri dönme durumu olan buttonState, bir butona basıldığını gösterecek şekilde hemen alçalır. Bir serbest bırakmanın algılanması için düğmenin yeterince uzun bir süre yüksek olması gerekir, bu da belirli bir süredir sekmediğini gösterir. Toggle, bir düğme değişikliğini belirtmek için kullanılır. Sayaç bitleri … için kullanılır. ne kadar zamandır bir sıçrama olmadığını sayıyor.

Delta, giriş ve geri dönme durumu arasındaki farkı gösterir. Sadece bir fark olduğunda sayaç sayılacaktır. bir sıçrama algılandığında sayaç sıfırlanacaktır (delta 0'dır).

8. Adım: Sonuç

Image
Image

Her şey yolunda giderse, artık Osu oynamak için çalışan bir klavyeniz olmalı! üzerinde. Şahsen ben herhangi bir gecikme fark etmedim. Bunu yaparsanız, lütfen bana bildirin. Ayrıca herhangi bir sorunuz varsa sormaktan çekinmeyin.

Bir V2 ile ilgili önceki sözler bir vaat anlamına gelmez, bu yüzden bu projeyi ertelemeyin çünkü V2'yi beklemek istiyorsunuz.

Umarım klavyenizi beğenirsiniz!

Osu! isim: Thomazzz3

Sorun giderme

Klavyenizde sorun olduğunu düşünüyorsanız, önce bir metin düzenleyici açın ve her tuşa kısa süreliğine bir kez basın.

Bir veya birden fazla tuş çalışmıyor mu?

Lehimleme sırasında bir anahtarı dahili olarak yok etmiş olabilirsiniz. Bir multimetreniz varsa süreklilik/bipleme konumuna getirin, Arduino bağlı değilken anahtara paralel hale getirin ve tuşuna basın. Bip sesi vermeli.

Az önce yazdığınız karakterler Osu'da yapılandırdığınız tuşlarla eşleşiyor mu! ?

İlk 3 #Defines'de (' ' gerekli!) arduino kodundaki karakterleri değiştirin.

Veya Osu'nuzu değiştirin! yapılandırılan tuşları kullanmak için ayarlar.

Bir veya birden fazla tuş birkaç kez tekrarlanıyor mu?

Geri dönme devresi muhtemelen anahtarlarınız için çalışmıyor veya doğru şekilde lehimlenmemiş. Lehim bağlantılarınızı kontrol edin. Hala devam ederse, 1uF'lik bir kapasitör değeri deneyin. Bu PCB kullanıcıları için çok zor olacaktır.

LED'lerinizle ilgili sorun yaşıyorsanız

LED'ler titriyor mu?

Bir lehim bağlantısı gevşek olabilir. PCB kullanıyorsanız, baskıdaki ped üzerinde lehimleme tenekesinin gerçekten aktığını onaylayın.

Ledlerin hiçbiri çalışmıyor mu veya belirli sayıda led çalışmıyor mu?

İlk LED'in bağlantıları arasında kısa devre olup olmadığını kontrol edin (izleri takip edin) ve Arduino'nun çıkışlarında ve yine ilk LED'de iyi bağlanmış kalay olup olmadığını kontrol edin. Doğru ve hala kusurlu olduğu onaylanırsa, ilk LED'i değiştirmeniz gerekebilir.

Bu düzelirse, gerekirse sonraki LED'ler için tekrarlayın.

Önerilen: