Мазмұны:

Capacitive Touch Mood/Ambilight: 8 қадам
Capacitive Touch Mood/Ambilight: 8 қадам

Бейне: Capacitive Touch Mood/Ambilight: 8 қадам

Бейне: Capacitive Touch Mood/Ambilight: 8 қадам
Бейне: Very Easy! Capacitive touch Mood/Ambilight [Full Tutorial] 2024, Шілде
Anonim
Capacitive Touch Mood/Ambilight
Capacitive Touch Mood/Ambilight

Бұл нұсқаулық-бұл көп функциялы көңіл-күйді құру тәжірибемнің тез жазылуы. Электрондық схемалар туралы кейбір негізгі білім күтіледі. Жоба әлі аяқталған жоқ, кейбір функционалдылық пен түзетулер енгізу керек, бірақ ол қазірдің өзінде функционалды. Егер сіз бұл нұсқаулыққа қызығушылық танытсаңыз, мен оны жаңартамын. Жүйенің негізі - Arduino. Ол USB немесе Capacitive сенсорлық кірістердің әрқайсысының кірісін өңдейді және RGB жарығын басқарады. Бұл нұсқаулық үш бөлімге бөлінген:- Сыйымдылығы бар сенсорлық бөлім көрінбейтін кіріс түймелерін қамтиды- Көңіл жарығы бөлімі күйдіргішті басқаруды қамтиды- Ambilight бөлімі жарықты басқару үшін компьютерлік бағдарлама жасаған RGB мәндерін өңдейтін сериялық порт арқылы енгізуді қамтиды. Жауапкершіліктен бас тарту: Электроника қауіпті болуы мүмкін, келтірілген зақым үшін сіз өзіңіз жауап бересіз. Кейбір код форумдардан жиналады және оның иесінің аты -жөні болмауы мүмкін. Маған хабарлаңыз, мен сіздің атыңызды қосамын.

1 -қадам: Элементтер тізімі

Бұл нұсқаулық үшін келесі компоненттер қажет:- Arduino+USB кабелі- Нан тақтасы- Компьютердің қуат көзі- 3x RGB жолағы, dealextreme.com сайтына кіріңіз.- 3x TIP120 FETs, мысалы https://uk.farnell.com/stmicroelectronics/tip120 /darlington-transistor-to-220/dp/9804005- Резисторлар шоғыры (6 * 10 килоОм, 3 * 2 мегаОм)-Сым көп. - Құралдар Сыйымдылық сенсоры- Табанға арналған металл сақиналар- Мыс сым немесе пластина- Оны құрастыратын нәрсе (кітап сөресі сияқты:)

2 -қадам: сыйымдылық сенсоры - негіздер мен схема

Сыйымдылық сенсоры - негіздер мен схема
Сыйымдылық сенсоры - негіздер мен схема
Сыйымдылық сенсоры - негіздер мен схема
Сыйымдылық сенсоры - негіздер мен схема
Сыйымдылық сенсоры - негіздер мен схема
Сыйымдылық сенсоры - негіздер мен схема

Мен кітап сөрелерімді бояп жүргендіктен, оларды жаңартуға да мүмкіндігім болды. Мен көңіл -күйді көрінбейтін жанасу арқылы басқарғым келді. Алдымен менің жоспарым осы үшін арнайы IC пайдалану болды (Atmel QT240 сияқты). Бірақ мен Arduino сыйымдылық датчигін бағдарламалық қамтамасыз ету арқылы эмуляциялауға болатынын түсіндіретін параққа тап болдым. Электронды схеманы суреттен табуға болады, сенсор спиральды мыс сым (тек біреуі қарапайымдылық үшін көрсетілген). Сезімталдықты әрбір түйреуіштің алдында табылған резисторлар бақылайды. Олар абсолютті немесе жақын жанасудың қажеттілігіне байланысты 1 МегаОм (абсолютті сенсорлық)-40 МегаОм (12-24 дюйм қашықтықта) аралығында болуы мүмкін (мен 2М Ом резисторларын қолдандым). Сенсор қалағандай әрекет еткенше мәндермен тәжірибе жасаңыз. Әрбір спиральдың артқы жағында тізбектердің жеріне жалғанған өткізгіш бетті (өткізбейтін жұқа бөліктен бөлінген) орнату жақсы. Осылайша сенсорлар тұрақты болады және шуылға аз әсер етеді. Сенсорларды кітап сөресіне орнату туралы қосымша суреттер. Кейінірек тізбекке оңай қосылу үшін штепсель орнатылған. Толтырғыш бәрін жасыру үшін қолданылады, содан кейін олар бояуға дайын.

3 -қадам: сыйымдылық сенсоры - код және тестілеу

Сыйымдылық сенсоры - код және тестілеу
Сыйымдылық сенсоры - код және тестілеу

Келесі бастапқы кодты Arduino -де жөндеу үшін қолдануға болады, arduino сериялық мониторымен мәндерді тексеріңіз. Алты мән жасалады. Біріншісі - жүйенің жұмысының көрсеткіші. Екіншіден алтыншыға дейін - әрбір түйреуіштің мәндері. Саусаққа жақындаған кезде мәндер көтерілуі керек. Олай болмаған жағдайда, нашар байланыстар мен кедергілерді тексеріңіз. Сезімталдықты анықтау үшін резистор мәндерін өзгертуге болады. Белгілі бір логикалық тіректе іске қосылатын if-then құрылымын енгізу арқылы коммутатор жасауға болады. Бұл соңғы arduino кодында пайдаланылады. Оқуға ұсынылған қосымша ақпарат: https://www.arduino.cc/playground/Main/CapSense--- Arduino CapTouch отладка коды ---#қамтиды void setup () {CapSense cs_2_3 = CapSense (2, 4); // 2 және 4 түйреуіштер арасындағы 10М резистор, 4 түйреуіш - сенсорлық түйреуіш, сымды қосыңыз, foilCapSense cs_2_4 = CapSense (2, 7); // 2 және 7 түйреуіштер арасындағы 10М резистор, 7 түйреуіш - сенсорлық түйреуіш, сымды қосыңыз, foilCapSense cs_2_5 = CapSense (2, 8); // 2 және 8 түйреуіштер арасындағы 10М резистор, 8 түйреуіш - сенсорлық түйреуіш, сымды қосыңыз, foilCapSense cs_2_6 = CapSense (2, 12); // 2 және 12 түйреуіштер арасындағы 10М резистор, 12 түйреуіш - сенсорлық түйреуіш, сымды қосыңыз, foilCapSense cs_2_7 = CapSense (2, 13); // 2 және 13 -түйреуіштер арасындағы 10М резистор, 13 -түйреуіш - сенсорлық түйреуіш, сымды қосу, фольгавоидты реттеу () {Serial.begin (9600);} бос цикл () {ұзақ бастау = миллис (); ұзын жалпы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»); // желінің аралығын жөндеу үшін қойынды таңбасы Serial.print (барлығы1); // басып шығару сенсорының шығысы 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 -қадам: Көңіл -күй жарығы - негіздер мен схема

Көңіл -күй жарығы - негіздер мен схема
Көңіл -күй жарығы - негіздер мен схема
Көңіл -күй жарығы - негіздер мен схема
Көңіл -күй жарығы - негіздер мен схема
Көңіл -күй жарығы - негіздер мен схема
Көңіл -күй жарығы - негіздер мен схема

Енді жүйенің шығыс бөлігін құрудың уақыты келді. Әр түсті басқару үшін arduino PWM түйреуіштері қолданылады. PWM - бұл импульстік ен модуляциясын білдіреді, түйреуішті тез қосу және өшіру арқылы жарық диодтары 0 -ден 255 -ке дейін күңгірттенеді. Әр түйрікті FET күшейтеді. Әзірге жүйеде әр түске бір ғана арна бар, яғни барлық RGB жолақтары бірден басқарылады және 3 PWM түйреуіші қажет (әр түс үшін бір). Болашақта мен төрт RGB жолағымды басқара алғым келеді. Бұл 4*3 = 12 PWM түйреуішін білдіреді (және, мүмкін, Arduino Mega). Жақсы, кейбір схемаларға уақыт! Бұл (суретті қараңыз) - тізбектің негізгі көрінісі (жақында жақсы болады). Сыйымдылық датчиктері де қосылған (жасыл бөлігі). Негізінде түсіндіруге болатын үш компонент бар:- FETБұл мен айтқан күшейткіш. Оның қақпасы, көзі және дренажы бар. Ол қақпадағы (Arduino -ға қосылған) кішкене ток күшін күшейтеді және 12 вольтты RGB жолағына жол ашады. Дерек көзі +12В болуы керек, GND (Ground) бойынша ағызу. Нақты түйін алу үшін FET техникалық сипаттамалар парағын тексеріңіз. Әрбір RGB арнасы өзінің FET алдында орналасуы керек. Бұл мағынада ол Arduino басқарылатын қосқыш сияқты әрекет етеді.- RGB жолағы Бұл 12 вольтты RGB жолағы жалпы анод (+) түріне жатады. Яғни, жалпы сымды +12 В -қа қосу керек және ток әр түрлі түсті арналар арқылы өтеді. Бұл жолақта резисторлар бар, сондықтан бұл туралы алаңдамаңыз! Тағы үшеуі FET ағызатын максималды токты шектейді. Үздік үш резистор RGB жолағында. Мен USB кабельдерін RGB жолақтарына дәнекерледім, сондықтан оларды модульдік түрде оңай қосуға болады. Ескі хабтың штепсельдері менің тақтайшама қойылған. Ескі компьютерлік қуат көзін шырын үшін, 12 Вт RGB жолағын қосу үшін және соңында USB кабелінсіз жұмыс істеуін қаласаңыз, 5 В үшін пайдаланыңыз.

5 -қадам: көңіл -күй жарығы - код және бақылау

Көңіл -күй жарығы сыйымдылық сенсорларымен басқарылады. Әзірге мен тек түс өзгертуге арналған сенсорлардың 2 және 3 -ін бағдарламаладым. Басқа сенсорларда әзірге ешқандай функция жоқ. Міне код: --- Arduino Mood Control Code ---#const boolean invert = true; const long timeout = 10000; // Capacitive датчик декларациясыCapSense In1 = CapSense (2, 4); // 4 және 2 түйреуіштер арасындағы 2М резистор, 2 түйреуіш - сенсорлық түйреуіш, сымды қосыңыз, foilCapSense In2 = CapSense (2, 7); // 4 және 6 түйреуіштер арасындағы 2М резистор, 6 түйреуіш - сенсорлық түйреуіш, сымды қосыңыз, foilCapSense In3 = CapSense (2, 8); // 4 және 8 түйреуіштер арасындағы 2М резистор, 8 түйреуіш - сенсорлық түйреуіш, сымды қосыңыз, foilCapSense In4 = CapSense (2, 12); // 4 және 8 түйреуіштер арасындағы 2М резистор, 8 түйреуіш - сенсорлық түйреуіш, сымды қосыңыз, foilCapSense In5 = CapSense (2, 13); // 4 және 8 түйреуіштер арасындағы 2М резистор, 8 түйреуіш - сенсорлық түйреуіш, сым, фольга қосыңыз // PWM түйреуіштері PinR1 = 3; int PinG1 = 5; int PinB1 = 6; // Басқа айнымалылар Түс1 = 128; // қызыл түске боялған кезде бастаңыз Жарықтық1 = 255; // RedValue1, GreenValue1, BlueValue1 толық жарықтықпен бастаңыз; // RGB componentsvoid setup () {// сенсордың күту уақытының мәндерін орнатыңыз In1.set_CS_AutocaL_Millis (күту уақыты); In2.set_CS_AutocaL_Millis (күту уақыты); In3.set_CS_AutocaL_Millis (күту уақыты); In4.set_CS_AutocaL_Millis (күту уақыты); In5.set_CS_AutocaL_Millis (күту уақыты);} 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 (барлығы2> 150) {Түс1 ++; // түсі ұлғайту, егер (Color1> 255) {// Color1 = 0; }} else if (total3> 200) {Color1--; // түс азайту, егер (Color1 <0) {// Color1 = 255; } // реңкті rgb hueToRGB -ге түрлендіру (Color1, Brightness1); // түстерді PWM түйреуіштеріне analogWrite (PinR1, RedValue1) жазу; analogWrite (PinG1, GreenValue1); analogWrite (PinB1, BlueValue1);} // түсі оның қызыл, жасыл және көк компоненттеріне түрлендіру функциясы. vue hueToRGB (int hue, int жарықтығы) {unsigned int scaledHue = (реңк * 6); белгісіз int сегменті = scaledHue / 256; // түсті дөңгелектің айналасында 0 -ден 5 -ке дейінгі сегмент unsigned int segmentOffset = scaledHue - (сегмент * 256); // сегменттегі позиция белгісіз int compliment = 0; unsigned int prev = (жарықтық * (255 - segmentOffset)) / 256; unsigned int next = (жарықтық * segmentOffset) / 256; if (төңкеру) {жарықтық = 255-жарықтық; комплимент = 255; алдыңғы = 255-алдыңғы; келесі = 255-келесі; } қосқыш (сегмент) {0 жағдай: // қызыл RedValue1 = жарықтық; GreenValue1 = келесі; BlueValue1 = мақтау; үзіліс; 1 -жағдай: // сары RedValue1 = алдыңғы; GreenValue1 = жарықтық; BlueValue1 = мақтау; үзіліс; 2 жағдай: // жасыл RedValue1 = комплимент; GreenValue1 = жарықтық; BlueValue1 = келесі; үзіліс; 3 жағдай: // көгілдір RedValue1 = комплимент; GreenValue1 = алдыңғы; BlueValue1 = жарықтық; үзіліс; 4 жағдай: // көк RedValue1 = келесі; GreenValue1 = мақтау; BlueValue1 = жарықтық; үзіліс; 5 -жағдай: // қызыл күрең әдепкі: RedValue1 = жарықтық; GreenValue1 = мақтау; BlueValue1 = алдыңғы; үзіліс; }}--- СОҢЫ ---

6 -қадам: Ambi Light - Arduino Side

Әрине, сіздің көңіл -күйіңізді компьютерден басқара алу өте жақсы болар еді. Мысалы, амбилайт немесе дыбыспен басқарылатын дискотека құру. Бұл бөлім ambilight бөлігіне бағытталған, болашақта мен қосымша функционалдылықты қосамын. Ал, қосымша схема жоқ, себебі ол Arduino -да бар. Біз қолданатын нәрсе - бұл сериялық байланыс мүмкіндіктері және кейбір 'Processing 1.0' бағдарламалық жасақтамасы. Ардуиноны компьютерге USB кабелі арқылы қосыңыз (егер сіз оған эскиздерді жүктесеңіз, ол қазірдің өзінде). Arduino үшін сериялық байланыс үшін қосымша кодты қосу керек. Код компьютерден RGB мәндерін алған кезде сыйымдылық сенсорларын бұру арқылы тыңдау режиміне ауысады. Содан кейін ол RGB мәндерін PWM түйреуіштеріне орнатады. Бұл менің соңғы кодым, өзгертулерді өзіңіз тексеріңіз: --- Arduino Ambilight коды ---#const boolean invert = true; const long timeout = 10000; long commStart = 0; char val; // Capacitive sensor declarationCapSense In1 = CapSense (2, 4); // 4 және 2 түйреуіштер арасындағы 2М резистор, 2 түйреуіш - сенсорлық түйреуіш, сымды қосыңыз, foilCapSense In2 = CapSense (2, 7); // 4 және 6 түйреуіштер арасындағы 2М резистор, 6 түйреуіш - сенсорлық түйреуіш, сымды қосыңыз, foilCapSense In3 = CapSense (2, 8); // 4 және 8 түйреуіштер арасындағы 2М резистор, 8 түйреуіш - сенсорлық түйреуіш, сымды қосыңыз, foilCapSense In4 = CapSense (2, 12); // 4 және 8 түйреуіштер арасындағы 2М резистор, 8 түйреуіш - сенсорлық түйреуіш, сымды қосыңыз, foilCapSense In5 = CapSense (2, 13); // 4 және 8 түйреуіштер арасындағы 2М резистор, түйреуіш 8 - сенсорлық түйреуіш, сым, фольга қосыңыз // PWM түйреуіші PinR1 = 3; int PinG1 = 5; int PinB1 = 6; // Басқа айнымалылар Түс1 = 128; // қызыл түске боялған кезде бастаңыз Жарықтық1 = 255; // RedValue1, GreenValue1, BlueValue1 толық жарықтықпен бастаңыз; // RGB componentsvoid setup () {Serial.begin (9600); // сериялық хабарлауды бастау // сенсордың күту уақытының мәндерін орнату In1.set_CS_AutocaL_Millis (күту уақыты); In2.set_CS_AutocaL_Millis (күту уақыты); In3.set_CS_AutocaL_Millis (күту уақыты); In4.set_CS_AutocaL_Millis (күту уақыты); In5.set_CS_AutocaL_Millis (күту уақыты);} 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') {// Егер start char алынса, (! Serial.available ()) {} // Келесі мәнге дейін күтіңіз. RedValue1 = Serial.read (); // Қол жетімді болған кезде тағайындаңыз. while (! Serial.available ()) {} // Жоғарыдағыдай. GreenValue1 = Serial.read (); while (! Serial.available ()) {} BlueValue1 = Serial.read (); } Serial.print (RedValue1); Serial.print (GreenValue1); Serial.println (BlueValue1); } if if ((millis () - commStart)> 1000) {if (total2> 150) {Color1 ++; // түсі ұлғайту, егер (Color1> 255) {// Color1 = 0; }} else if (total3> 200) {Color1--; // түс азайту, егер (Color1 <0) {// Color1 = 255; }} hueToRGB (Түс1, Жарықтық1); } analogWrite (PinR1, RedValue1); analogWrite (PinG1, GreenValue1); analogWrite (PinB1, BlueValue1);} // түсі оның қызыл, жасыл және көк компоненттеріне түрлендіру функциясы. vue hueToRGB (int hue, int жарықтығы) {unsigned int scaledHue = (реңк * 6); белгісіз int сегменті = scaledHue / 256; // түсті дөңгелектің айналасында 0 -ден 5 -ке дейінгі сегмент unsigned int segmentOffset = scaledHue - (сегмент * 256); // сегменттегі позиция белгісіз int compliment = 0; unsigned int prev = (жарықтық * (255 - segmentOffset)) / 256; unsigned int next = (жарықтық * segmentOffset) / 256; if (төңкеру) {жарықтық = 255-жарықтық; комплимент = 255; алдыңғы = 255-алдыңғы; келесі = 255-келесі; } қосқыш (сегмент) {0 жағдай: // қызыл RedValue1 = жарықтық; GreenValue1 = келесі; BlueValue1 = мақтау; үзіліс; 1 -жағдай: // сары RedValue1 = алдыңғы; GreenValue1 = жарықтық; BlueValue1 = мақтау; үзіліс; 2 жағдай: // жасыл RedValue1 = комплимент; GreenValue1 = жарықтық; BlueValue1 = келесі; үзіліс; 3 жағдай: // көгілдір RedValue1 = комплимент; GreenValue1 = алдыңғы; BlueValue1 = жарықтық; үзіліс; 4 жағдай: // көк RedValue1 = келесі; GreenValue1 = мақтау; BlueValue1 = жарықтық; үзіліс; 5 -жағдай: // қызыл күрең әдепкі: RedValue1 = жарықтық; GreenValue1 = мақтау; BlueValue1 = алдыңғы; үзіліс; }}--- СОҢЫ ---

7 -қадам: Ambi Light - Компьютер жағы

Компьютердің жағында Processing 1.0 эскизі орындалады, processing.org қараңыз. Бұл кішкене (біршама тәртіпсіз) бағдарлама әр сәтте орташа экрандағы бояуды есептейді және оны сериялық портқа жібереді. Бұл әзірге өте қарапайым және кейбір түзетулерді қолдануы мүмкін, бірақ ол өте жақсы жұмыс істейді! Мен оны болашақта бірнеше бөлек RGB жолақтары мен экран бөлімдері үшін жаңартамын. Сіз мұны өзіңіз жасай аласыз, тіл өте қарапайым. Міне код: --- 1.0 кодын өңдеу --- импорттау өңдеу; PImage screenShot; Serial myPort; static public void main (String args ) {PApplet.main (new String {«--present», «shooter»});} void setup () {size (100, 100)); //size(экранның ені, экранның биіктігі); // Жөндеу мақсатында сериялық порттар тізімін басып шығарыңыз: println (Serial.list ()); // Менің Mac сериялық тізіміндегі бірінші порт // әрқашан FTDI адаптері екенін білемін, сондықтан мен Serial.list () [0] ашамын. // Windows машиналарында бұл әдетте COM1 ашады. // Сіз қолданатын портты ашыңыз. Жолдың portName = Serial.list () [0]; myPort = new Serial (this, portName, 9600);} void draw () {// кескін (screenShot, 0, 0, ені, биіктігі); screenShot = getScreen (); түс kleur = түс (0, 0, 0); kleur = түс (screenShot); //myPort.write(int(red(kleur))+ ','+int (жасыл (клеур))+','+int (көк (клеур))+13); //myPort.write(int(red(kleur)))); //myPort.write (','); //myPort.write(int(green(kleur)))); //myPort.write (','); //myPort.write(int(көк (түс)))); //myPort.write (13); толтыру (түс); тік (30, 20, 55, 55);} түс түсі (PImage img) {int cols = (img.width); int rows = (сурет биіктігі); int өлшемі = (img.width*img.height); int r = 0; int g = 0; int b = 0; img.loadPixels (); // (int i = 0; i <(dimension/2); i ++) {r = r+((img.pixels >> 16) және 0xFF); g = g + ((кескін пиксель >> 8) & 0xFF); b = b + (img.pixels & 0xFF);} int орташа_r = r/(өлшем/2); int орташа_g = g/(өлшем/2); int орташа_b = b/(өлшем/2); түс орташа_клр = түс (орташа_r, орташа_г, орташа_б); myPort.write ('S'); myPort.write (орташа_r); myPort.write (орташа_g); myPort.write (Mean_b); return (Mean_clr);} PImage getScreen () {GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment (); GraphicsDevice gs = ge.getScreenDevices (); DisplayMode режимі = gs [0].getDisplayMode (); Төртбұрыш шектері = жаңа Rectangle (0, 0, mode.getWidth (), mode.getHeight ()); BufferedImage жұмыс үстелі = жаңа BufferedImage (mode.getWidth (), mode.getHeight (), BufferedImage. TYPE_INT_RGB); {desktop = new Robot (gs [0]) көріңіз. createScreenCapture (шектер); } catch (AWTException e) {System.err.println («Экран түсірілмеді.»); } қайтару (жаңа PImage (жұмыс үстелі));} --- END ---

8 -қадам: Нәтиже

Нәтиже
Нәтиже
Нәтиже
Нәтиже

Нәтиже - бұл менің төсегімнің төменгі жағында. Маған әлі де матаны ауыстыру керек, ол жарықты көбірек таратады. Бұл суреттер жақын арада. Сізге бұл нұсқаулық ұнайды деп үміттенемін және бұл сіздің жеке шығармашылығыңыз үшін негіз болады деп сенемін. Уақыт шектеулі болғандықтан мен оны тез жаздым. Мұны түсіну үшін сізге arduino/электроника туралы негізгі білім қажет болуы мүмкін, бірақ егер ол жақсы қабылданса, мен оны болашақта жаңартуды жоспарлап отырмын.

Ұсынылған: