Мазмұны:
- Жабдықтар
- 1 -қадам: Келіңіздер
- 2 -қадам: материалды дайындау
- 3 -қадам: акрилді кесу
- 4 -қадам: 3D принтерлермен жақтар жасаңыз
- 5 -қадам: Түсірілім
- 6 -қадам: Жарықдиодты жолақты + дәнекерленген жарықдиодты жолақты (NeoPixel) сымдармен бекітіңіз
- 7 -қадам: Сымдармен дәнекерлеуге арналған қосқыш
- 8 -қадам: құрастыру -болтты бүйіріне салыңыз = ①
- 9 -қадам: Ⓛⓣ -ді Ⓒ = ② -ге бекітіңіз
- 10 -қадам: Ассамблея -Ⓦ мен Ⓝ көмегімен ① мен ② = ③ біріктіріңіз
- 11 -қадам: Акрилді байланыстыру арқылы монтаждау Ⓐⓔ және ③ бекітіңіз = ④
- 12 -қадам: Ⓢ -ді Ⓓ = ⑤ -ке бекітіңіз
- 13 -қадам: құрастыру -④ мен ⑤ Ⓦ мен Ⓝ = ⑥ көмегімен біріктіріңіз
- 14 -қадам: Бөлшекті толық жинау
- 15 -қадам: Жобаның жұмыс көрінісі
- 16 -қадам: NeoPixel, қосқыш сым
- 17 -қадам: NeoPixel және Arduino сымдары
- 18 -қадам: Arduino бағдарламасын жасаңыз
- 19 -қадам:
- 20 -қадам: Үлгілер
Бейне: Мені жарықтандыр!: 20 қадам (суреттермен)
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:24
жоба тобының мүшелері
(Hyewon Shin, Eunjeong Ko, Junsung Y)
Егер сіз жарыққа қол тигізіп, дизайн жасай алсаңыз ше? Егер сізде қызықты анимациямен өзіңіз жасаған әдемі жарық үлгісі болса, қандай күйде болар едіңіз? Мені жарықтандырыңыз, ол жарықтың өзіне тиіп, безендіретін және қызықты өрнектер жасайтын қызықты эскиз кітабы болады! Бұл жобада бірнеше үшбұрыштар бар. алтыбұрышты пішін. Сонымен, сіз жарықтың дизайнына сәйкес стереоскопиялық үлгілерді жасай аласыз! Әр бөлікті жай ғана басыңыз, сонда әр түрлі түстер бағаланады, ал сіз қалаған түс шыққанда, басқан қолыңызға тигізіңіз, ол қалаған түспен әдемі жарқырай береді! Жобада шамамен 312 үшбұрыш қолданылған, бірақ ол 6 үшбұрышпен жақсы жұмыс істейтін жақсы жарық. Енді мен оны алты үшбұрышпен қалай жасауға болатынын көрсетейін. Қадамдарды орындаңыз, сонда сіз өзіңіздің керемет жұмысыңызға ие боласыз!
Жабдықтар
Жабдық: Arduino (мен arduino mega 2560 қолдандым), акрил (мөлдір, ақ), жарық диодты жолақ (NeoPixel), диффузорлық пленка, түйме, 4 істікшелі қосқыш, сым, микросхема, қуат көзі
Құралдар: Лазермен басқарылатын кесу машинасы, 3D принтері
1 -қадам: Келіңіздер
Келіңіздер, менімен бірге алтыбұрышты сүйкімді бөлік жасайық!
Light Me Up 312 үшбұрыштың көмегімен жасалған, бірақ тіпті 6 үшбұрыш керемет жарық жасай алады. Егер сіз оны кеңірек масштабта жасағыңыз келсе, оны төмендегі файлға сілтеме жасай аласыз.
2 -қадам: материалды дайындау
3 -қадам: акрилді кесу
Әр бөліктің алдыңғы және артқы жағын кесу үшін лазерлік кескішті қолданыңыз. Артқы жағындағы акрилдің түсі сіз қалаған нәрсе болуы мүмкін, бірақ мөлдір акрилді қолданғаныңызға көз жеткізіңіз, себебі алдыңғы бөлігін күңгірттеу керек! Егер сіз мөлдір емес түсті акрилді қолдансаңыз, жарықты жақсы көрмейсіз.
4 -қадам: 3D принтерлермен жақтар жасаңыз
Енді әр бөліктің бүйірлерін жасау уақыты келді. Келіңіздер! Бүйірдегі 3D модельдеу файлдары төменде берілген. Біз PLA -ны екі жаққа айналдыру үшін қолдандық PLA ABS -ке қарағанда күшті және жиырылуы аз, сондықтан жіптерге PLA -ны қолдану ұсынылады.
5 -қадам: Түсірілім
Енді алдыңғы жағындағы акрилге жеңіл диффузиялық пленканы қояйық. Егер сіз оған пленка қойсаңыз, ол жайылып, әлдеқайда әдемі жарқырайды. Алдымен пленканы үшбұрыш етіп кесіңіз. (Пленканы акрилден гөрі үлкенірек етіп кескеніңіз жөн) Телефоныңызға қорғаныс пленкасын қою оңай. Егер сіз осында кеңес бергіңіз келсе, оны итеру үшін картаны қолдана аласыз, сонда оны мұқият жабыстыруға болады!
6 -қадам: Жарықдиодты жолақты + дәнекерленген жарықдиодты жолақты (NeoPixel) сымдармен бекітіңіз
Егер сіз жарық диодты жолақты дәнекерлеуде өте жақсы болсаңыз, жарық диодты жолақты артқы жағына қоюдың уақыты келді. Алдымен жарықдиодты жолақтың артқы жағына желім пистолетін немесе екі жақты таспаны бекітіңіз. Ал алдымен дәнекерлеу сымының екі жағындағы сымдарды екі жағындағы тесіктерден алып тастаңыз. Соңында, жарықдиодты жолақты артқы акрилге бекітіңіз және ол аяқталды!
Дәнекерлеу уақыты келді! жарықдиодты жолақтарды, 4 істікшелі қосқыштарды (қосқыш немесе сымдар) және дәнекерлеуге не қажет екенін дайындаңыз. Мен жарықдиодты үш блокта қолдандым. Қаласаңыз, бір немесе екі жарықдиодты қолдануға болады, бірақ мен үшеуін қолдануды ұсынамын. Барлық материалдар дайын болған кезде сымдарды екі диапазондағы, 5В желілеріндегі және жарықдиодты жолақтың жерге қосу желілерінде дәнекерлеңіз.
7 -қадам: Сымдармен дәнекерлеуге арналған қосқыш
8 -қадам: құрастыру -болтты бүйіріне салыңыз = ①
Енді бұл өте оңай бөлігі! 3D басып шығарылған үш жақтың әрқайсысына бір болтты салыңыз. Бұрандалы түймені құрылымдық болттар мен гайкаларды қолдану сияқты себеппен жасауға болады. Кесек аяқталғаннан кейін мен бөлікті корпусқа салып, жаңғақпен аяқтаймын.
9 -қадам: Ⓛⓣ -ді Ⓒ = ② -ге бекітіңіз
10 -қадам: Ассамблея -Ⓦ мен Ⓝ көмегімен ① мен ② = ③ біріктіріңіз
11 -қадам: Акрилді байланыстыру арқылы монтаждау Ⓐⓔ және ③ бекітіңіз = ④
Егер сіз болтты бүйіріне қойсаңыз, біз оны бүйіріне және алдыңғы жағына бекітеміз. Алдыңғы жағы акрил, сондықтан оны арнайы акрил байланыстыру арқылы қою керек. Егер акрилді кәдімгі облигацияға жапсырсаңыз, ол із қалдырады.
12 -қадам: Ⓢ -ді Ⓓ = ⑤ -ке бекітіңіз
13 -қадам: құрастыру -④ мен ⑤ Ⓦ мен Ⓝ = ⑥ көмегімен біріктіріңіз
14 -қадам: Бөлшекті толық жинау
15 -қадам: Жобаның жұмыс көрінісі
16 -қадам: NeoPixel, қосқыш сым
17 -қадам: NeoPixel және Arduino сымдары
18 -қадам: Arduino бағдарламасын жасаңыз
extern volatile unsigned long timer0_millis;
#қосу
#define MODEBTNNUM 3 int ani_mode = 0; белгісіз ұзақ preM1, preM2, preM3;
жарамсыз орнату () {
Wire.begin (); for (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; } үшін (int i = 0; i <6; i ++) {Wire.requestFrom (i+1, 1); while (Wire.available ()) {int x = Wire.read (); // Serial.println (x); егер (x == 5) {ani_mode = 0; // Serial.println («x = 5»); }}}/ /////// if (ani_mode == 0) {for (int i = 1; i 3000) {preM1 = current1; үшін (int i = 1; i 5000) {preM2 = ағымдағы2; үшін (int i = 1; i 3000) {preM3 = ағымдағы3; // таймер0_миллис = 0; // preM1 = 0; // preM2 = 0; // preM3 = 0; // Serial.println («таймерді қалпына келтіру»); for (int i = 1; i <7; i ++) {Wire.beginTransmission (i); Wire.write (ani_mode); //Serial.println("3000 «); Wire.endTransmission (i); }}}}
19 -қадам:
extern volatile unsigned long timer0_millis;
#қосу
#қосу #PIN кодын анықтау 12 #NUMPIXELS анықтау 162 Adafruit_NeoPixel жолағы = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); const int num = NUMPIXELS / 3; const int slaveNum = 1; int түстері [num] [3]; int hue [num]; int sat [num]; int bright [сан]; int pNumber = 0; int gValue [num] = {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 [num] = {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 [num]; логикалық btnMode; int hueV [num] = {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}; #қосу #анықтау BTNNUM 1 int f_v = 1; белгісіз ұзақ preMillis1; қол қойылмаған ұзақ преМ; int ani_mode = 0; int ani2_Counter = 0; int есептегіш = 0; ///////////////////////////////////////////////////////////// жарамсыз орнату () {Wire. бастау (slaveNum); Wire.onRequest (requestEvent); Wire.onReceive (receiveEvent); 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 ++) {реңк = 50; отырды = 95; жарқын = 100; } f_v = 0; }/ жалған; for (int i = 0; i <num; i ++) {if (! digitalRead (btnPin )) {btnMode = true; }} btnEvent (5); // Serial.println (ani_mode); //////////////////////////////////////// қосқыш (ani_mode) {жағдай 0: ani0 (); үзіліс; 1 -жағдай: ani1 (); ani_mode = 0; ani2_Counter = 0; үзіліс; 2 -жағдай: ani2_Counter = 1; ani_mode = 0; үзіліс; 3 -жағдай: ani3 (); ani_mode = 0; ani2_Counter = 0; үзіліс; әдепкі: readyState (); үзіліс; } if (ani2_Counter == 1) {ani2 (); } setPixels (сан); }
///////////////////////////////////////////
void receiveEvent (int howMany) {int x = Wire.read (); if (x == 5) {// Serial.println («5 алынды»); ani_mode = 0; } ani_mode = x; // Serial.println (ani_mode); } /////////////////////////////////////////////////////// void requestEvent () {
егер (btnMode == true) {
Wire.write (5); // Serial.println («5 보냄»); } басқа {Wire.write (0); }
}
void ani0 () {
// Serial.println («0»); }
void ani1 () {
// Serial.println («1»); if (pNumber == 0) {for (int i = 0; i <num; i ++) {жарқын = 0; gValue = 1; } int a1 = {25, 26}; int b1 = {39, 52}; int c1 = {40, 53}; for (int a = 0; a <2; a ++) {реңк [a1 [a] = 100; отырды [a1 [a] = 95; жарқын [a1 [a] = 100; } үшін (int b = 0; b <2; b ++) {реңк [b1 = 200; отырды [b1 = 95; жарқын [b1 = 100; } үшін (int c = 0; c <2; c ++) {реңк [c1 [c] = 300; отыр [c1 [c] = 95; ашық [c1 [c] = 100; } // Serial.println («0»); } else if (pNumber == 1) {for (int i = 0; i <num; i ++) {жарқын = 0; gValue = 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 ++) {реңк [a2 [a] = 26; отырды [a2 [a] = 95; жарқын [a2 [a] = 100; } үшін (int d = 0; d <4; d ++) {реңк [d2 [d] = 63; отыр [d2 [d] = 95; ашық [d2 [d] = 100; } // Serial.println («1»); } else if (pNumber == 2) {// алып текше үлгісі (int i = 0; i <num; i ++) {жарқын = 0; gValue = 1; } int a14 = {34, 35, 46, 47, 48, 49}; // сары 06 үшін (int a = 0; a <6; a ++) {реңк [a14 [a] = 35; отырды [a14 [a] = 95; жарқын [a14 [a] = 100; }} else if (pNumber == 3) {for (int i = 0; i <num; i ++) {жарқын = 0; gValue = 1; } int a3 = {34, 35, 46, 47, 48, 49}; // сары үшін (int a = 0; a <6; a ++) {реңк [a3 [a] = 53; отырды [a3 [a] = 95; жарқын [a3 [a] = 100; }} else if (pNumber == 4) {for (int i = 0; i <num; i ++) {жарқын = 0; gValue = 1; } int a4 = {34, 35}; // сары int b4 = {47}; // көк int c4 = {48}; // күлгін
for (int a = 0; a <2; a ++) {реңк [a4 [a] = 53; отырды [a4 [a] = 95; жарқын [a4 [a] = 100; }
үшін (int b = 0; b <1; b ++) {реңк [b4 = 210; отырды [b4 = 95; жарқын [b4 = 100; } үшін (int c = 0; c <1; c ++) {реңк [c4 [c] = 307; отыр [c4 [c] = 95; ашық [c4 [c] = 100; }} else if (pNumber == 5) {for (int i = 0; i <num; i ++) {жарқын = 0; gValue = 1; } int a5 = {34, 35, 46, 47, 48, 49};
for (int a = 0; a <6; a ++) {реңк [a5 [a] = 100; отырды [a5 [a] = 95; жарқын [a5 [a] = 100; }} else if (pNumber == 6) {for (int i = 0; i <num; i ++) {жарқын = 0; gValue = 1; } int a6 = {34, 35, 46, 47, 48, 49}; // сары үшін (int a = 0; a <6; a ++) {реңк [a6 [a] = 53; отырды [a6 [a] = 95; жарқын [a6 [a] = 100; }} else if (pNumber == 7) {for (int i = 0; i <num; i ++) {жарқын = 0; gValue = 1; } int c7 = {34, 35, 46, 47, 48, 49}; // күлгін үшін (int c = 0; c <6; c ++) {реңк [c7 [c] = 307; отыр [c7 [c] = 95; ашық [c7 [c] = 100; }} else if (pNumber == 8) {for (int i = 0; i <num; i ++) {жарқын = 0; gValue = 1; } int c8 = {34, 35, 46, 47, 48, 49}; // күлгін үшін (int c = 0; c <6; c ++) {реңк [c8 [c] = 307; отыр [c8 [c] = 95; ашық [c8 [c] = 100; }} else if (pNumber == 9) {for (int i = 0; i <num; i ++) {жарқын = 0; gValue = 1; } int c9 = {34, 35, 46, 47, 48, 49}; // күлгін үшін (int c = 0; c <6; c ++) {реңк [c9 [c] = 307; отыр [c9 [c] = 95; ашық [c9 [c] = 100; }} else if (pNumber == 10) {for (int i = 0; i <num; i ++) {жарқын = 0; gValue = 1; } int c10 = {34, 35, 46, 47, 48, 49}; // күлгін үшін (int c = 0; c <6; c ++) {реңк [c10 [c] = 307; отыр [c10 [c] = 95; ашық [c10 [c] = 100; }} else if (pNumber == 11) {for (int i = 0; i <num; i ++) {жарқын = 0; gValue = 1; } int c11 = {34, 35, 46, 47, 48, 49}; // күлгін үшін (int c = 0; c <6; c ++) {реңк [c11 [c] = 307; отыр [c11 [c] = 95; ашық [c11 [c] = 100; }} else if (pNumber == 12) {for (int i = 0; i <num; i ++) {жарқын = 0; gValue = 1; } int c12 = {34, 35, 46, 47, 48, 49}; // күлгін үшін (int c = 0; c <6; c ++) {реңк [c12 [c] = 307; отыр [c12 [c] = 95; ашық [c12 [c] = 100; }} else if (pNumber == 13) {for (int i = 0; i <num; i ++) {жарқын = 0; gValue = 1; } int a13 = {34, 35}; // сары int b13 = {47}; // көк int c13 = {48}; // күлгін үшін (int a = 0; a <2; a ++) {реңк [a13 [a] = 53; отырды [a13 [a] = 95; жарқын [a13 [a] = 100; } үшін (int b = 0; b <1; b ++) {реңк [b13 = 210; отырды [b13 = 95; жарқын [b13 = 100; } үшін (int c = 0; c <1; c ++) {реңк [c13 [c] = 307; отыр [c13 [c] = 95; ашық [c13 [c] = 100; }} pNumber = pNumber + 1;
егер (pNumber == 14) {
pNumber = 0; }}
void ani2 () {
// Serial.println («2»); белгісіз ұзын curM = millis ();
егер (curM - preM> = 10) {
preM = curM; for (int i = 0; i <num; i ++) {if (hue = 360) {gValue = -1; } реңк = реңк + gValue ; } есептегіш ++; if (counter == 360) {// Serial.print («есептегіш:»); // Serial.println (санауыш); // Serial.println (curM); санауыш = 0; ani2_Counter = 0; }}}
void ani3 () {
// Serial.println («3»); } //////////////////////////////////////////////////////// жарамсыз дайынState () {/ / Serial.println («дайын»); } /////////////////////////////////////////////////////////////////// жарамсыз btnEvent (int b_interval) {белгісіз ұзын 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; } if if (hue <= 0) {hueV = 1; } реңк = реңк + реңк V ; жарқын = 100; }}}} ///////////////////////////////////////////////////////////////////// жарамсыз жиынтық пиксельдер (int k) {for (int i = 0; i <k; i ++) {H2R_HSBtoRGB (реңк , түс , ашық , түстер ); int num1 = i * 3; strip.setPixelColor (сан1, түстер [0], түстер [1], түстер [2]); strip.setPixelColor (num1 + 1, түстер [0], түстер [1], түстер [2]); strip.setPixelColor (num1 + 2, түстер [0], түстер [1], түстер [2]); } strip.show (); }
20 -қадам: Үлгілер
Бұл жобада алтыбұрышты пішінді құрайтын бірнеше үшбұрыштар бар. Сонымен, сіз жарықтың дизайнына сәйкес стереоскопиялық үлгілерді жасай аласыз! Тек әр бөлікті басыңыз, сонда әр түрлі түстер бағаланады, ал сіз қалаған түс шыққанда, басқан қолыңызға тигізіңіз, ол қалаған түспен әдемі жарқырай береді!
Ұсынылған:
Arduino роботы 5 -те - Мені қадағалаңыз - Жолдың соңы - Сумо - Сурет - Кедергілерді болдырмау: 6 қадам
Arduino роботы 5 -те | Мені қадағалаңыз | Жолдың соңы | Сумо | Сурет | Кедергілерді болдырмау: Бұл роботтың басқару тақтасында ATmega328P микроконтроллері мен L293D мотор драйвері бар. Әрине, бұл Arduino Uno тақтасынан еш айырмашылығы жоқ, бірақ ол пайдалы, себебі қозғалтқышты басқаруға басқа қалқан қажет емес! Ол секіруден бос
Мені ояту - ақылды дабыл сағаты: 6 қадам
Мені ояту - ақылды дабыл сағаты: мені ояту - бұл ақылды оятқыш, оны ақылды жарық ретінде пайдалануға болады. Кірістірілген жолақ сіздің бөлмеге келетін табиғи жарықты имитациялайды. Бұл сіздің күнді тыныш және табиғи түрде бастауға мүмкіндік береді. Оятқыш сонымен қатар 4*7 сегменттен тұрады
Мені қысыңыз: 4 қадам
Мені қысыңыз: Прототипті орнату үшін алдыңғы нұсқаулықты қолданғаннан кейін, киюге арналған материалдарды жинай бастаңыз. Мен түймелі куртканы киюге болатын киімді таңдадым, себебі бұл маған көптеген схемаларды/сымдарды жасыруға және мен ойлаған тонға сәйкес келуге мүмкіндік берді
NodeMCU көмегімен мені роботпен орындаңыз: 4 қадам
NodeMCU көмегімен мені бақылайтын робот: NodeMCU көмегімен өте қарапайым робот. Ол NodeMCU HC SR04 қашықтық сенсоры арқылы жақын жердегі адамды/ адамды сезеді. Ол Нысанды/ Адамды анықтаған кезде, ол жүре бастайды
Біреу мені жақсы көреді Орналасу сағаты: 6 қадам (суреттермен)
Біреу мені жақсы көретін жер сағаты: Шетелдегі немесе штаттан тыс жақындарыммен ештеңе айтпайды, мен сен үшін олар қай уақытта екенін білгеннен гөрі жақсы ойлаймын! Менің зейнеткер қайын жұртым Берлинде, Германияда шіркеу миссиясына қызмет етуге дайындалып жатыр еді, ал менің әйелім