Мазмұны:

Интерактивті сенсорсыз жарық: 7 қадам (суреттермен)
Интерактивті сенсорсыз жарық: 7 қадам (суреттермен)

Бейне: Интерактивті сенсорсыз жарық: 7 қадам (суреттермен)

Бейне: Интерактивті сенсорсыз жарық: 7 қадам (суреттермен)
Бейне: Басқа тышты деген осы 😡 2024, Желтоқсан
Anonim
Сенсорлы емес интерактивті жарық
Сенсорлы емес интерактивті жарық

Бәріне сәлем! Мен осы жерде жұмыс жасаған жобамен бөліскім келеді. Мен өз университетімдегі жоба арқылы сыйымдылықты сенсорлы түрде тәжірибе жасауға шабыттандым. Мен бұл технология туралы нұсқаулықтар арқылы білдім және қызықты және ашық түстерді жасау үшін әр түрлі RGB мәндерін араластыру үшін қолданатын сенсорлық контроллерді құру үшін осы жерден және интернеттің басқа жерлерінен білгендерімді қолдандым.

Бастапқыда мен бұл жобаны бастаған кезде мен электроника туралы да, сыйымдылықты сенсорлық сезім туралы да білмедім.

Мен бұрын жүгірген кейбір мәселелер шын мәнінде не болып жатқанын түсінбеуден туындады. Мен оны қалай түсінетінім туралы қысқаша кіріспе:

Сыйымдылық сенсоры бірнеше компоненттерді пайдаланады, негізінен:

Конденсатор (бұл жобада біз алюминий фольга қолданамыз, бірақ оны өткізгіш сұйықтықтарды қолдануға да болады), сымдар (әрине, оның электроникасы)

және резистор, 10 МОм -дан аз нәрсе - тікелей жанасудан гөрі тым кішкентай кедергі.

жұмыс әдісі - А нүктесі мен В нүктесі арасындағы уақыт айырмашылығын өлшеу. Бастапқы түйреуіштен ол соңғы түйреуішке сигнал жібереді, оған кететін уақыт таймермен өлшенеді. Қарсылық мәнін төмендету арқылы (конденсаторды (бұл жағдайда сіздің қолыңызбен) сенсор конденсаторына (алюминий фольга) жақындату арқылы бұл уақыт қысқарады, уақыт айырмашылығы сенсор мән ретінде қайтарады.

Датчик сыйымдылық беттерге әсер ететіндіктен, кедергілер әсерінен деректер өте тұрақсыз болуы мүмкін. Мұны көп жағдайда конденсаторды дұрыс оқшаулау арқылы, сонымен қатар жерге қосу арқылы шешуге болады (мен мұны кейінірек көрсетемін).

Енді бұл бізге қажет заттарды түгендеуді бастауға болмайды.

1 -қадам: бізге не қажет?

Электроника:

1. 2 x 22M Ohm + резисторлары (қарсылық мәні неғұрлым үлкен болса, сенсор сенсорға соғұрлым алыс жауап береді, мен жеке 22M Ом қолдандым, мен қолданатын деректерді алу үшін ең төменгісі 10M Ом болды)

2. 3x 330 Ом резисторлары

3. Сымдар

4. Нан тақтасы

5. Электр тізбегі (шахтаның континуасы бар мыс жолақтары бар)

6. Бірнеше жалпы катодты RGB шамдары (мен 8 -ді қолдандым, бірақ сізде жарықтың көп болуына байланысты азды -көпті болуы мүмкін)

7. Алюминий фольга

8. Қаптама

9. Ардуино Уно

10. Таспа

Іс:

1. Ағаш Мен 50 x 50 x 1,8 см МДФ қолдандым (сіз шынымен де кез келген нәрсені қолдана аласыз. Бұл сізге қажет әсерге және сіздің қолыңыздағы құралдарға байланысты)

2. Мен 50 х 50 х 0,3 см акрил плексигласын (немесе кез келген басқа мөлдір/мөлдір материалды, күріш қағазы сияқты) қолдандым.

3. Қағаз (жұқа зімпара)

4. Ағаш желім

5. вейнер (міндетті емес)

6. Акрил желімі

Құралдар:

Сымды тазартқыш

Дәнекерлейтін темір + қалайы

Стэнли пышағы

бұрғылау

Көрдім (мен үстелдің арасын қолдандым)

2 -қадам: прототиптеу:

Прототиптеу
Прототиптеу
Прототиптеу
Прототиптеу

Енді бізде бәрі бар және біз оның қалай жұмыс істейтінін білу үшін прототип жасай бастаймыз:

Дайындық жұмысы:

Алюминий фольгадан 4 тіктөртбұрышты кесіңіз (шахталар шамамен 10 см -ден 5 см -ге дейін), оларды тікелей жанасудан оқшаулау үшін пленкамен орап, алюминий фольгаға сым жабыстырыңыз. Мен фольгаға жалаңаш ұшын жапсырдым (олар байланыста болғанша).

Алюминийдің оқшауланғанына сенімді болу үшін мен оны қағазға орап, қағаздың арасына үтіктеп қойдым (ол бірнеше секундқа еріп кетпес үшін).

Содан кейін суретте көрсетілгендей тізбекті орнатыңыз.

4 түйреуіш екі сенсор үшін жіберуші түйреуіш ретінде пайдаланылады, ал түйреуіштер 2 және 5 түйреуіштер. Сіз бірнеше жіберуші түйреуіштерді қолдана аласыз, бірақ олар синхрондалмағандықтан қиындық тудырады.

Барлығын дәнекерлемес бұрын, бұл баптауды шынымен де ойдағыдай жұмыс істейтініне көз жеткізу үшін отладтау мақсатында қолданыңыз.

3 -қадам: код:

Енді бізде бәрі бар және сенсорларды жөндеуді бастауға болады.

Менің кодты пайдалану үшін сыйымдылықты сезу кітапханасын Arduino -дан жүктеп алып, оны анықтама бетінде берілген нұсқауларға сәйкес орнату керек: Мені басыңыз

Код: (Мен кодтауды жақсы білмеймін, егер сіз оны қалай жасау керектігін білсеңіз, өтінемін)

#include // код кітапханасын импорттаңыз

CapacitiveSensor cs_4_2 = CapacitiveSensor (4, 2); // Жіберуші түйін = 4, қабылдау - 2 және 5 CapacitiveSensor cs_4_5 = CapacitiveSensor (4, 5); const int redPin = 11; const int greenPin = 10; const int bluePin = 9; const int numIndexR = 10; // массив өлшемі const int numIndexG = 10; int colorR = 0; int colorG = 0; өзгермелі түс B = 0; int indexR [numIndexR]; int posIndexR = 0; ұзақ жиынтықR = 0; // бұл ұзақ болуы керек, себебі менің массивімнің жалпы саны бүтін сан үшін үлкен болды. int орташаR = 0; int indexG [numIndexG]; int posIndexG = 0; ұзын жалпы G = 0; int орташа G = 0; void setup () {pinMode (redPin, OUTPUT); pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT); for (int thisIndexR = 0; thisIndexR <numIndexR; thisIndexR ++) {// массивті 0 indexR [thisIndexR] = 0; } үшін (int thisIndexG = 0; thisIndexG = 4500) {// сенсордың мәндерін қолдануға болатын максимумға дейін шектеңіз, бұл әр резистордың мәні үшін бірдей емес, сонымен қатар ортадан ортаға дейін сәл өзгеше болуы мүмкін. сіздің жеке қажеттіліктеріңіз. барлығы1 = 4500; } if (total2> = 4500) {total2 = 4500; } totalR = totalR - indexR [posIndexR]; // бұл жерде сенсор шығысын үздіксіз қосатын және орташа мәнді шығаратын массив жасалады. indexR [posIndexR] = барлығы1; totalR = totalR + indexR [posIndexR]; posIndexR = posIndexR + 1; егер (posIndexR> = numIndexR) {posIndexR = 0; } орташаR = totalR / numIndexR; // біз шығысты тегістеу үшін шикі деректердің орнына орташа мәнді қолданамыз, ол процесті біршама баяулатады, бірақ сонымен бірге өте жақсы тегіс ағын жасайды. totalG = totalG - indexG [posIndexG]; indexG [posIndexG] = барлығы2; totalG = totalG + indexG [posIndexG]; posIndexG = posIndexG + 1; егер (posIndexG> = numIndexG) {posIndexG = 0; } орташаG = жалпыG / numIndexG; if (averageR> = 2000) {// біз сіздің қолыңыздан кірмейінше, LED -тердің мәнді үнемі өзгертіп отыруын қаламаймыз, сондықтан бұл барлық төменгі экологиялық көрсеткіштер ескерілмейтініне көз жеткізеді. colorR = карта (орташаR, 1000, 4500, 255, 0); analogWrite (redPin, colorR); } else if (орташаR = 1000) {colorG = карта (орташаG, 1000, 4500, 255, 0); analogWrite (greenPin, colorG); } else if (орташаG <= 1000) {colorG = 255; analogWrite (greenPin, colorG); } if (colorR <= 125 && colorG <= 125) {// B сәл өзгеше жұмыс істейді, себебі мен тек 2 сенсорды қолдандым, сондықтан мен сенсордың екеуін де B B картасына түсірдім colorB = map (colorR, 255, 125, 0, 127.5) + карта (colorG, 255, 125, 0, 127,5); analogWrite (bluePin, colorB); } else {colorB = map (colorR, 255, 125, 127.5, 0) + map (colorG, 255, 125, 127.5, 0); if (colorB> = 255) {colorB = 255; } if (colorB <= 0) {colorB = 0; } analogWrite (bluePin, colorB); } Serial.print (millis () - бастау); // бұл жөндеуге арналған Serial.print («\ t»); Serial.print (colorR); Serial.print («\ t»); Serial.print (colorG); Serial.print («\ t»); Serial.println (colorB); кешіктіру (1); }

Бұл код сенсордан шикі деректерді алу болып табылады (бұл деректер сенсорға әсер ететін әр түрлі факторларға байланысты әрқашан біршама тұрақсыз болады) және массив максималды мәнге жеткенде шикізатты үздіксіз массивке қояды (менің жағдайда 10) ол соңғы мәнді тазартады және жаңасын қосады. Мән қосылған сайын ол орташа мәнді есептеп, оны жаңа айнымалыға қояды. Бұл орташа айнымалы мәнді 0 -ден 255 -ке дейінгі мәнге салыстыру үшін қолданылады, бұл әр арнаның жарықтығын жоғарылату үшін RGB түйреуіштеріне жазатын мәніміз (арналар R G және B).

Енді сіз кодты arduino -ға жүктесеңіз және сериялық мониторды ашсаңыз, қолды әр сенсорға апарғанда RGB мәндері төмен болады, сонымен қатар жарықдиодты жарық түсі өзгеруі керек.

4 -қадам: Енді іс үшін:

Енді іс бойынша
Енді іс бойынша
Енді іс бойынша
Енді іс бойынша
Енді іс бойынша
Енді іс бойынша

Іс: Мен бұл мәселені өз университетімде бар құралдарды қолдана отырып жасадым, сондықтан бұл жұмыс процесі барлығына бірдей қолданыла бермейді. Бірақ бұл жерде ерекше ештеңе жоқ, оған USB портына кіру үшін бір жағынан тесік қажет, бірақ басқасынан басқа, ол тек үсті ашық қорап.

Өлшемдері келесідей:

Мөлдір үстіңгі жағы үшін 15 x 15 см

және

Ағаш негіз үшін 15 x 8 см (ағаштың қалыңдығы мен үшін 1,8 см болды).

Мен MDF тақтасын қажетті өлшемдерге кесу үшін үстелдің арасын қолдандым (ол 4 x 15 x 8 CM және 1 15 x 15 CM жер тақтасы), содан кейін бұрыштарды 45 градус бұрышқа қиып алдым. Барлық бөлшектерді ағаш желім мен қысқыштармен жабыстырдым (оны кем дегенде 30 минут құрғатыңыз), мен плексигласқа арналған процедураны қолдандым, бірақ арнайы арамен.

Ағаш жақтардың 1 -інің ортасында arduino USB ашасының биіктігінде саңылау болуы керек, бұл ардуиноны қосуға мүмкіндік береді.

Мен негізді шпонмен аяқтадым. Мен оны әр жақтың бетінен сәл үлкенірек етіп кесіп алдым.

Мен оны желіммен жаптым, содан кейін оны әр жағына 30 минут қыстырдым (мұны жеке орындаған жөн, ол сырғып кетпейтініне көз жеткізіңіз, содан кейін кептірілгеннен кейін мен қалған нәрсені кесіп тастадым.

Мен Acryfix деп аталатын арнайы Acryl желімін қолданып жапсырдым.

Есіңізде болсын, егер сіз акрил плексиглас қолдансаңыз, желім плексиглазды аздап ерітеді, сондықтан мүмкіндігінше дәл және жылдам болыңыз (ол бірнеше минут ішінде кебеді, бірақ бірнеше секунд ішінде ауаға шығады).

Қақпақты аяқтау үшін мен текшені құм шашатын машинамен мұздатып қойдым, бірақ сіз жұқа зімпараны қолдануға болады, оны біркелкі ету үшін көп уақыт қажет. Есіңізде болсын, егер сіз зығыр қағазды қолдансаңыз, оны ұсақ түйіршікті етіп, сондай -ақ аяздан кейін бөлшектерді желімдеу керек (сондықтан сіз оны қатты қысыммен кездейсоқ сындырмайсыз)

Қақпақ қатты сырғып кетпейтініне көз жеткізу үшін мен ағаш текшенің шетіне бірнеше кішкене ағаш штангаларды жапсырдым.

5 -қадам: Нәтиже келесідей болуы керек:

Нәтиже келесідей болуы керек
Нәтиже келесідей болуы керек

6 -қадам: Дәнекерлеу

Дәнекерлеу!
Дәнекерлеу!
Дәнекерлеу!
Дәнекерлеу!

Егер сізде тақта болса, сіз барлық бөліктерді дәнекерлеуді нан тақтасында орнатылған схеманы қолдана отырып бастай аласыз.

Менің тізбек тақтасында қолдануға ыңғайлы болу үшін үздіксіз мыс жолақтар бар.

Әр сенсор үшін мен резисторлар мен сымдарды дәнекерлеу үшін кішкене квадратты кесіп алдым.

Жіберуші сымдар (4 -істікшеден әр сенсорға өтетін сымдар) 4 квадратқа кіретін 1 сыммен бөлек квадратқа дәнекерленген.

Мен импровизацияланған жарықдиодты жасау үшін ұзын төртбұрыш сақтадым (оны қақпақтың ішіне, бірақ негіздің шетіне сәйкес келетін етіп өлшеңіз). Сіз шамдарды бір -бірінен кейін дәйекті түрде дәнекерлей аласыз (есіңізде болсын, мен таспаның дұрыс емес жағындағы светодиодтар мен резисторларды кездейсоқ дәнекерледім, мыс жолақтар әрқашан астыңғы жағында болуы керек).

Жеке бөлшектерді дәнекерлеуді аяқтағаннан кейін, оларды корпусқа салыңыз. Мен жеке сымдарды дәнекерлемедім, сондықтан қажет болған жағдайда ауыстыруға болады.

Бәрін базаға сыйғызатын уақыт: бұл ең қарапайым қадам, arduino алдымен корпустың артқы жағындағы тесік арқылы USB порты арқылы орналасуы керек. Енді датчиктерді қосыңыз, сенсор фольгасы екі жағынан ағашқа сәйкес келетініне көз жеткізіңіз, ал жерге фольга тура қарама -қарсы қойылады. Егер бәрі жақсы сәйкес келсе, RGB светодиодтарын оң жақ түйреуіштерге (9, 10, 11) жалғап, оны негіздің шеттеріне сүйенуге рұқсат етіңіз.

7 -қадам: Біз дайынбыз

Егер сіз мұны істеген болсаңыз, енді сенсорлық түстердің сыйымдылығы бар жұмыс шамы болуы керек. Масайрау!

Ұсынылған: