Բովանդակություն:

Capacitive Touch տրամադրություն/Ambilight: 8 քայլ
Capacitive Touch տրամադրություն/Ambilight: 8 քայլ

Video: Capacitive Touch տրամադրություն/Ambilight: 8 քայլ

Video: Capacitive Touch տրամադրություն/Ambilight: 8 քայլ
Video: Make your own Capacitive Touch Switch 2024, Հուլիսի
Anonim
Capacitive Touch տրամադրություն/Ambilight
Capacitive Touch տրամադրություն/Ambilight

Այս հրահանգը արագ գրառում է բազմաֆունկցիոնալ տրամադրություն ստեղծող իմ փորձի մասին: Էլեկտրոնային սխեմաների վերաբերյալ որոշ հիմնական գիտելիքներ են սպասվում: Theրագիրը դեռ չի ավարտվել, պետք է կատարել որոշ գործառույթներ և փոփոխություններ կատարել, բայց այն արդեն ֆունկցիոնալ է: Եթե դուք ոգևորված եք այս հրահանգով, ես կթարմացնեմ այն: Համակարգի հիմքում Arduino- ն է: Այն կվերամշակի USB- ի կամ Capacitive touch- ի յուրաքանչյուր մուտքի մուտքը և կկարգավորի RGB լույսը: Այս հրահանգը բաժանված է երեք մասի.. Հրաժարում. Էլեկտրոնիկան կարող է վտանգավոր լինել, դուք ինքներդ եք պատասխանատվություն կրած ցանկացած վնասի համար: Որոշ ծածկագրեր հավաքվում են ֆորումներից և կարող են պարունակել դրա տիրոջ անունը: Խնդրում եմ ինձ տեղյակ պահեք, և ես կավելացնեմ ձեր անունը:

Քայլ 1: Նյութերի ցուցակ

Հետևյալ բաղադրիչներն անհրաժեշտ են այս ուսուցանելու համար. /darlington-transistor-to-220/dp/9804005- Դիմադրիչների մի փունջ (6 * 10 կիլոօմ, 3 * 2 մեգաօմ)-շատ մետաղալարեր: - Գործիքներ Հզոր շոշափում- Մետաղական օղակներ հատակի համար- Պղնձե մետաղալար կամ ափսե- Ինչ-որ բան այն կառուցելու համար (գրքերի դարակ:)

Քայլ 2. Capacitive Touch - հիմունքներ և շրջան

Capacitive Touch - հիմունքներ և շրջան
Capacitive Touch - հիմունքներ և շրջան
Capacitive Touch - հիմունքներ և շրջան
Capacitive Touch - հիմունքներ և շրջան
Capacitive Touch - հիմունքներ և շրջան
Capacitive Touch - հիմունքներ և շրջան

Քանի որ նկարում էի գրքերիս դարակները, ես հնարավորություն ունեցա դրանք նաև «բարձրացնելու»: Ես ուզում էի վերահսկել տրամադրության լույսը անտեսանելի հպման միջոցով: Սկզբում իմ ծրագիրն էր օգտագործել դրա համար հատուկ IC (ինչպես Atmel QT240- ը): Բայց հետո ես պատահաբար հանդիպեցի մի էջի, որը բացատրում էր, որ Arduino- ն կարող է ընդօրինակել capacitive սենսորը ծրագրային ապահովմամբ: Էլեկտրոնային սխեման կարելի է գտնել նկարում, սենսորը պարուրաձև պղնձե մետաղալար է (պարզության համար ցուցադրվում է միայն մեկը): Ensգայունությունը վերահսկվում է յուրաքանչյուր քորոցից առաջ հայտնաբերված դիմադրիչների միջոցով: Նրանք կարող են տատանվել 1 MegaOhm- ից (բացարձակ հպում) մինչև 40 MegaOhm (12-24 դյույմ հեռավորության վրա) `կախված նրանից, թե բացարձակ կամ մոտակա հպում է անհրաժեշտ (ես վերջացրեցի 2M Օմ դիմադրիչների օգտագործմամբ): Փորձեք արժեքների հետ, մինչև սենսորը չվարվի այնպես, ինչպես ցանկանում եք: Լավ գաղափար է յուրաքանչյուր պարույրի հետևի մասում տեղադրել հաղորդալարերի գետնին միացված հաղորդիչ մակերևույթ (առանձնացված է բարակ ոչ հաղորդիչ կտորով): Այս կերպ սենսորները կլինեն ավելի կայուն և ավելի քիչ կազդեն աղմուկի վրա: Գրքերի դարակներում սենսորները տեղադրելու մասին ևս մի քանի նկար: Տեղադրված է նաև խրոցակ ՝ հետագայում միացման հետ միացման համար: Լցոնիչը օգտագործվում է ամեն ինչ թաքցնելու համար, իսկ դրանից հետո դրանք պատրաստ են ներկվել:

Քայլ 3. Capacitive Touch - ծածկագիր և փորձարկում

Capacitive Touch - ծածկագիր և փորձարկում
Capacitive Touch - ծածկագիր և փորձարկում

Հետեւյալ աղբյուրի կոդը կարող է օգտագործվել Arduino- ի վրա վրիպազերծման համար, արժեքները ստուգել arduino սերիական մոնիտորի միջոցով: Ստեղծվում է վեց արժեք: Առաջինը համակարգի աշխատանքի ցուցանիշն է: Երկրորդից վեցերորդը յուրաքանչյուր քորոցի զգայուն արժեքներն են: Արժեքները պետք է բարձրանան ձեր մատին մոտենալիս: Եթե ոչ, ստուգեք վատ կապերն ու միջամտությունը: Ռեզիստորի արժեքները կարող են փոխվել `զգայունությունը որոշելու համար: Եթե-ապա կառուցվածքը գործարկելով, որն ակտիվանում է որոշակի տրամաբանական շեմին, կարող է անցում կատարվել: Սա կօգտագործվի վերջնական arduino կոդի մեջ: Լրացուցիչ տեղեկություններ, որոնք առաջարկվում են կարդալ ՝ https://www.arduino.cc/playground/Main/CapSense--- Arduino CapTouch Debugging Code ---#include void setup () {CapSense cs_2_3 = CapSense (2, 4); // 10M դիմադրություն 2 և 4 կապերի միջև, 4 -ը սենսորային քորոց է, ավելացրեք մետաղալար, փայլաթիթեղ, foilCapSense cs_2_4 = CapSense (2, 7); // 10M դիմադրություն 2 և 7 կապերի միջև, 7 -ը սենսորային քորոց է, ավելացրեք մետաղալար, փայլաթիթեղ, foilCapSense cs_2_5 = CapSense (2, 8); // 10M դիմադրություն 2 և 8 կապերի միջև, 8 -ը սենսորային փին է, ավելացրեք մետաղալար, փայլաթիթեղ, foilCapSense cs_2_6 = CapSense (2, 12); // 10M դիմադրություն 2 և 12 կապերի միջև, 12 -ը սենսորային քորոց է, ավելացրեք մետաղալար, փայլաթիթեղ, foilCapSense cs_2_7 = CapSense (2, 13); // 10M դիմադրություն 2 և 13 կապերի միջև, 13 -րդը սենսորային քորոց է, ավելացրեք մետաղալար, foilvoid setup () {Serial.begin (9600);} void loop () {long start = millis (); երկար ընդամենը 1 = cs_2_3.capSense (30); երկար ընդամենը 2 = cs_2_4.capSense (30); երկար ընդամենը 3 = cs_2_5.capSense (30); երկար ընդհանուր 4 = cs_2_6.capSense (30); երկար ընդամենը 5 = cs_2_7.capSense (30); Serial.print (millis () - սկիզբ); // միլիվայրկյանների կատարողականի ստուգում Serial.print ("\ t"); // ներդիրի բնույթ վրիպազերծման համար windown spacing- ի համար Serial.print (total1); // տպման տվիչի ելք 1 Serial.print ("\ t"); Serial.print (ընդամենը 2); // տպման տվիչի ելք 2 Serial.print ("\ t"); Serial.print (ընդամենը 3); // տպման տվիչի ելք 3 Serial.print ("\ t"); Serial.print (ընդամենը 4); // տպման տվիչի ելք 4 Serial.print ("\ t"); Serial.println (ընդամենը 5); // տպման տվիչի ելք 5 հետաձգում (10); // կամայական հետաձգում ՝ տվյալները սերիական նավահանգստով սահմանափակելու համար} --- ՎԵՐ END ---

Քայլ 4: Տրամադրության լույս - հիմունքներ և միացում

Տրամադրության լույս - հիմունքներ և շրջան
Տրամադրության լույս - հիմունքներ և շրջան
Տրամադրության լույս - հիմունքներ և շրջան
Տրամադրության լույս - հիմունքներ և շրջան
Տրամադրության լույս - հիմունքներ և շրջան
Տրամադրության լույս - հիմունքներ և շրջան

Այժմ ժամանակն է կառուցել համակարգի ելքային մասը: Արդուինոյի PWM կապումներն օգտագործվելու են յուրաքանչյուր գույնը վերահսկելու համար: PWM- ը նշանակում է Pulse Width Modulation, քորոցը շատ արագ միացնելով և անջատելով `լուսարձակները կփչացվեն 0 -ից 255 -ի: Յուրաքանչյուր կապում կամրապնդվի FET- ով: Առայժմ համակարգը ունի միայն մեկ ալիք մեկ գույնի համար, ինչը նշանակում է, որ բոլոր RGB շերտերը միանգամից վերահսկվելու են, և անհրաժեշտ է 3 PWM կապում (յուրաքանչյուր գույնի համար մեկական): Ապագայում ես ուզում եմ կարողանալ վերահսկել իմ չորս RGB շերտերից յուրաքանչյուրը: Դա նշանակում է 4*3 = 12 PWM կապում (և հավանաբար Arduino Mega): Լավ, ժամանակն է որոշ սխեմաների համար: Սա (տես նկարը) շղթայի հիմնական պատկերումն է (շուտով ավելի գեղեցիկ կդառնա): Ներառված են նաև տարողունակության տվիչները (կանաչ մաս): Հիմնականում կա երեք բաղադրիչ, որոնք պետք է բացատրվեն.- FET Սա այն ուժեղացուցիչն է, որի մասին ես խոսում էի: Այն ունի Դարպաս, աղբյուր և ջրահեռացում: Այն ուժեղացնում է զգայարանները դարպասի մի փոքր հոսանքի վրա (միացված է Arduino- ին) և ճանապարհ է բացում 12 վոլտ հզորությամբ աշխատող RGB ժապավենի համար: Աղբյուրը պետք է լինի +12V- ով, արտահոսքը `GND- ի վրա (Ground): Ստուգեք ձեր FET- ի տեխնիկական բնութագրերի թերթիկը `ճշգրիտ քերծման համար: Յուրաքանչյուր RGB ալիք պետք է տեղադրվի իր սեփական FET- ից առաջ: Այս առումով այն գործում է Arduino- ի վերահսկվող անջատիչի պես:- RGB ժապավենԱյս 12 վոլտանոց RGB ժապավենը սովորական անոդի (+) տիպի է: Նշանակում է, որ ընդհանուր մետաղալարը պետք է միացված լինի +12 Վ լարման, իսկ հոսանքը խորտակվում է առանձին գունավոր ալիքներից յուրաքանչյուրի միջոցով: Շերտը ներառում է ռեզիստորներ, այնպես որ դրա համար մի անհանգստացեք: Եվս երեքը կսահմանափակեն FET- ի արտահոսքի առավելագույն հոսանքը: Առաջին երեք դիմադրողներն արդեն գտնվում են RGB շերտում: Ես USB մալուխները միացրել եմ RGB շերտերին, որպեսզի կարողանամ դրանք մոդուլյար կերպով միացնել: Հացահատիկի վարդակներ են դրված իմ հացահատիկի վրա: Օգտագործեք հին համակարգչային սնուցման աղբյուր հյութի համար, 12 Վ `RGB ժապավենը սնուցելու համար և, ի վերջո, 5 Վ միացումի համար, եթե ցանկանում եք, որ այն աշխատի առանց USB մալուխի:

Քայլ 5: Տրամադրության լույս - ծածկագիր և վերահսկում

Տրամադրության լույսը կառավարվում է տարողունակ սենսորների միջոցով: Առայժմ միայն գույնի փոփոխման համար եմ ծրագրավորել 2 և 3 տվիչներ: Մյուս սենսորները դեռևս գործառույթ չունեն: Ահա կոդը. // 2M դիմադրություն 4 և 2 կապերի միջև, 2 -ը սենսորային փին է, ավելացրեք մետաղալար, փայլաթիթեղ, foilCapSense In2 = CapSense (2, 7); // 2M դիմադրություն 4 և 6 կապերի միջև, 6 -ը սենսորային քորոց է, ավելացրեք մետաղալար, փայլաթիթեղ, foilCapSense In3 = CapSense (2, 8); // 2M դիմադրություն 4 և 8 կապերի միջև, 8 -ը սենսորային փին է, ավելացրեք մետաղալար, փայլաթիթեղ, foilCapSense In4 = CapSense (2, 12); // 4M և 8 -րդ կապերի միջև 2M դիմադրություն, 8 -ը սենսորային քորոց է, ավելացրեք մետաղալար, փայլաթիթեղ, foilCapSense In5 = CapSense (2, 13); // 2M դիմադրություն 4 և 8 կապերի միջև, 8 -ը սենսորային քորոց է, ավելացրեք մետաղալար, փայլաթիթեղ // PWM Pin հայտարարագրեր // սկսել կարմիր գույնի պես Պայծառություն 1 = 255; // սկսել ամբողջ պայծառությամբ RedValue1, GreenValue1, BlueValue1; // RGB բաղադրիչների խուսափման կարգավորումը () {// սահմանել սենսորի ժամանակի սպառման արժեքները In1.set_CS_AutocaL_Millis (timeout); In2.set_CS_AutocaL_Millis (ընդմիջում); In3.set_CS_AutocaL_Millis (ընդմիջում); In4.set_CS_AutocaL_Millis (ընդմիջում); In5.set_CS_AutocaL_Millis (timeout);} void loop () {long start = millis (); երկար ընդամենը 1 = In1.capSense (30); երկար ընդամենը 2 = In2.capSense (30); երկար ընդամենը 3 = In3.capSense (30); երկար ընդհանուր 4 = In4.capSense (30); երկար ընդամենը 5 = In5.capSense (30); եթե (ընդամենը 2> 150) {Գույն 1++; // ավելացնել գույնը եթե (Գույն 1> 255) {// Գույն 1 = 0; }} else if (total3> 200) {Color1--; // նվազեցնել գույնը, եթե (Գույն 1 <0) {// Գույն 1 = 255; } // փոխակերպել երանգը rgb hueToRGB (Գույն 1, Պայծառություն 1); // գրել գույներ PWM կապում analogWrite (PinR1, RedValue1); analogWrite (PinG1, GreenValue1); analogWrite (PinB1, BlueValue1);} // գործառույթը `գույնը փոխելու իր կարմիր, կանաչ և կապույտ բաղադրիչներին: խուսափել hueToRGB (int երանգ, int պայծառություն) {unsigned int scaledHue = (երանգ * 6); անստորագիր int հատված = scaledHue / 256; // հատված 0 -ից 5 -ը գունավոր անիվի շուրջը unsigned int segmentOffset = scaledHue - (հատված * 256); // դիրք հատվածի ներսում անստորագիր int compliment = 0; անստորագիր int նախորդ = (պայծառություն * (255 - segmentOffset)) / 256; unsigned int next = (պայծառություն * segmentOffset) / 256; եթե (շրջված) {պայծառություն = 255-պայծառություն; հաճոյախոսություն = 255; prev = 255-prev; հաջորդ = 255-հաջորդ; } անջատիչ (հատված) {դեպք 0: // կարմիր RedValue1 = պայծառություն; GreenValue1 = հաջորդ; BlueValue1 = հաճոյախոսություն; ընդմիջում; գործ 1: // դեղին RedValue1 = նախորդ; GreenValue1 = պայծառություն; BlueValue1 = հաճոյախոսություն; ընդմիջում; գործ 2: // կանաչ RedValue1 = հաճոյախոսություն; GreenValue1 = պայծառություն; BlueValue1 = հաջորդ; ընդմիջում; դեպք 3: // cyan RedValue1 = հաճոյախոսություն; GreenValue1 = նախորդ; BlueValue1 = պայծառություն; ընդմիջում; գործ 4: // կապույտ RedValue1 = հաջորդ; GreenValue1 = հաճոյախոսություն; BlueValue1 = պայծառություն; ընդմիջում; գործ 5: // magenta լռելյայն ՝ RedValue1 = պայծառություն; GreenValue1 = հաճոյախոսություն; BlueValue1 = նախորդ; ընդմիջում; }} --- ՎԵՐ END ---

