İçindekiler:
- Gereçler
- Adım 1: Hadi Yapalım
- Adım 2: Malzeme Hazırlığı
- Adım 3: Akrilik Kesme
- Adım 4: 3D Yazıcılarla Taraf Yapın
- Adım 5: Çekim
- Adım 6: LED Şerit + Lehimleme LED Şeritini (NeoPixel) Tellerle Takın
- Adım 7: Tellerle Lehimleme Hassas Anahtarı
- Adım 8: Montaj -Cıvatayı Kenara Yerleştirin= ①
- 9. Adım: Ⓛⓣ öğesini Ⓒ= ② öğesine ekleyin
- Adım 10: Montaj - ① ve ②= ③'yi birleştirmek için bir Ⓦ ve Ⓝ kullanın
- Adım 11: Montaj - Bir Akrilik Bağ Kullanarak Ⓐⓔ ve ③'yi Yapın= ④
- Adım 12: Ⓢ öğesini Ⓓ= ⑤ öğesine ekleyin
- Adım 13: Montaj - ④ ve ⑤'yi Ⓦ ve Ⓝ= ⑥ kullanarak birleştirin
- Adım 14: Parça Montajını Tamamlayın
- Adım 15: Bir Projenin Çalışma Görünümü
- Adım 16: NeoPixel, Konektör Kablolaması
- Adım 17: NeoPixel ve Arduino Kablolama
- Adım 18: Arduino'yu Programlayın
- Adım 19:
- Adım 20: Desenler
Video: Beni Yak!: 20 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:18
proje ekibi üyeleri
(Hyewon Shin, Eunjeong Ko, Junsung Yi)
Ya ışığa dokunup tasarlayabilseydiniz? Kendinizi ilginç bir animasyonla tasarladığınız güzel bir ışık deseniniz olsaydı nasıl bir his olurdu?Light me up, ışığın kendisine dokunan, tasarlayan ve ilginç desenler oluşturan ilginç bir eskiz defteri olacak! altıgen şekil. Böylece ışığı nasıl tasarladığınıza göre stereoskopik desenler oluşturabilirsiniz! Sadece her parçaya basın ve çeşitli renkler derecelendirilecek ve istediğiniz renk çıktığında, bastığınız ele vurun ve istediğiniz renkle güzelce parlamaya devam edecek! Proje yaklaşık 312 üçgen kullandı, ancak oluşturabilirdi. 6 üçgenle iyi çalışan güzel bir ışık. Şimdi size altı üçgenle nasıl yapılacağını göstereyim. Adımları izleyin ve kendi harika işinize sahip olacaksınız!
Gereçler
Donanım: Arduino(Arduino mega 2560 kullandım), Akrilik(şeffaf, beyaz), LED Şerit(NeoPixel), Difüzör Film, buton, 4 pinli Konnektör, Tel, Devre Kartı, Güç Kaynağı
Araçlar: Lazer Güdümlü Kesim Makinesi, 3D Yazıcı
Adım 1: Hadi Yapalım
Hadi bu sevimli altıgen parçayı benimle yapalım!
Light Me Up, 312 üçgen kullanılarak yapılmıştır, ancak 6 üçgen bile harika bir ışık tasarlayabilir. Daha büyük ölçekte yapmak isterseniz aşağıdaki ekteki dosyaya başvurarak yapabilirsiniz.
Adım 2: Malzeme Hazırlığı
Adım 3: Akrilik Kesme
Her parçanın önünü ve arkasını kesmek için bir lazer kesici kullanın. Arkadaki akriliğin rengi istediğiniz herhangi bir şey olabilir, ancak şeffaf akrilik kullandığınızdan emin olun çünkü ön kısım karartılmalıdır! Şeffaf dışında bir renk akrilik kullanırsanız ışığı iyi göremezsiniz.
Adım 4: 3D Yazıcılarla Taraf Yapın
Şimdi her parçanın kenarlarını yapma zamanı. Hadi yapalım! Yandaki 3D modelleme dosyaları aşağıda ektedir. PLA'yı kenar yapmak için kullandık PLA, ABS'den daha güçlü ve daha az kasılmadır, bu nedenle PLA'yı kullanmak için filamentler önerilir.
Adım 5: Çekim
Şimdi ön taraftaki akriliğin üzerine hafif bir difüzyon filmi koyalım. Üzerine film koyarsanız, yayılır ve çok daha güzel parlar. İlk olarak, filmi bir üçgen şeklinde kesin. (Filmi kesilmiş akrilikten daha büyük kesmeniz daha iyi olur) Telefonunuza koruyucu bir film gibi film koymak kolaydır. Buraya bahşiş vermek isterseniz, itmek için bir kart kullanabilirsiniz, böylece düzgünce yapıştırılabilir!
Adım 6: LED Şerit + Lehimleme LED Şeritini (NeoPixel) Tellerle Takın
LED şeridi lehimlemede çok iyiyseniz, LED şeridi arkaya koymanın zamanı geldi. İlk olarak, LED şeridin arkasına bir tutkal tabancası veya iki taraflı bant yapıştırın. Ve önce lehim telinin her iki tarafındaki telleri her iki taraftaki deliklerden çıkarın. Son olarak, LED şeridi arka akriliğe takın ve bitti!
Lehimleme zamanı! LED şeritleri, 4 pinli konektörleri (konektör veya teller) ve lehimleme için ihtiyacınız olanı hazırlayın. LED'leri üç ünitede kullandım. İsterseniz bir veya iki LED kullanabilirsiniz, ancak üç tane kullanmanızı tavsiye ederim. Tüm malzemeler hazır olduğunda, LED şeridin her iki veri hattındaki, 5v hatlarındaki ve topraklama hatlarındaki telleri lehimleyin.
Adım 7: Tellerle Lehimleme Hassas Anahtarı
Adım 8: Montaj -Cıvatayı Kenara Yerleştirin= ①
Şimdi gerçekten kolay bir kısım! Üç 3B yazdırılan tarafın her birine bir cıvata yerleştirin. Cıvata düğmesini kullanmanın sebebini yapısal bir cıvata ve somun gibi kullanmak mümkün olacaktır. Parça bitince parçayı kutuya koyacağım ve bir somunla bitireceğim.
9. Adım: Ⓛⓣ öğesini Ⓒ= ② öğesine ekleyin
Adım 10: Montaj - ① ve ②= ③'yi birleştirmek için bir Ⓦ ve Ⓝ kullanın
Adım 11: Montaj - Bir Akrilik Bağ Kullanarak Ⓐⓔ ve ③'yi Yapın= ④
Yana bir cıvata koyarsanız, onu yana ve öne takarız. Ön kısım akriliktir, bu yüzden özel bir akrilik bağ ile takmanız gerekir. Normal bir bağa akrilik eklerseniz, bir iz bırakacaktır.
Adım 12: Ⓢ öğesini Ⓓ= ⑤ öğesine ekleyin
Adım 13: Montaj - ④ ve ⑤'yi Ⓦ ve Ⓝ= ⑥ kullanarak birleştirin
Adım 14: Parça Montajını Tamamlayın
Adım 15: Bir Projenin Çalışma Görünümü
Adım 16: NeoPixel, Konektör Kablolaması
Adım 17: NeoPixel ve Arduino Kablolama
Adım 18: Arduino'yu Programlayın
extern uçucu imzasız uzun timer0_millis;
#Dahil etmek
#define MODEBTNNUM 3 int ani_mode = 0; imzasız uzun preM1, preM2, preM3;
geçersiz kurulum() {
Wire.begin(); for (int i = 0; i < MODEBTNNUM; i++) { pinMode(i + 2, INPUT_PULLUP); } //Serial.begin(9600); }
boşluk döngüsü () {
for (int i = 0; i < MODEBTNNUM; i++) { if (!digitalRead(i + 2)) ani_mode = i + 1; } for (int i = 0; i < 6; i++) { Wire.requestFrom(i + 1, 1); while (Wire.available()) { int x = Wire.read(); // Seri.println(x); if (x == 5) { ani_mode = 0; // Serial.println("x=5"); } } } ////////////////////////////////////////// /////// if (ani_mode == 0) { for (int i = 1; i 3000) { preM1 = akım1; for (int i = 1; i 5000) { preM2 = akım2; for (int i = 1; i 3000) { preM3 = akım3; // timer0_millis = 0; // önM1 = 0; // preM2 = 0; // preM3 = 0; // Serial.println("zamanlayıcı sıfırlama"); for (int i = 1; i < 7; i++) { Wire.beginTransmission(i); Wire.write(ani_mode); //Serial.println("3000"); Wire.endTransmission(i); } } } }
Adım 19:
extern uçucu imzasız uzun timer0_millis;
#Dahil etmek
#include #define PIN 12 #define NUMPIXELS 162 Adafruit_NeoPixel şeridi = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); const int sayı = NUMPIXELS / 3; const int slaveNum = 1; int renkler[sayı][3]; int renk[sayı]; int sat[sayı]; int parlak[sayı]; int pNumara = 0; int gDeğeri[sayı] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; const int btnPin[sayı] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14, 15, 16, 17, 18, 19, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 54, 55, 56, 57, 58, 59 }; int btnState[sayı]; boolean btnMode; int hueV[sayı] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; #include #define BTNNUM 1 int f_v = 1; imzasız uzun preMillis1; imzasız uzun preM; int ani_mode = 0; int ani2_Counter = 0; int sayaç = 0; ///////////////////////////////////// void setup() { Tel. start(slaveNum); Wire.onRequest(requestEvent); Wire.onReceive(receiveEvent); for (int i = 0; i < num; i++) { pinMode(btnPin, INPUT_PULLUP); } //Serial.begin(9600); strip.begin(); } ////////////////////////////////////////
boşluk döngüsü () {
if (f_v == 1) { for (int i = 0; i < num; i++) { renk tonu = 50; sat = 95; parlak = 100; } f_v = 0; } ////////////////////////////////// //버튼 입력 체크:멈춤신호 보내기 btnMode = YANLIŞ; for (int i = 0; i < num; i++) { if (!digitalRead(btnPin)) { btnMode = true; } } btnEvent(5); // Serial.println(ani_mode); ////////////////////////////////// geçiş (ani_mode) { durum 0: ani0(); kırmak; durum 1: ani1(); ani_mode = 0; ani2_Counter = 0; kırmak; durum 2: ani2_Counter = 1; ani_mode = 0; kırmak; durum 3: ani3(); ani_mode = 0; ani2_Counter = 0; kırmak; varsayılan: readyState(); kırmak; } if (ani2_Counter == 1) { ani2(); } setPixels(sayı); }
///////////////////////////////////////////
void ReceiveEvent(int howMany) { int x = Wire.read(); if (x == 5) { // Serial.println("alınan 5"); ani_mode = 0; } ani_mode = x; // Serial.println(ani_mode); } /////////////////////////////////////// void requestEvent() {
if (btnMode == doğru) {
Wire.write(5); // Serial.println("5 보냄"); } başka { Wire.write(0); }
}
geçersiz ani0() {
// Serial.println("0"); }
geçersiz ani1() {
// Serial.println("1"); if (pNumber == 0) { for (int i = 0; i < num; i++) { parlak = 0; gDeğeri = 1; } int a1 = {25, 26}; int b1 = {39, 52}; int c1 = {40, 53}; for (int a = 0; a < 2; a++) { renk tonu[a1[a] = 100; sat[a1[a] = 95; parlak[a1[a] = 100; } for (int b = 0; b < 2; b++) { ton[b1 = 200; sat[b1 = 95; parlak[b1 = 100; } for (int c = 0; c < 2; c++) { ton[c1[c] = 300; sat[c1[c] = 95; parlak[c1[c] = 100; } // Serial.println("0"); } else if (pNumber == 1) { for (int i = 0; i < num; i++) { parlak = 0; gDeğeri = 1; } int a2 = {21, 22, 34, 35, 37, 46, 47, 51}; // int b2 = {}; // int c2 = {}; int d2 = {36, 48, 49, 50}; for (int a = 0; a < 8; a++) { renk tonu[a2[a] = 26; sat[a2[a] = 95; parlak[a2[a] = 100; } for (int d = 0; d < 4; d++) { renk tonu[d2[d] = 63; sat[d2[d] = 95; parlak[d2[d] = 100; } // Serial.println("1"); } else if (pNumber == 2) { //dev küp kalıbı for (int i = 0; i < num; i++) { parlak = 0; gDeğeri = 1; } int a14 = {34, 35, 46, 47, 48, 49};//sarı 06 for (int a = 0; a < 6; a++) { renk tonu[a14[a] = 35; sat[a14[a] = 95; parlak[a14[a] = 100; } }else if (pNumber == 3) { for (int i = 0; i < num; i++) { parlak = 0; gDeğeri = 1; } int a3 = {34, 35, 46, 47, 48, 49};//sarı for (int a = 0; a < 6; a++) { ton[a3[a] = 53; sat[a3[a] = 95; parlak[a3[a] = 100; } } else if (pNumber == 4) { for (int i = 0; i < num; i++) { parlak = 0; gDeğeri = 1; } int a4 = {34, 35};//sarı int b4 = {47};//mavi int c4 = {48};//mor
for (int a = 0; a < 2; a++) { renk tonu[a4[a] = 53; sat[a4[a] = 95; parlak[a4[a] = 100; }
for (int b = 0; b < 1; b++) { renk tonu[b4 = 210; sat[b4 = 95; parlak[b4 = 100; } for (int c = 0; c < 1; c++) { renk tonu[c4[c] = 307; sat[c4[c] = 95; parlak[c4[c] = 100; } } else if (pNumber == 5) { for (int i = 0; i < num; i++) { parlak = 0; gDeğeri = 1; } int a5 = {34, 35, 46, 47, 48, 49};
for (int a = 0; a < 6; a++) { renk tonu[a5[a] = 100; sat[a5[a] = 95; parlak[a5[a] = 100; } } else if (pNumber == 6) { for (int i = 0; i < num; i++) { parlak = 0; gDeğeri = 1; } int a6 = {34, 35, 46, 47, 48, 49};//sarı for (int a = 0; a < 6; a++) { renk tonu[a6[a] = 53; sat[a6[a] = 95; parlak[a6[a] = 100; } } else if (pNumber == 7) { for (int i = 0; i < num; i++) { parlak = 0; gDeğeri = 1; } int c7 = {34, 35, 46, 47, 48, 49};//mor for (int c = 0; c < 6; c++) { ton[c7[c] = 307; sat[c7[c] = 95; parlak[c7[c] = 100; } } else if (pNumber == 8) { for (int i = 0; i < num; i++) { parlak = 0; gDeğeri = 1; } int c8 = {34, 35, 46, 47, 48, 49}; //mor for (int c = 0; c < 6; c++) { ton[c8[c] = 307; sat[c8[c] = 95; parlak[c8[c] = 100; } } else if (pNumber == 9) { for (int i = 0; i < num; i++) { parlak = 0; gDeğeri = 1; } int c9 = {34, 35, 46, 47, 48, 49}; //mor for (int c = 0; c < 6; c++) { ton[c9[c] = 307; sat[c9[c] = 95; parlak[c9[c] = 100; } } else if (pNumber == 10) { for (int i = 0; i < num; i++) { parlak = 0; gDeğeri = 1; } int c10 = {34, 35, 46, 47, 48, 49}; //mor for (int c = 0; c < 6; c++) { ton[c10[c] = 307; sat[c10[c] = 95; parlak[c10[c] = 100; } } else if (pNumber == 11) { for (int i = 0; i < num; i++) { parlak = 0; gDeğeri = 1; } int c11 = {34, 35, 46, 47, 48, 49}; //mor for (int c = 0; c < 6; c++) { ton[c11[c] = 307; sat[c11[c] = 95; parlak[c11[c] = 100; } } else if (pNumber == 12) { for (int i = 0; i < num; i++) { parlak = 0; gDeğeri = 1; } int c12 = {34, 35, 46, 47, 48, 49}; //mor for (int c = 0; c < 6; c++) { ton[c12[c] = 307; sat[c12[c] = 95; parlak[c12[c] = 100; } } else if (pNumber == 13) { for (int i = 0; i < num; i++) { parlak = 0; gDeğeri = 1; } int a13 = {34, 35}; //sarı int b13 = {47}; //mavi int c13 = {48}; //mor for (int a = 0; a < 2; a++) { ton[a13[a] = 53; sat[a13[a] = 95; parlak[a13[a] = 100; } for (int b = 0; b < 1; b++) { renk tonu[b13 = 210; sat[b13 = 95; parlak[b13 = 100; } for (int c = 0; c < 1; c++) { renk tonu[c13[c] = 307; sat[c13[c] = 95; parlak[c13[c] = 100; } } pNumara = pNumara + 1;
if (pNumara == 14) {
pNumara = 0; } }
geçersiz ani2() {
// Serial.println("2"); imzasız uzun curM = millis();
if (curM - preM >= 10) {
önM = curM; for (int i = 0; i < num; i++) { if (hue = 360) { gValue = -1; } renk tonu = renk tonu + gDeğeri; } sayaç++; if (sayaç == 360) { // Serial.print("sayaç: "); // Serial.println(sayaç); // Serial.println(curM); sayaç = 0; ani2_Counter = 0; } } }
geçersiz ani3() {
// Serial.println("3"); } ////////////////////////////////////// void readyState() { / / Serial.println("hazır"); } ////////////////////////////////////// void btnEvent(int b_interval) { imzasız uzun curMillis1 = millis();
for (int i = 0; i < num; i++) { btnState = digitalRead(btnPin); }
if (curMillis1 - preMillis1 > b_interval) {
preMillis1 = curMillis1; for (int i = 0; i = 360) { hueV = -1; } else if (hue <= 0) { hueV = 1; } renk tonu = renk tonu + renk tonu; parlak = 100; } } } } ////////////////////////////////////// void setPixels(int k) { for (int i = 0; i < k; i++) { H2R_HSBtoRGB(hue, sat, parlak, renkler); int sayı1 = ben * 3; strip.setPixelColor(num1, renkler[0], renkler[1], renkler[2]); strip.setPixelColor(num1 + 1, renkler[0], renkler[1], renkler[2]); strip.setPixelColor(num1 + 2, renkler[0], renkler[1], renkler[2]); } şerit.göster(); }
Adım 20: Desenler
Bu projede altıgen bir şekil oluşturan birkaç üçgen var. Böylece ışığı nasıl tasarladığınıza göre stereoskopik desenler oluşturabilirsiniz! Sadece her parçaya basın ve çeşitli renkler derecelendirilecek ve istediğiniz renk çıktığında, bastığınız ele vurmanız yeterli ve istediğiniz renkle güzelce parlamaya devam edecek!
Önerilen:
Nasıl Yapılır: Raspberry PI 4 Headless (VNC) Kurulumu Rpi-imager ve Resimlerle: 7 Adım (Resimlerle)
Nasıl Yapılır: Raspberry PI 4 Headless (VNC) Kurulumu Rpi-imager ve Resimlerle: Bu Rapsberry PI'yi blogumda bir sürü eğlenceli projede kullanmayı planlıyorum. Kontrol etmekten çekinmeyin. Raspberry PI'mi kullanmaya geri dönmek istedim ama yeni konumumda Klavye veya Farem yoktu. Ahududu kurduğumdan beri bir süre geçti
Beni aydınlat! Gerçek Zamanlı Çapraz Platformlu LED Şerit Kontrolü: 5 Adım (Resimlerle)
Beni aydınlat! Gerçek Zamanlı Çapraz platformlu LED Şerit Kontrolü: LightMeUp! maliyeti düşük ve performansı yüksek tutarken bir RGB LED-Strip'i gerçek zamanlı olarak kontrol etmek için icat ettiğim bir sistemdir. Sunucu Node.js'de yazılmıştır ve bu nedenle platformlar arası kullanılabilir. Örneğimde uzun süreli kullanım için bir Raspberry Pi 3B kullanıyorum
Kolay Adımlar ve Resimlerle Bilgisayar Nasıl Sökülür: 13 Adım (Resimlerle)
Kolay Adımlar ve Resimlerle Bir Bilgisayar Nasıl Sökülür: Bu, bir PC'nin nasıl söküleceği hakkında bir talimattır. Temel bileşenlerin çoğu modülerdir ve kolayca çıkarılabilir. Ancak bu konuda organize olmanız önemlidir. Bu, parçaları kaybetmenize ve aynı zamanda yeniden birleştirmeyi kolaylaştırmaya yardımcı olacaktır
Adım Adım Ciclop 3d Tarayıcı My Way: 16 Adım (Resimlerle)
Adım Adım Ciclop 3d Tarayıcı Adım Adım: Merhabalar, ünlü Ciclop 3D tarayıcıyı gerçekleştireceğim. Orijinal projede iyi açıklanan tüm adımlar mevcut değil. Öncelikle işlemi basitleştirmek için bazı düzeltmeler yaptım. Tabanı yazdırıyorum ve PCB'yi yeniden sterilize ediyorum, ama devam et
O Resmi Yak !: 6 Adım (Resimlerle)
O Resmi Işıklandır !: Merhaba, Bu oldukça basit bir projedir ve küçük bir fotoğraf çekip onu her erkek, erkek, baba, çekicinin hayran kalacağı çok güzel bir dekoratif objeye çeviriyoruz :) Bu projenin maliyeti çok düşük: -İşte ihtiyacımız olan şey-1. Tam sayfa a4 veya daha büyük renkli baskı