Mundarija:
- Ta'minotlar
- 1 -qadam: Keling, bunga erishamiz
- 2 -qadam: materiallarni tayyorlash
- 3 -qadam: Akrilni kesish
- 4 -qadam: 3D -printerlar yordamida tomonlar yarating
- 5 -qadam: Rasmga olish
- 6 -qadam: LED tasmasini + Lehimlovchi LED tasmasini (NeoPixel) simlar bilan ulang
- 7 -qadam: payvandlash paychalarining simlari yordamida
- 8 -qadam: O'rnatish -Boltni yon tomonga joylashtiring = ①
- 9 -qadam: Ⓛⓣ ni = ② ga ulang
- 10 -qadam: O'rnatish -Ⓦ va Ⓝ dan foydalanib ① va ② = ③ ni birlashtiring
- 11 -qadam: O'rnatish -akril bant yordamida = va ③ biriktiring
- 12 -qadam: Ⓢ ni Ⓓ = Ⓢ ga biriktiring
- 13 -qadam: O'rnatish ④ va ⑤ ni Ⓦ va Ⓝ = ⑤ yordamida birlashtiring
- 14 -qadam: To'liq qismlarni yig'ish
- 15 -qadam: Loyihaning ishchi ko'rinishi
- 16 -qadam: NeoPixel, ulagich simlari
- 17 -qadam: NeoPixel va Arduino simlari
- 18 -qadam: Arduino -ni dasturlash
- 19 -qadam:
- 20 -qadam: naqshlar
Video: Meni yorit!: 20 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:24
loyiha jamoasi a'zolari
(Hyewon Shin, Eunjeong Ko, Junsung Yi)
Agar siz chiroqqa tegib, uni loyihalashtira olsangiz nima bo'ladi? Agar sizda o'zingizni qiziqarli animatsiya bilan yaratgan chiroyli yorug'lik namunasi bo'lsa, o'zingizni qanday his qilasiz? Menga yorug'lik bering, bu yorug'likning o'ziga tegadigan va chizadigan, qiziqarli naqshlar yaratadigan eskizlar kitobi bo'ladi! olti burchakli shakli. Shunday qilib, siz yorug'lik dizayniga ko'ra stereoskopik naqshlarni yaratishingiz mumkin! Har bir bo'lakni bosish kifoya qiladi va har xil ranglar graduslanadi va siz xohlagan rang paydo bo'lganda, bosgan qo'lingizga bosing va u siz xohlagan rang bilan porlab turaveradi! Loyihada taxminan 312 uchburchak ishlatilgan, lekin u 6 ta uchburchak bilan yaxshi ishlaydigan yaxshi yorug'lik. Endi men sizga oltita uchburchak bilan qanday yasashni ko'rsataman. Bosqichlarni bajaring va siz o'zingizning ajoyib ishingizga ega bo'lasiz!
Ta'minotlar
Uskuna: Arduino (men arduino mega 2560 ishlatganman), akril (tiniq, oq), LED tasmasi (NeoPixel), diffuzorli plyonka, tugma, 4 pinli ulagich, sim, elektron karta, quvvat manbai
Asboblar: Lazerli boshqariladigan kesish mashinasi, 3D printer
1 -qadam: Keling, bunga erishamiz
Keling, men bilan olti burchakli bu yoqimli bo'lakni yasaymiz!
Light Me Up 312 uchburchak yordamida yaratilgan, lekin hatto 6 uchburchak ham ajoyib nurni yaratishi mumkin. Agar siz uni kengroq hajmda qilishni xohlasangiz, quyida biriktirilgan faylga murojaat qilib qilishingiz mumkin.
2 -qadam: materiallarni tayyorlash
3 -qadam: Akrilni kesish
Har bir qismning old va orqa qismini kesish uchun lazer kesgichdan foydalaning. Orqa tarafdagi akrilning rangi xohlagan narsangiz bo'lishi mumkin, lekin shaffof akrildan foydalanganingizga ishonch hosil qiling, chunki old qismini xira qilish kerak! Agar siz shaffofdan boshqa rangdagi akrildan foydalansangiz, yorug'likni yaxshi ko'rmaysiz.
4 -qadam: 3D -printerlar yordamida tomonlar yarating
Endi har bir qismning yon tomonlarini yasash vaqti keldi. Keling, yon tomondan 3D modellashtirish fayllari quyida biriktirilgan. Biz PLAni yon tomonga burish uchun ishlatdik, PLA tormozlarga qaraganda kuchliroq va qisqarishi kamroq, shuning uchun filamanlarga PLAdan foydalanish tavsiya etiladi.
5 -qadam: Rasmga olish
Keling, old tomondan akrilga engil diffuzion plyonka qo'yaylik. Agar siz unga plyonka qo'ysangiz, u yoyilib, ancha chiroy ochadi. Birinchidan, plyonkani uchburchak shaklida kesib oling. (Plyonkani akrilga qaraganda kattaroq qilib kesganingiz ma'qul) Telefoningizga himoya plyonka kabi kino qo'yish oson. Agar siz bu erga maslahat bermoqchi bo'lsangiz, kartani itarib qo'yish uchun foydalanishingiz mumkin, shunda u to'g'ri yopishib qolishi mumkin!
6 -qadam: LED tasmasini + Lehimlovchi LED tasmasini (NeoPixel) simlar bilan ulang
Agar siz LED chizig'ini juda yaxshi lehimlagan bo'lsangiz, LED tasmasini orqa tomonga qo'yish vaqti keldi. Birinchidan, LED chizig'ining orqa qismiga yopishtiruvchi qurol yoki ikki tomonlama lentani mahkamlang. Va birinchi navbatda, har ikki tomonning teshiklari orqali lehim simining ikkala tomonidan simlarni olib tashlang. Nihoyat, LED tasmasini orqa akrilga mahkamlang va u tugadi!
Lehimlash vaqti keldi! LED chiziqlar, 4-pinli ulagichlar (ulagich yoki simlar) va lehim uchun kerak bo'lgan narsalarni tayyorlang. Men LEDni uchta birlikda ishlatardim. Agar xohlasangiz, bitta yoki ikkita LEDni ishlatishingiz mumkin, lekin men uchtasini ishlatishni maslahat beraman. Barcha materiallar tayyor bo'lgach, simlarni har ikkala ma'lumot uzatish liniyasida, 5v chizig'ida va LED chizig'ining tuproqli chiziqlarida lehimlang.
7 -qadam: payvandlash paychalarining simlari yordamida
8 -qadam: O'rnatish -Boltni yon tomonga joylashtiring = ①
Endi bu juda oson qism! 3D bosilgan uch tomonning har biriga bitta murvat qo'ying. Bolt tugmachasini konstruktiv murvat va yong'oq kabi ishlatishning sababi shunday bo'ladi. Parcha tugagandan so'ng, men buyumni qutiga solaman va uni yong'oq bilan tugataman.
9 -qadam: Ⓛⓣ ni = ② ga ulang
10 -qadam: O'rnatish -Ⓦ va Ⓝ dan foydalanib ① va ② = ③ ni birlashtiring
11 -qadam: O'rnatish -akril bant yordamida = va ③ biriktiring
Agar siz boltni yon tomonga qo'ysangiz, biz uni yon va old tomonga qo'yamiz. Old qismi akril, shuning uchun uni maxsus akril lenta bilan yopish kerak. Agar siz akrilni oddiy bog'lamga yopishtirsangiz, u iz qoldiradi.
12 -qadam: Ⓢ ni Ⓓ = Ⓢ ga biriktiring
13 -qadam: O'rnatish ④ va ⑤ ni Ⓦ va Ⓝ = ⑤ yordamida birlashtiring
14 -qadam: To'liq qismlarni yig'ish
15 -qadam: Loyihaning ishchi ko'rinishi
16 -qadam: NeoPixel, ulagich simlari
17 -qadam: NeoPixel va Arduino simlari
18 -qadam: Arduino -ni dasturlash
extern volatile unsigned long timer0_millis;
#qo'shing
#define MODEBTNNUM 3 int ani_mode = 0; imzosiz uzoq preM1, preM2, preM3;
bo'sh o'rnatish () {
Wire.begin (); uchun (int i = 0; i <MODEBTNNUM; i ++) {pinMode (i+2, INPUT_PULLUP); } //Serial.begin (9600); }
void loop () {
for (int i = 0; i <MODEBTNNUM; i ++) {if (! digitalRead (i + 2)) ani_mode = i + 1; } uchun (int i = 0; i <6; i ++) {Wire.requestFrom (i+1, 1); while (Wire.available ()) {int x = Wire.read (); // Serial.println (x); agar (x == 5) {ani_mode = 0; // Serial.println ("x = 5"); }}} /////////////////////////////////////////////////////////////////////////////////////////////////// /////// if (ani_mode == 0) {for (int i = 1; i 3000) {preM1 = current1; uchun (int i = 1; i 5000) {preM2 = joriy2; uchun (int i = 1; i 3000) {preM3 = joriy3; // taymer0_millis = 0; // preM1 = 0; // preM2 = 0; // preM3 = 0; // Serial.println ("taymerni qayta o'rnatish"); uchun (int i = 1; i <7; i ++) {Wire.beginTransmission (i); Wire.write (ani_mode); //Serial.println("3000 "); Wire.endTransmission (i); }}}}
19 -qadam:
extern volatile unsigned long timer0_millis;
#qo'shing
#kiritish #belgilash PIN 12 #NUMPIXELSni belgilang 162 Adafruit_NeoPixel tasmasi = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); const int soni = NUMPIXELS / 3; const int slaveNum = 1; int ranglar [raqam] [3]; int tus [raqam]; int sat [raqam]; int yorqin [raqam]; int pNumber = 0; int gValue [raqam] = {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 [son] = {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 [raqam]; mantiqiy btnMode; int hueV [son] = {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; imzosiz uzoq preMillis1; imzosiz uzoq preM; int ani_mode = 0; int ani2_Counter = 0; int hisoblagich = 0; ////////////////////////////////////////////////////////////////// void setup () {Wire. boshlash (slaveNum); Wire.onRequest (requestEvent); Wire.onReceive (qabulEvent); for (int i = 0; i <num; i ++) {pinMode (btnPin , INPUT_PULLUP); } //Serial.begin (9600); strip.begin (); }/
void loop () {
if (f_v == 1) {for (int i = 0; i <num; i ++) {hue = 50; o'tirdi = 95; yorqin = 100; } f_v = 0; } ///////////////////////////////////////////// btnMode = yolg'on; for (int i = 0; i <num; i ++) {if (! digitalRead (btnPin )) {btnMode = true; }} btnEvent (5); // Serial.println (ani_mode); //////////////////////////////////////// switch (ani_mode) {holat 0: ani0 (); tanaffus; 1 -holat: ani1 (); ani_mode = 0; ani2_Counter = 0; tanaffus; 2 -holat: ani2_Counter = 1; ani_mode = 0; tanaffus; 3 -holat: ani3 (); ani_mode = 0; ani2_Counter = 0; tanaffus; standart: readyState (); tanaffus; } if (ani2_Counter == 1) {ani2 (); } setPixels (raqam); }
///////////////////////////////////////////
void receiveEvent (int howMany) {int x = Wire.read (); agar (x == 5) {// Serial.println ("qabul qilingan 5"); ani_mode = 0; } ani_mode = x; // Serial.println (ani_mode); } //////////////////////////////////////////////////////////////// bekor qilingan talabEvent () {
agar (btnMode == rost) {
Wire.write (5); // Serial.println ("5 보냄"); } boshqa {Wire.write (0); }
}
void ani0 () {
// Serial.println ("0"); }
void ani1 () {
// Serial.println ("1"); if (pNumber == 0) {for (int i = 0; i <num; i ++) {yorqin = 0; gValue = 1; } int a1 = {25, 26}; int b1 = {39, 52}; int c1 = {40, 53}; uchun (int a = 0; a <2; a ++) {rang [a1 [a] = 100; o'tirdi [a1 [a] = 95; yorqin [a1 [a] = 100; } uchun (int b = 0; b <2; b ++) {rang [b1 = 200; o'tirdi [b1 = 95; yorqin [b1 = 100; } uchun (int c = 0; c <2; c ++) {hue [c1 [c] = 300; o'tirdi [c1 [c] = 95; yorqin [c1 [c] = 100; } // Serial.println ("0"); } if if (pNumber == 1) {for (int i = 0; i <num; i ++) {yorqin = 0; gValue = 1; } int a2 = {21, 22, 34, 35, 37, 46, 47, 51}; // int b2 = {}; // int c2 = {}; int d2 = {36, 48, 49, 50}; uchun (int a = 0; a <8; a ++) {rang [a2 [a] = 26; o'tirdi [a2 [a] = 95; yorqin [a2 [a] = 100; } uchun (int d = 0; d <4; d ++) {tus [d2 [d] = 63; o'tirdi [d2 [d] = 95; yorqin [d2 [d] = 100; } // Serial.println ("1"); } else if (pNumber == 2) {// gigant kub naqsh (int i = 0; i <num; i ++) {yorqin = 0; gValue = 1; } int a14 = {34, 35, 46, 47, 48, 49}; // sariq 06 uchun (int a = 0; a <6; a ++) {hue [a14 [a] = 35; o'tirdi [a14 [a] = 95; yorqin [a14 [a] = 100; }} else if (pNumber == 3) {for (int i = 0; i <num; i ++) {yorqin = 0; gValue = 1; } int a3 = {34, 35, 46, 47, 48, 49}; // sariq uchun (int a = 0; a <6; a ++) {hue [a3 [a] = 53; o'tirdi [a3 [a] = 95; yorqin [a3 [a] = 100; }} else if (pNumber == 4) {for (int i = 0; i <num; i ++) {yorqin = 0; gValue = 1; } int a4 = {34, 35}; // sariq int b4 = {47}; // ko'k int c4 = {48}; // binafsha
uchun (int a = 0; a <2; a ++) {rang [a4 [a] = 53; o'tirdi [a4 [a] = 95; yorqin [a4 [a] = 100; }
uchun (int b = 0; b <1; b ++) {tus [b4 = 210; o'tirdi [b4 = 95; yorqin [b4 = 100; } uchun (int c = 0; c <1; c ++) {hue [c4 [c] = 307; o'tirdi [c4 [c] = 95; yorqin [c4 [c] = 100; }} else if (pNumber == 5) {for (int i = 0; i <num; i ++) {yorqin = 0; gValue = 1; } int a5 = {34, 35, 46, 47, 48, 49};
uchun (int a = 0; a <6; a ++) {rang [a5 [a] = 100; o'tirdi [a5 [a] = 95; yorqin [a5 [a] = 100; }} else if (pNumber == 6) {for (int i = 0; i <num; i ++) {yorqin = 0; gValue = 1; } int a6 = {34, 35, 46, 47, 48, 49}; // sariq uchun (int a = 0; a <6; a ++) {hue [a6 [a] = 53; o'tirdi [a6 [a] = 95; yorqin [a6 [a] = 100; }} boshqa if (pNumber == 7) {for (int i = 0; i <num; i ++) {yorqin = 0; gValue = 1; } int c7 = {34, 35, 46, 47, 48, 49}; // binafsha rang uchun (int c = 0; c <6; c ++) {hue [c7 [c] = 307; o'tirdi [c7 [c] = 95; yorqin [c7 [c] = 100; }} else if (pNumber == 8) {for (int i = 0; i <num; i ++) {yorqin = 0; gValue = 1; } int c8 = {34, 35, 46, 47, 48, 49}; // binafsha rang uchun (int c = 0; c <6; c ++) {hue [c8 [c] = 307; o'tirdi [c8 [c] = 95; yorqin [c8 [c] = 100; }} else if (pNumber == 9) {for (int i = 0; i <num; i ++) {yorqin = 0; gValue = 1; } int c9 = {34, 35, 46, 47, 48, 49}; // binafsha rang uchun (int c = 0; c <6; c ++) {hue [c9 [c] = 307; o'tirdi [c9 [c] = 95; yorqin [c9 [c] = 100; }} else if (pNumber == 10) {for (int i = 0; i <num; i ++) {yorqin = 0; gValue = 1; } int c10 = {34, 35, 46, 47, 48, 49}; // binafsha rang uchun (int c = 0; c <6; c ++) {hue [c10 [c] = 307; o'tirdi [c10 [c] = 95; yorqin [c10 [c] = 100; }} else if (pNumber == 11) {for (int i = 0; i <num; i ++) {yorqin = 0; gValue = 1; } int c11 = {34, 35, 46, 47, 48, 49}; // binafsha rang uchun (int c = 0; c <6; c ++) {hue [c11 [c] = 307; o'tirdi [c11 [c] = 95; yorqin [c11 [c] = 100; }} if if (pNumber == 12) {for (int i = 0; i <num; i ++) {yorqin = 0; gValue = 1; } int c12 = {34, 35, 46, 47, 48, 49}; // binafsha rang uchun (int c = 0; c <6; c ++) {hue [c12 [c] = 307; o'tirdi [c12 [c] = 95; yorqin [c12 [c] = 100; }} else if (pNumber == 13) {for (int i = 0; i <num; i ++) {yorqin = 0; gValue = 1; } int a13 = {34, 35}; // sariq int b13 = {47}; // ko'k int c13 = {48}; // binafsha rang (int a = 0; a <2; a ++) {hue [a13 [a] = 53; o'tirdi [a13 [a] = 95; yorqin [a13 [a] = 100; } uchun (int b = 0; b <1; b ++) {rang [b13 = 210; o'tirdi [b13 = 95; yorqin [b13 = 100; } uchun (int c = 0; c <1; c ++) {tus [c13 [c] = 307; o'tirdi [c13 [c] = 95; yorqin [c13 [c] = 100; }} pNumber = pNumber + 1;
agar (pNumber == 14) {
pNumber = 0; }}
void ani2 () {
// Serial.println ("2"); belgisiz uzun curM = millis ();
agar (curM - preM> = 10) {
preM = curM; for (int i = 0; i <num; i ++) {if (hue = 360) {gValue = -1; } rang = tus + gValue ; } hisoblagich ++; if (hisoblagich == 360) {// Serial.print ("hisoblagich:"); // Serial.println (hisoblagich); // Serial.println (curM); hisoblagich = 0; ani2_Counter = 0; }}}
void ani3 () {
// Serial.println ("3"); } /////////////////////////////////////////////////////// bekor qilinganStState () {/ / Serial.println ("tayyor"); } //////////////////////////////////////////////////////////////////// bekor qilingan btnEvent (int b_interval) {imzosiz uzun curMillis1 = millis ();
for (int i = 0; i <num; i ++) {btnState = digitalRead (btnPin ); }
agar (curMillis1 - preMillis1> b_interval) {
preMillis1 = curMillis1; uchun (int i = 0; i = 360) {hueV = -1; } if if (hue <= 0) {hueV = 1; } rang = tus + tusV ; yorqin = 100; }}}} ////////////////////////////////////////////////////////////////////// bekor qilinganPiksellar (int k) {uchun (int i = 0; i <k; i ++) {H2R_HSBtoRGB (tus , o'tirgan , yorqin , ranglar ); int soni1 = i * 3; strip.setPixelColor (raqam1, ranglar [0], ranglar [1], ranglar [2]); strip.setPixelColor (raqam1 + 1, ranglar [0], ranglar [1], ranglar [2]); strip.setPixelColor (raqam1 + 2, ranglar [0], ranglar [1], ranglar [2]); } strip.show (); }
20 -qadam: naqshlar
Ushbu loyihada olti burchakli shaklni tashkil etuvchi bir nechta uchburchaklar mavjud. Shunday qilib, siz yorug'lik dizayniga ko'ra stereoskopik naqshlarni yaratishingiz mumkin! Har bir bo'lakni bosish kifoya va har xil ranglar gradusli bo'ladi va siz xohlagan rang chiqqanda, bosgan qo'lingizga bosing va u siz xohlagan rang bilan porlab turaveradi!
Tavsiya:
Arduino robotining 5 tasi 1 - Meni kuzatib boring - Keyingi qator - Sumo - Chizma - To'siqlardan qochish: 6 qadam
Arduino robotining 5 tasi 1 | Meni kuzatib boring | Keyingi qator | Sumo | Chizma | To'siqlardan qochish: Bu robot boshqaruv panelida ATmega328P mikrokontroller va L293D dvigatel drayveri mavjud. Albatta, bu Arduino Uno taxtasidan farq qilmaydi, lekin u foydaliroq, chunki dvigatelni boshqarish uchun boshqa qalqon kerak emas! Bu sakrashdan ozod
Meni uyg'ot - aqlli budilnik: 6 qadam
Meni uyg'ot - aqlli budilnik: Meni uyg'ot - aqlli budilnik, uni aqlli yorug'lik sifatida ham ishlatish mumkin. O'rnatilgan chiziq chizig'i sizning xonangizga kiradigan tabiiy yorug'likni taqlid qiladi. Bu sizning kuningizni tinch va tabiiy tarzda boshlashingizga imkon beradi. Budilnik, shuningdek, 4*7 segmentli
Meni siqish: 4 qadam
Meni siqib qo'ying: prototipni o'rnatish uchun avvalgi ko'rsatmalarni ishlatganingizdan so'ng, siz taqiladigan kiyim uchun materiallarni yig'ishni boshlang. Men kiyiladigan kiyim sifatida tugmachali ko'ylagi ishlatishni tanladim, chunki bu menga ko'p sxemalarni/simlarni yashirishga va men xohlagan ohangga mos kelishga imkon berdi
Kimdir meni yaxshi ko'radi Joylashuv soati: 6 qadam (rasmlar bilan)
Kimdir meni joylashuv soati yaxshi ko'radi: chet eldagi yoki shtat tashqarisidagi yaqinlarim bilan hech qachon men siz haqingizda ular haqida o'ylashdan ko'ra yaxshiroq o'ylayman deb aytmaydi! Mening nafaqadagi qaynonalarim Berlindagi (Germaniya) cherkov missiyasiga xizmat qilishga tayyorlanayotgan edilar va rafiqam ular bilan kelishdi
DIY Smart Kamera bilan meni kuzatib boring (Arduino -ga asoslangan): 22 qadam (rasmlar bilan)
DIY Smart Follow Me Drone with Camera (Arduino asosidagi): Hozirgi kunda dronlar juda mashhur o'yinchoqlar va asboblar. Siz bozorda professional va hatto boshlang'ich dronlar va uchadigan gadjetlarni topishingiz mumkin. Menda to'rtta dron bor (kvadrokopterlar va hexkopterlar), chunki men uchadigan hamma narsani yaxshi ko'raman, lekin 200 -parvoz emas