Քայլ 6. Ambi Light - Arduino Side

Իհարկե, լիովին թույն կլիներ, եթե կարողանայիք վերահսկել ձեր համակարգչի տրամադրության լույսը: Օրինակ ՝ ամբայթ կամ ձայնով վերահսկվող դիսկոտեկ ստեղծելու համար: Այս բաժինը կենտրոնանում է ambilight մասի վրա, ապագայում ես ավելի շատ ֆունկցիոնալություն կավելացնեմ: Դե, լրացուցիչ միացում չկա, քանի որ այն բոլորը հասանելի են Arduino- ում: Այն, ինչ մենք պատրաստվում ենք օգտագործել, սերիական հաղորդակցության հնարավորություններն են և որոշ «Մշակման 1.0» ծրագրակազմը: Միացրեք ձեր arduino- ն ձեր համակարգչին USB մալուխի միջոցով (եթե էսքիզներ եք վերբեռնում դրան, դա արդեն կա): Արդուինոյի համար պետք է սերիական հաղորդակցության համար ավելացնել լրացուցիչ ծածկագիր: Կոդն անցնելու է լսելու ռեժիմի ՝ պտտելով capacitive սենսորները, քանի դեռ այն ստանում է RGB արժեքներ համակարգչից: Այնուհետև RGB- ի արժեքները սահմանում է PWM կապում: Սա իմ վերջնական կոդն է առայժմ, փոփոխությունների համար ինքներդ ստուգեք. In1 = CapSense (2, 4); // 2M դիմադրություն 4 և 2 կապերի միջև, 2 -ը սենսորային փին է, ավելացրեք մետաղալար, փայլաթիթեղ, foilCapSense In2 = CapSense (2, 7); // 2M դիմադրություն 4 և 6 կապերի միջև, 6 -ը սենսորային քորոց է, ավելացրեք մետաղալար, փայլաթիթեղ, foilCapSense In3 = CapSense (2, 8); // 2M դիմադրություն 4 և 8 կապերի միջև, 8 -ը սենսորային փին է, ավելացրեք մետաղալար, փայլաթիթեղ, foilCapSense In4 = CapSense (2, 12); // 4M և 8 -րդ կապերի միջև 2M դիմադրություն, 8 -ը սենսորային քորոց է, ավելացրեք մետաղալար, փայլաթիթեղ, foilCapSense In5 = CapSense (2, 13); // 2M դիմադրություն 4 և 8 կապերի միջև, 8 -ը սենսորային քորոց է, ավելացրեք մետաղալար, փայլաթիթեղ // PWM Pin հայտարարագրեր // սկսել կարմիր գույնի պես Պայծառություն 1 = 255; // սկսել ամբողջ պայծառությամբ RedValue1, GreenValue1, BlueValue1; // RGB բաղադրիչների բաց թողնում () {Serial.begin (9600); // սկսել սերիական հաղորդակցություն // սահմանել սենսորի ժամանակի սպառման արժեքները In1.set_CS_AutocaL_Millis (timeout); In2.set_CS_AutocaL_Millis (ընդմիջում); In3.set_CS_AutocaL_Millis (ընդմիջում); In4.set_CS_AutocaL_Millis (ընդմիջում); In5.set_CS_AutocaL_Millis (timeout);} void loop () {long start = millis (); երկար ընդամենը 1 = In1.capSense (30); երկար ընդամենը 2 = In2.capSense (30); երկար ընդամենը 3 = In3.capSense (30); երկար ընդհանուր 4 = In4.capSense (30); երկար ընդամենը 5 = In5.capSense (30); if (Serial.available ()) {// Եթե տվյալները հասանելի են կարդալու համար, val = Serial.read (); // կարդալ այն և պահել այն val commStart = millis (); if (val == 'S') {// Եթե սկսվում է char- ը, մինչ (! Serial.available ()) {} // Սպասեք մինչև հաջորդ արժեքը: RedValue1 = Serial.read (); // Երբ հասանելի լինի, հանձնարարեք: while (! Serial.available ()) {} // Նույնը, ինչ վերևում: GreenValue1 = Serial.read (); իսկ (! Serial.available ()) {} BlueValue1 = Serial.read (); } Serial.print (RedValue1); Serial.print (GreenValue1); Serial.println (BlueValue1); } else if ((millis () - commStart)> 1000) {if (total2> 150) {Color1 ++; // ավելացնել գույնը եթե (Գույն 1> 255) {// Գույն 1 = 0; }} else if (total3> 200) {Color1--; // նվազեցնել գույնը, եթե (Գույն 1 <0) {// Գույն 1 = 255; }} hueToRGB (Գույն 1, Պայծառություն 1); } analogWrite (PinR1, RedValue1); analogWrite (PinG1, GreenValue1); analogWrite (PinB1, BlueValue1);} // գործառույթը ՝ գույնը փոխելու իր կարմիր, կանաչ և կապույտ բաղադրիչների: բաց թողնել hueToRGB (int երանգ, int պայծառություն) {unsigned int scaledHue = (երանգ * 6); անստորագիր int հատված = scaledHue / 256; // հատված 0 -ից 5 -ը գունավոր անիվի շուրջը unsigned int segmentOffset = scaledHue - (հատված * 256); // դիրք հատվածի ներսում անստորագիր int compliment = 0; անստորագիր int նախորդ = (պայծառություն * (255 - segmentOffset)) / 256; unsigned int next = (պայծառություն * segmentOffset) / 256; եթե (շրջված) {պայծառություն = 255-պայծառություն; հաճոյախոսություն = 255; prev = 255-prev; հաջորդ = 255-հաջորդ; } անջատիչ (հատված) {դեպք 0: // կարմիր RedValue1 = պայծառություն; GreenValue1 = հաջորդ; BlueValue1 = հաճոյախոսություն; ընդմիջում; գործ 1: // դեղին RedValue1 = նախորդ; GreenValue1 = պայծառություն; BlueValue1 = հաճոյախոսություն; ընդմիջում; դեպք 2: // կանաչ RedValue1 = հաճոյախոսություն; GreenValue1 = պայծառություն; BlueValue1 = հաջորդ; ընդմիջում; դեպք 3: // cyan RedValue1 = հաճոյախոսություն; GreenValue1 = նախորդ; BlueValue1 = պայծառություն; ընդմիջում; գործ 4: // կապույտ RedValue1 = հաջորդ; GreenValue1 = հաճոյախոսություն; BlueValue1 = պայծառություն; ընդմիջում; գործ 5: // magenta լռելյայն ՝ RedValue1 = պայծառություն; GreenValue1 = հաճոյախոսություն; BlueValue1 = նախորդ; ընդմիջում; }} --- ՎԵՐ END ---

Քայլ 7: Ambi Light - Համակարգչային կողմ

Համակարգչի կողքին մշակվում է Processing 1.0 ուրվագիծը, տես processing.org: Այս փոքրիկ (որոշ չափով խառնաշփոթ) ծրագիրը ամեն ակնթարթում հաշվարկում է էկրանի միջին գույնը և այն ուղարկում սերիական նավահանգիստ: Այն դեռևս շատ հիմնական է և կարող է օգտագործել որոշակի շտկումներ, բայց այն շատ լավ է աշխատում: Ապագայում այն կթարմացնեմ RGB- ի առանձին առանձին շերտերի և էկրանի բաժինների համար: Դուք նույնպես կարող եք դա անել ինքներդ ձեզ, լեզուն բավականին պարզ է: Ահա կոդը.; PImage screenShot; Serial myPort; static public void main (String args ) {PApplet.main (new String {"-present", "shooter"});} void setup () {size (100, 100); //size(screen.width, screen.height); // Տպել սերիական նավահանգիստների ցուցակ ՝ վրիպազերծման նպատակով. Println (Serial.list ()); // Ես գիտեմ, որ իմ mac- ի սերիական ցուցակի առաջին նավահանգիստը միշտ իմ FTDI ադապտերն է, ուստի ես բացում եմ Serial.list () [0]: // Windows մեքենաների վրա սա ընդհանրապես բացում է COM1: // Բացեք ցանկացած պորտ, որն օգտագործում եք: String portName = Serial.list () [0]; myPort = նոր Սերիա (սա, portName, 9600);} անվավեր վիճակահանություն () {// պատկեր (էկրանի նկար, 0, 0, լայնություն, բարձրություն); screenShot = getScreen (); գույն kleur = գույն (0, 0, 0); kleur = գույն (screenShot); //myPort.write(int(red(kleur))++ ','+int (կանաչ (kleur))+','+int (կապույտ (kleur))+13); //myPort.write(int(red(kleur))); //myPort.write (','); //myPort.write(int(green(kleur))); //myPort.write (','); //myPort.write(int(blue(kleur))); //myPort.write(13); լցնել (kleur); rect (30, 20, 55, 55);} գույնի գույն (PImage img) {int cols = (img.width); int տողեր = (img. բարձրություն); int հարթություն = (img. լայնություն*img. բարձրություն); int r = 0; int g = 0; int b = 0; img.loadPixels (); // Ga elke pixel langs (dimension) for (int i = 0; i <(dimension/2); i ++) {r = r+((img.pixels >> 16) & 0xFF); g = g + ((img.pixels >> 8) & 0xFF); b = b + (img.pixels & 0xFF);} int mean_r = r/(dimension/2); int mean_g = g/(dimension/2); int mean_b = b/(dimension/2); գույն mean_clr = գույն (mean_r, mean_g, mean_b); myPort.write ('S'); myPort.write (mean_r); myPort.write (mean_g); myPort.write (mean_b); return (mean_clr);} PImage getScreen () {GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment (); GraphicsDevice gs = ge.getScreenDevices (); DisplayMode ռեժիմ = gs [0].getDisplayMode (); Ուղղանկյունի սահմաններ = նոր Ուղղանկյուն (0, 0, mode.getWidth (), mode.getHeight ()); BufferedImage աշխատասեղան = նոր BufferedImage (mode.getWidth (), mode.getHeight (), BufferedImage. TYPE_INT_RGB); փորձեք {desktop = new Robot (gs [0]): createScreenCapture (սահմաններ); } բռնել (AWTException ե) {System.err.println ("Էկրանի նկարահանումը ձախողվեց"); } վերադարձ (նոր PImage (աշխատասեղան));} --- ՎԵՐ END ---

Քայլ 8: Արդյունք

Արդյունք
Արդյունք
Արդյունք
Արդյունք

Եվ սա արդյունքն է, այն իրականում իմ մահճակալի ներքևի մասում է: Ես դեռ պետք է փոխեմ կտորը, այն ավելի շատ կտարածի լույսը: Շուտով ավելի շատ նկարներ դրա մասին: Հուսով եմ, որ ձեզ դուր է գալիս այս ուսանելի ծրագիրը, և ես նաև հույս ունեմ, որ այն հիմք է հանդիսանում ձեր սեփական ստեղծագործական գործունեության համար: Timeամանակի սղության պատճառով ես այն շատ արագ գրեցի: Հնարավոր է, որ ձեզ անհրաժեշտ լինի ունենալ մի քանի հիմնական arduino/electronics գիտելիքներ այն հասկանալու համար, բայց ես մտադիր եմ ապագայում այն թարմացնել, եթե այն լավ ընդունվի:

Խորհուրդ ենք տալիս: