
Բովանդակություն:
2025 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2025-01-23 14:48



Այս նախագծում դուք գիշերային լամպ եք պատրաստելու `օգտագործելով ardruino, Adafruit neo rgb Strips և 3D տպիչ:
Նկատի ունեցեք, որ այս անխախտը զուտ իմ դպրոցական ծրագրի համար է: Այս նախագծի ծածկագիրը հիմնված է այլ նախագծի վրա: Ասելով, որ ես մասնագետ չեմ, երբ խոսքը վերաբերում է Արդրուինոյին:
Քայլ 1: Պահանջներ



Այս նախագծի համար ձեզ հարկավոր կլինեն հետևյալ սարքավորումները և գործիքները
Սարքավորումներ:
1 - ardruino101 (ԱՄՆ -ում) կամ Genuino101 (ԱՄՆ -ից դուրս):
2 - NeoPixel rgb led շերտեր adafruit- ից (5 վոլտ):
3 - ardruino USB միակցիչ (տիպ B- ից A միակցիչ):
4 - softwareրագրային ապահովում Ardruino- ից, Ardruino IDE Այս ձեռնարկում մենք կօգտագործենք 1.8.5 տարբերակը: Softwareրագրային գրադարանի պահանջներն են ՝ 101, Adafruit NeoPixel և Madgwick:
5 -Եվ օբյեկտ ՝ ձեր սարքավորումները պահելու համար: Այս դեպքում ես կօգտագործեմ 3D տպիչ: Այս 3D տպման ֆայլը գտնվում է «Լամպի գլուխ» կոչվող նկարագրություններում: Նկատի ունեցեք, որ այս ֆայլի ձևաչափը պատրաստ չէ 3D տպման համար: Կախված ձեր 3D տպիչներից, նախ պետք է նախապես գործարկեք նշանակված 3D տպման ծրագրակազմը 3D օբյեկտի վրա: Երբեմն 3D տպման մասշտաբը կվերականգնվի: այնպես որ համոզվեք, որ տրամագիծը դրված է 11 սմ 11 սմ -ի վրա:
6 - հիմնական զոդման հավաքածու:
Քայլ 2: Սարքաշարի և ծրագրակազմի իմացություն
Ardruin/Genuino101
Պարզապես պարզաբանելու համար Ardruino101- ը և genuino101- ը անունների կողքին չափազանց նույնն են: Երկուսն էլ ունեն նույն բնութագրերը և օգտագործում են նույն ծրագրակազմը:
Ardruino101- ն ունի հիմնական բնութագրերը, ինչպիսիք են ardruino UNO- ն և այլն: Ardruino101- ի հիմնական առանձնահատկությունը արագացուցիչն ու գիրոսկոպն են, որոնք մենք կօգտագործենք մեր նախագծում: Նաև այս տեսակի ardruino- ն ունի իր եզակի ծածկագրային գրադարանը, որը կոչվում է CurrieIMU (Ներքին չափման միավորներ), որը ներառված է 101 գրադարանի ընդլայնման մեջ:
Ասվածով եկեք խոսենք ծրագրակազմի մասին:
oftրագրային ապահովում և գրադարաններ
Ardruino IDE- ն օգտագործում է python- ը որպես հիմնական աղբյուր: դա նաև պլատվորմի հիմնական կոդն է, որտեղ աշխատում է արդրուինոյի մեծ մասը: Առցանց կան բազմաթիվ ձեռնարկներ, թե ինչպես օգտագործել այս ծրագրաշարը, ուստի խորհուրդ եմ տալիս նախ ուսումնասիրել դրանք, եթե դուք նոր եք այս ծրագրում:
Այդ ասելով, այն գրադարանները, որոնք մենք օգտագործում ենք, հետևյալն են.
Էսքիզների ընտրացանկից,> Ներառել գրադարանը> Կառավարել գրադարանները … Տեքստի մուտքագրման դաշտում մուտքագրեք
- 101 Ստանդարտ ardruino 101 ավտոմատ կերպով ներառված չէ ardruino IDE- ի վրա: Մեզ անհրաժեշտ է գրադարանի այս ընդլայնումը `մեր ardruino տեսակը կոդավորելու համար:
-Adafruit NeoPixel ՝ մեր Neo պիքսելային շերտերը կոդավորելու համար:
-Madwwick Հում տվյալները կարդալու և այս տվյալները հում, սկիպիդար և գլորելու համար հաշվարկելու համար:
Նոր RGB շերտեր
Այն տեսակը, որը ես օգտագործելու եմ, 5 լարման կամ 5 վ տիպի է: Այս 5 վ -ով ինձ անհրաժեշտ չէ երկարացված էներգիայի աղբյուր ՝ իմ շերտերը կառավարելու համար: Փոխարենը ես կօգտագործեմ իմ արդրուինոն որպես էներգիայի աղբյուր ՝ շերտերը կառավարելու և լուսավորելու համար:
Ահա որոշ խորհուրդներ, որոնք դուք պետք է իմանաք, նախքան այս շերտերը սկսելը:
Նախ ձեզ հարկավոր կլինեն ադաֆրուտից Neodigital RGB led շերտեր: Այս տեսակի շերտերը համատեղելի են կոդերի միջոցով: Հաջորդը, ինչ դուք պետք է իմանաք, այն է, որ այս շերտերի վրա կա հետույք և դիմային հատված: Այս հետևի և առջևի կողմը կարևոր է զոդման համար: Համոզվեք, որ դուք կպցրել եք առջևի կողմը, որտեղ սլաքի բանալին ուղղված է ծայրից:
Ահա ուղեցույց, թե ինչպես օգտագործել դրանք:
Գոյություն ունի եռակցման 3 կետ, որոնք պետք է հիշել գետնին միացման (GND), լարման միացման (V) և կապի կապի (DIN):
Քայլ 3: Բաղադրիչների տեղադրում



Նախ պետք է եռաչափ տպել այն բաղադրիչը, որը կարող եք գտնել պահանջների մեջ: Այս դեպքում ես կամենամ օգտագործել PLA- ն: Համոզվեք, որ ընդհանուր առարկայի տրամագիծը 11 սմ է 11 սմ: Սա կապահովի, որ արդրուինոն և ժապավենները տեղավորվեն արագացման մեջ: Նկատի ունեցեք, որ յուրաքանչյուր 3D տպիչ օգտագործում է տարբեր ծրագրաշարեր `տպագրության գործընթացը հաշվարկելու համար: Այդ ասելով, ձեր օգտագործած ֆայլը կարող է տարբեր չափերով չափվել, այնպես որ դա նկատի ունեցեք:
Տպելուց հետո երկրորդը համոզվեք, որ բաղադրիչները կարող են փակվել: 3D տպումները միասին կազմում են մի ոլորտ: Նրանք պետք է գեղեցիկ տեղավորվեն: Եթե կոմպոնենը կկորցնի, ապա ներքին կողմով մի ժապավեն տեղադրեք, որպեսզի կափարիչը լցվի: Իսկ եթե հաստ է, օգտագործեք հղկաթուղթ:
Երրորդը `արդրուինոյի և շերտերի համար նախատեսված սխեմատիկները բավականին հեշտ են: Դուք 3 լարով կօգտագործեք ժապավեններն արդրուինոյին միացնելու համար: Ուշադրություն դարձրեք, որ միակ տեղերը, որոնք ես զոդում եմ, շերտերի վրա են: ոչ Արդրուինոյի վրա:
GND- ը գնում է GND
DIN- ը անցնում է Pin (մեր դեպքում pin6 arrruino- ում)
5 Վ -ն անցնում է 5 Վ -ի
Համոզվեք, որ ձեր կողմից օգտագործվող led շերտերի քանակը 30 է: Այլևս այն, և այն չի կարող պատշաճ կերպով կատարել կոդը: Դուք կարող եք պարզապես կտրել մկրատով նշանով ցուցադրված ցանկացած չկրկված շերտեր:
Չորրորդ Ամեն ինչ պետք է գեղեցիկ տեղավորվի ոլորտում: Դուք կցանկանայիք, որ ես խաչմերուկ դնեի 3 -րդ տպագրությունից 1 -ի միջև, որպեսզի տեսնեի գագաթը և գագաթին տեղադրեի պլաստիկ:
Քայլ 4: Կոդավորում

Այսպիսով, մինչ այժմ դուք պետք է ունենաք ձեր գրադարանում անհրաժեշտ բոլոր բաղադրիչները:
Ահա այն կոդը, որը ձեզ հարկավոր կլինի նախագիծը գործարկելու համար: Արդյունքը պետք է նմանվի այս էջում ուղարկված տեսանյութի հղմանը:
Այս ծածկագրի աղբյուրը կարելի է գտնել այստեղ: Այս նախագիծը ներառում է նաև անհապաղ քայլեր `օգտագործման հիմքում ընկած ծածկագիրն ու ալգարիտմը ավելի լավ հասկանալու համար:
#ներառել #ներառել #ներառել #ներառել
#սահմանեք PIN 6 // 11 պիքսել NeoPixel Strip
#սահմանել PIN1 7 // 1 պիքսել NeoPixel Strip #սահմանել NUMPIXELS 30 // Պիքսելների համարը #սահմանել SAMPLE_RATE 25 // Արագացուցիչի և գիրոսկոպի նմուշառման արագություն
// Madgwick կազմաձևում
Madgwick ֆիլտր; անստորագիր երկար microsPerReading, micros Նախորդ; float accelScale, gyroScale;
// NeoPixel կազմաձևում
Adafruit_NeoPixel պիքսել = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); Adafruit_NeoPixel pixelsStatus = Adafruit_NeoPixel (1, 7, NEO_GRB + NEO_KHZ800);
// Գունավոր տարածություններ
RGBConverter rgbConverter; կրկնակի h = 1; կրկնակի s = 1; կրկնակի v = 1; բայթ rgb [3];
// Կարգավիճակի շարժման լամպ
// վիճակ 0 -> ընտրել երանգ -սկիպիդար // վիճակ 1 -> ընտրել հագեցվածություն -գլան // վիճակ 2 -> ընտրել արժեք -այո // վիճակ 3 -> գույնի անկայուն int կարգավիճակի շտկում Լամպ = 0;
void setup () {
Serial.begin (9600);
// սկսեք IMU- ն և զտեք
CurieIMU.begin (); CurieIMU.setGyroRate (SAMPLE_RATE); CurieIMU.setAccelerometerRate (SAMPLE_RATE); filter.begin (SAMPLE_RATE);
// Արագացուցիչի տիրույթը սահմանեք 2G
CurieIMU.setAccelerometerRange (2); // yrիրոսկոպի տիրույթը սահմանեք 250 աստիճանի/վայրկյան CurieIMU.setGyroRange (250);
CurieIMU.autoCalibrateAccelerometerOffset (X_AXIS, 0);
CurieIMU.autoCalibrateAccelerometerOffset (Y_AXIS, 0); CurieIMU.autoCalibrateAccelerometerOffset (Z_AXIS, 1); CurieIMU.autoCalibrateGyroOffset ();
CurieIMU.attachInterrupt (eventCallback);
CurieIMU.setDetectionThreshold (CURIE_IMU_TAP, 950); CurieIMU. Ընդհատում (CURIE_IMU_TAP);
// նախաստորագրել փոփոխականները `արագությունը ճշգրտելու համար
microsPerReading = 1000000 / SAMPLE_RATE; microsPrevenue = micros ();
// Init NeoPixel 11
pixels.begin (); pixels.show ();
// Init NeoPixel 1
pixelsStatus.begin (); pixels.show ();
// statusուցադրել կարգավիճակը px- ում
setStatusPixel (statusLamp); }
դատարկ շրջան () {
int aix, aiy, aiz; // արագացուցիչ ՝ int gix, giy, giz; բոց կացին, այ, ազ; բոց gx, gy, gz; բոց գլորում, սկիպիդար, հորանջում; ստատիկ անստորագիր երկար միկրոնԱյժմ;
// ստուգեք, արդյոք ժամանակն է կարդալ տվյալները և թարմացնել զտիչը
microsNow = միկրոս (); եթե (microsNow - microsPrevious> = microsPerReading) {
// կարդալ CurieIMU- ի հում տվյալները
CurieIMU.readMotionSensor (aix, aiy, aiz, gix, giy, giz);
// փոխարկել չմշակված տվյալների ծանրության և աստիճանների/երկրորդ միավորների
ax = convertRawAcceleration (aix); ay = convertRawAcceleration (aiy); az = convertRawAcceleration (aiz); gx = convertRawGyro (gix); gy = convertRawGyro (giy); gz = convertRawGyro (giz);
// թարմացնել զտիչը, որը հաշվարկում է կողմնորոշումը
filter.updateIMU (gx, gy, gz, ax, ay, az);
// տպել վերնագիրը, սկիպիդարն ու գլորը
գլորում = filter.getRoll (); սկիպիդար = filter.getPitch (); yaw = filter.getYaw ();
// ավելացում նախորդ անգամ, այնպես որ մենք պահպանում ենք պատշաճ տեմպը
microsPrevious = microsPrevious + microsPerReading;
// Միայն եթե փոխեք երանգը, հագեցվածությունը կամ արժեքը
if (statusLamp ընտրել Hue if (սկիպիդար> = -90 && քայլ <= 90 && statusLamp == 0) {// Փոխակերպել անկյունի սկիպիդար = սկիպիդար + 90; // Ստանում է գույնի կոորդինատներ h = սկիպիդարից / 180.0;}
// Անկյունների սահմանափակումներ
// գլորում միայն -90º -ից 90º = 180º // Պետություն 1 -> ընտրել Հագեցում, եթե (գլորում> = -90 && գլորում <= 90 && statusLamp == 1) {// Փոխակերպել անկյունը գլորում = գլորում + 90; // Ստանում է գույնի կոորդինատներ s = roll / 180.0 անկյուններից; }
// Պետություն 2 -> ընտրել Արժեք
եթե (statusLamp == 2) {// yaw 0º -ից 360º v = yaw / 360.0; }
// Փոխակերպել rgb- ին
rgbConverter.hsvToRgb (h, s, v, rgb); /* Serial.print ("Գույն:"); Serial.print (h); Serial.print (" -"); Սերիա. Տպագիր (ներ); Serial.print (" -"); Serial.print (v); Serial.println ("");
Serial.print ("Կողմնորոշում.");
Serial.print (yaw); Serial.print (""); Serial.print (սկիպիդար); Serial.print (""); Serial.println (գլորում); */
// Փոխել պիքսելների գույնը
համար (int px = 0; px <NUMPIXELS; px ++) {pixels.setPixelColor (px, pixels. Color (rgb [0], rgb [1], rgb [2])); pixels.show (); }}
// statusուցադրել կարգավիճակը px- ում
setStatusPixel (statusLamp); }}
float convertRawAcceleration (int aRaw) {
// քանի որ մենք օգտագործում ենք 2G տիրույթ // -2 գ քարտեզներ -32768 հումքի արժեքով // +2 գ քարտեզներ ՝ 32767 հում արժեքով
բոց a = (aRaw * 2.0) / 32768.0;
վերադարձնել; }
float convertRawGyro (int gRaw) {
// քանի որ մենք օգտագործում ենք 250 աստիճան/վայրկյան տիրույթ // -250 քարտեզ ՝ -32768 հումքի արժեքով // +250 քարտեզ ՝ 32767 հում արժեքով
բոց g = (gRaw * 250.0) / 32768.0;
վերադարձ g; }
static void eventCallback ()
{// Հայտնաբերել հպումը բոլոր առանցքներում, եթե (CurieIMU.getInterruptStatus (CURIE_IMU_TAP)) {Serial.print ("Հպեք հայտնաբերված statusLamp:"); Serial.println (statusLamp);
// Փոխել վիճակը
statusLamp ++;
// Նախնական վիճակ
եթե (statusLamp> 3) {statusLamp = 0; }}}
անվավեր setStatusPixel (int statusPx)
{switch (statusPx) {case 0: pixelsStatus.setPixelColor (0, pixelsStatus. Color (150, 0, 0)); pixelsStatus.show (); ընդմիջում; գործ 1: pixelsStatus.setPixelColor (0, pixelsStatus. Color (0, 150, 0)); pixelsStatus.show (); ընդմիջում; գործ 2: pixelsStatus.setPixelColor (0, pixelsStatus. Color (0, 0, 150)); pixelsStatus.show (); ընդմիջում; գործ 3: pixelsStatus.setPixelColor (0, pixelsStatus. Color (0, 0, 0)); pixelsStatus.show (); ընդմիջում;
}
}
Խորհուրդ ենք տալիս:
Գույնը փոխող LED օղակաձև լույս ՝ 11 քայլ

Գույնը փոխող LED օղակի լույս. Այսօր մենք պատրաստվում ենք պատրաստել 20 դյույմ գույնի փոփոխվող LED օղակի լույս: Ես գիտեմ, որ օղակաձև լույսերը սովորաբար շրջանաձև են, բայց այս մեկը լինելու է քառակուսի ՝ մի փոքր ավելի հեշտացնելու համար: Այս մինի նախագիծը հիմնականում այն լուսանկարիչների համար է, ովքեր կարիք ունեն
Գույնը փոխող օպտիկամանրաթելային գործվածք ՝ 10 քայլ (նկարներով)

Գույնը փոխող օպտիկամանրաթելային գործվածք. Մոտ 150 դոլար մեկ բակում և կտրելու շատ սահմանափակումներով, շուկայում օպտիկամանրաթելային հյուսվածքը ամենահասանելի նյութը չէ: Բայց ձեր սեփական օպտիկամանրաթելային թելերով, շղարշով և LED- ներով դուք կարող եք ստեղծել ձեր սեփականը ցանկացած ձևի ՝ մասնակի մասնակի
Գույնը փոխող LED տոնածառ. 3 քայլ (նկարներով)

Գույնը փոխող LED տոնածառ. Անցյալ տարի ես գտա այս տոնածառը դոլարի խանութում և ցանկանում էի ներքևում տեղադրել լուսադիոդ, որպեսզի այն լուսավորվի, բայց մինչև մեկ տարի անց այդպես էլ չհասա դրան: Սա շատ պարզ նախագիծ է, որը պահանջում է շատ մանրուք և գեղեցիկ ավարտ է ունենում
Գույնը փոխող տուփի դարակներ LED շերտերով և Arduino- ով. 5 քայլ (նկարներով)

Գույնը փոխող տուփի դարակներ LED- շերտերով և Arduino- ով: Սա սկսվեց, քանի որ ինձ հարկավոր էր լրացուցիչ պահեստ ՝ գրասեղանի կողքին և վերևում, բայց ես ուզում էի դրան հատուկ ձևավորում տալ: Ինչու՞ չօգտագործել այն զարմանահրաշ LED շերտերը, որոնք կարող են առանձին հասցեագրվել և ցանկացած գույն ստանալ: Ես մի քանի նշումներ եմ տալիս դարակի մասին
Գույնը փոխող USB լույս ՝ 5 քայլ

Գույնը փոխող USB լույս. Ահա պլաստիկ շշից պատրաստված լույս, ձկնորսական գծից, հին USB մալուխից և RGB LED- ի դանդաղ գույնի փոփոխությունից: Նեյլոնե թելը (ձկնորսական գիծը) չունի նույն ազդեցությունը, ինչ իրական օպտիկական մանրաթելերը: Լույսի ազդանշանի ավելի շատ վատթարացում կա դրա երկայնքով