Სარჩევი:

შეხების გარეშე ინტერაქტიული შუქი: 7 ნაბიჯი (სურათებით)
შეხების გარეშე ინტერაქტიული შუქი: 7 ნაბიჯი (სურათებით)

ვიდეო: შეხების გარეშე ინტერაქტიული შუქი: 7 ნაბიჯი (სურათებით)

ვიდეო: შეხების გარეშე ინტერაქტიული შუქი: 7 ნაბიჯი (სურათებით)
ვიდეო: ეკჰარტ ტოლე - "აწმყოს ძალა" - აუდიო წიგნი - Audible Read Along 2024, ივლისი
Anonim
ინტერაქტიული შეხებადი შუქი
ინტერაქტიული შეხებადი შუქი

Გამარჯობა ყველას! მინდა გაგიზიაროთ პროექტი, რომელზეც აქ ვმუშაობდი. მე მივიღე შთაგონება ექსპერიმენტისთვის capacitive touch sensing პროექტის საშუალებით ჩემს უნივერსიტეტში. მე გავეცანი ამ ტექნოლოგიას ინსტრუქციის საშუალებით და გამოვიყენე ის, რაც ვისწავლე აქ და სხვაგან ინტერნეტში, რომ შემექმნა საკუთარი შეხების გარეშე კონტროლერი, რომელსაც ვიყენებ სხვადასხვა RGB მნიშვნელობების შესაერთებლად, საინტერესო მსუბუქი ფერების შესაქმნელად.

დამწყებთათვის, როდესაც დავიწყე ეს პროექტი, მე თითქმის არაფერი ვიცოდი არც ელექტრონიკის შესახებ და არც შეხების შეგრძნების მოცულობის შესახებ.

ზოგიერთი პრობლემა, რაზეც ადრე შევედი, გამოწვეული იყო რეალურად მომხდარი გაუგებრობით. ასე რომ, მოკლე შესავალი, თუ როგორ მესმის ეს:

Capacitive სენსორი იყენებს მრავალ კომპონენტს, ძირითადად:

კონდენსატორი (ამ პროექტში ჩვენ ვიყენებთ ალუმინის კილიტა, მაგრამ ასევე შესაძლებელია გამტარ სითხეების გამოყენება და ა.შ.), მავთულები (რა თქმა უნდა, მისი ელექტრონიკა)

და რეზისტორი, 10 მოჰმ -ზე ნაკლები რამ არის ძალიან მცირე წინააღმდეგობა, ვიდრე პირდაპირი შეხება.

ის მუშაობს A და B წერტილებს შორის დროის სხვაობის გაზომვით, საწყისი პინიდან იგი აგზავნის სიგნალს ბოლოში, დრო კი იზომება ტაიმერით. წინააღმდეგობის მნიშვნელობის შემცირებით (კონდენსატორის (ამ შემთხვევაში თქვენი ხელის) გადაადგილებით სენსორის კონდენსატორთან (ალუმინის კილიტა) ამჯერად მცირდება, დროში განსხვავება არის ის, რასაც სენსორი დაუბრუნებს მნიშვნელობას.

იმის გამო, რომ სენსორი გავლენას ახდენს მოცულობითი ზედაპირებით, მონაცემები შეიძლება იყოს უხეშად არასტაბილური ჩარევის გამო. ეს შეიძლება მოგვარდეს დიდწილად კონდენსატორის სწორად იზოლაციით და ასევე გრუნტის გამოყენებით (მე მოგვიანებით ვაჩვენებ, თუ როგორ).

ასე რომ, ეს უკვე გზაზე არ არის, ჩვენ შეგვიძლია დავიწყოთ ინვენტარიზაცია ყველა საჭირო ნივთით:

ნაბიჯი 1: რა გვჭირდება?

ელექტრონიკა:

1. 2 x 22M Ohm + რეზისტორები (რაც უფრო დიდია წინააღმდეგობის მნიშვნელობა მით უფრო შორს რეაგირებს თქვენი სენსორი, მე პირადად გამოვიყენე 22M Ohm, მინიმალური გამოსაყენებელი მონაცემების მისაღებად განვიცადე იყო 10M Ohm)

2. 3x330 Ohm რეზისტორები

3. მავთულები

4. პურის დაფა

5. მიკროსქემის დაფა (ჩემში იყო კონტინუოს სპილენძის ზოლები)

6. მრავალჯერადი საერთო კათოდური RGB Leds (მე გამოვიყენე 8, მაგრამ თქვენ შეიძლება მეტნაკლებად იყოს დამოკიდებული იმაზე, თუ რამდენი სინათლე გსურთ)

7. ალუმინის კილიტა

8. შესაკრავი შეფუთვა

9.არდიინო უნო

10. ფირზე

Იმ შემთხვევაში:

1. ხე მე გამოვიყენე 50 x 50 x 1.8 CM MDF (თქვენ შეგიძლიათ გამოიყენოთ ყველაფერი ნამდვილად. ეს დამოკიდებულია თქვენს ეფექტზე და თქვენს ხელთ არსებულ ინსტრუმენტებზე)

2. აკრილის პლექსიგლასი მე გამოვიყენე 50 x 50 x 0.3 სმ (ან ნებისმიერი სხვა გამჭვირვალე/გამჭვირვალე მასალა, როგორიცაა ბრინჯის ქაღალდი)

3. ქაღალდი (ჯარიმა ქვიშა)

4. ხის წებო

5. veneer (სურვილისამებრ)

6. აკრილის წებო

ინსტრუმენტები:

მავთულის სტრიპტიზიორი

შედუღების რკინა + თუნუქის

სტენლის დანა

საბურღი

დაინახა (მე მაგიდის ხერხი გამოვიყენე)

ნაბიჯი 2: პროტოტიპი:

პროტოტიპი
პროტოტიპი
პროტოტიპი
პროტოტიპი

ახლა ჩვენ გვაქვს ყველაფერი და შეგვიძლია დავიწყოთ პროტოტიპის შექმნა, რომ ნახოთ როგორ მუშაობს:

მოსამზადებელი სამუშაოები:

ამოიღეთ 4 ოთხკუთხედი ალუმინის კილიტადან (ჩემი არის დაახლოებით 10 სმ 5 სმ), გადაიტანეთ ისინი შესაფუთი გადასაფარებლით, რათა იზოლირდეს ისინი პირდაპირი შეხებისგან და მიამაგრეთ მავთული ალუმინის კილიტაზე. მე უბრალოდ ჩამწერე გაშიშვლებული ბოლო კილიტაზე (სანამ ისინი კონტაქტში დარჩებიან).

იმისათვის, რომ დავრწმუნდე, რომ ალუმინი უსაფრთხოდ არის იზოლირებული, შემოვიხვიე შესაფუთი შეფუთვით და დავაუთოე იგი ქაღალდებს შორის (სულ რამდენიმე წამი ისე, რომ მთლიანად არ დნება).

შემდეგ დააყენეთ სქემა, როგორც ჩანს სურათზე.

პინ 4 გამოიყენება როგორც სენსორის გაგზავნის პინი, ხოლო მიმღები არის პინ 2 და 5. თქვენ შეგიძლიათ გამოიყენოთ მრავალჯერადი გაგზავნის ქინძისთავები, მაგრამ ეს იწვევს უბედურებას, რადგან ისინი სრულყოფილად არ არიან სინქრონიზებული.

გამოიყენეთ ეს კონფიგურაცია გამართვის მიზნით, სანამ ყველაფერს ერთად შეაერთებთ, რათა დარწმუნდეთ, რომ ყველაფერი ნამდვილად ისე მუშაობს, როგორც განზრახული იყო.

ნაბიჯი 3: კოდი:

ახლა ჩვენ გვაქვს ყველაფერი და შეგვიძლია დავიწყოთ სენსორების გამართვა.

ჩემი კოდის გამოსაყენებლად თქვენ უნდა გადმოწეროთ Arduino– ს capacitive sensing biblioteke და დააინსტალიროთ საცნობარო გვერდის მითითებების შესაბამისად: დააწკაპუნეთ ჩემზე

კოდი: (მე არ ვარ დიდი კოდირებაში, ასე რომ, თუ იცით როგორ გააკეთოთ ეს უკეთესად, გთხოვთ)

#მოიცავს // შეიყვანეთ კოდის ბიბლიოთეკა

CapacitiveSensor cs_4_2 = CapacitiveSensor (4, 2); // გაგზავნეთ pin = 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 ფერი R = 0; int ფერი G = 0; float ფერი 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; } for (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 = totalG / numIndexG; თუ (საშუალო R> = 2000) {// ჩვენ არ გვინდა, რომ led– ები მუდმივად ცვლის მნიშვნელობას, თუ თქვენი ხელიდან არ არის შეტანილი, ასე რომ ეს დარწმუნდება, რომ გარემოს ყველა დაბალი მაჩვენებელი არ იქნება გათვალისწინებული. ფერი R = რუკა (საშუალო რ, 1000, 4500, 255, 0); analogWrite (redPin, colorR); } else if (averageR = 1000) {colorG = რუკა (საშუალო G, 1000, 4500, 255, 0); analogWrite (greenPin, colorG); } სხვა თუ (საშუალო G <= 1000) {ფერი G = 255; analogWrite (greenPin, colorG); } if (colorR <= 125 && colorG <= 125) {// B მუშაობს ცოტა სხვაგვარად, რადგან მე მხოლოდ 2 სენსორი გამოვიყენე, ამიტომ B ორივე რუკაზე სანიშნეს ფერი B = რუკა (ფერი R, 255, 125, 0, 127.5) + რუკა (ფერი G, 255, 125, 0, 127.5); analogWrite (bluePin, colorB); } else {colorB = რუკა (colorR, 255, 125, 127.5, 0) + რუკა (ფერი G, 255, 125, 127.5, 0); if (ფერი B> = 255) {ფერი B = 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 (ფერი B); დაგვიანება (1); }

რას აკეთებს ეს კოდი არის სენსორიდან ნედლი მონაცემების ამოღება (ეს მონაცემები ყოველთვის ოდნავ არასტაბილური იქნება ყველა განსხვავებული ფაქტორის გამო, რომლებიც გავლენას ახდენენ სენსორზე) და ის უწყვეტ მონაცემებს ათავსებს მასივში, როდესაც მასივი აღწევს მაქსიმალურ მნიშვნელობას (ჩემს შემთხვევაში 10) ის ასუფთავებს ბოლო მნიშვნელობას და ამატებს ახალს. ყოველ ჯერზე ღირებულების დამატებისას ის ითვლის საშუალო მნიშვნელობას და ათავსებს მას ახალ ცვლადში. ეს საშუალო ცვლადი გამოიყენება მნიშვნელობის 0 -დან 255 -მდე მნიშვნელობის დასადგენად, ეს არის მნიშვნელობა, რომელსაც ჩვენ ვწერთ RGB ქინძისთავებს თითოეული არხის სიკაშკაშის გასაზრდელად (არხები არის R G და B).

თუ თქვენ ატვირთავთ თქვენს კოდს arduino– ზე და გახსნით სერიულ მონიტორს, თქვენ უნდა შეამჩნიოთ RGB მნიშვნელობები უფრო დაბლა, როდესაც თითოეულ სენსორზე ხელს დაკიდებთ, ასევე უნდა შეიცვალოს led– ის მსუბუქი ფერი.

ნაბიჯი 4: ახლა საქმეზე:

ახლა საქმეზე
ახლა საქმეზე
ახლა საქმეზე
ახლა საქმეზე
ახლა საქმეზე
ახლა საქმეზე

საქმე: მე შევქმენი საქმე ჩემი უნივერსიტეტის საშუალებით არსებული ინსტრუმენტების გამოყენებით, ამიტომ ეს სამუშაო ნაკადი არ არის ყველასთვის. თუმცა ამაში განსაკუთრებული არაფერია, მას სჭირდება ერთ მხარეს ხვრელი, რათა USB პორტი მოთავსდეს, მაგრამ გარდა ამისა, ეს არის მხოლოდ ღია ყუთი.

ზომები შემდეგია:

15 x 15 სმ გამჭვირვალე საფარისთვის

და

15 x 8 სმ ხის ფუძისთვის (ხის სისქე ჩემთვის იყო 1.8 სმ).

მე მაგიდის ხერხი გამოვიყენე MDF- ის ფირფიტა საჭირო ზომებში (რომელიც არის 4 პანელი 15 x 8 CM და 1 15 x 15 CM დაფის პანელი), რის შემდეგაც კუთხეები 45 გრადუსიანი კუთხით გავჭრა. ყველა ის ნაწილი, რაც ხის წებოს და დამჭერების გამოყენებით დავამაგრე (გავაჩერო მინიმუმ 30 წუთი), მე იგივე პროცედურა გამოვიყენე პლექსიგლასისთვის, მაგრამ სპეციალური ხერხით.

1 ხის მხარეს 1 უნდა ჰქონდეს ხვრელი ცენტრში arduino USB დანამატის სიმაღლეზე, რათა არდუინო იყოს ჩართული.

დავასრულე საფუძველი ვინირით. მე დავჭრა ის ნაწილებად ოდნავ უფრო დიდი ვიდრე თითოეული მხარის ზედაპირზე.

ეს მე დავამატე მასზე, შემდეგ დავახურე 30 წუთი თითოეული მხარისთვის (უმჯობესია ამის გაკეთება ინდივიდუალურად, ასე რომ თქვენ დარწმუნდებით, რომ ის არ სრიალებს და გაშრობის შემდეგ მე შეწყვიტე ყველაფერი, რაც გამოჩნდა.

ქუდი, რომელიც მე შევიკარი აკრილისთვის სპეციფიკური წებოს გამოყენებით, სახელად Acryfix.

იცოდეთ, რომ თუ თქვენ იყენებთ აკრილის პლექსიგლასს, წებო პლექსიგლასს ოდნავ ხსნის, ასე რომ იყავით რაც შეიძლება ზუსტი და სწრაფი (ის მშრალდება რამოდენიმე წუთში, მაგრამ ჰაერში ეცემა წამებში).

თავსახურის დასამთავრებლად მე კუბი გავყინე ქვიშაქვით, მაგრამ თქვენ ასევე შეგიძლიათ გამოიყენოთ წვრილი ქვიშა, უბრალოდ გაცილებით მეტი დრო სჭირდება მის გარეგნობას. ყურადღება მიაქციეთ, თუ თქვენ იყენებთ ქვიშაქვას, ის უნდა იყოს წვრილმარცვლოვანი და ასევე წებოთი ნაწილები ერთმანეთთან ერთად ყინვის პროცედურის შემდეგ (ასე რომ თქვენ არ გატეხავთ მას შემთხვევით დიდი წნევის გამოყენებით)

იმის უზრუნველსაყოფად, რომ თავსახური დიდად არ სრიალებს, ხის პატარა კუბის კიდეებზე რამდენიმე პატარა ხის ბარი დავაწებე.

ნაბიჯი 5: საბოლოო შედეგი უნდა გამოიყურებოდეს ასე:

საბოლოო შედეგი უნდა გამოიყურებოდეს ასე
საბოლოო შედეგი უნდა გამოიყურებოდეს ასე

ნაბიჯი 6: შედუღება

შედუღება!
შედუღება!
შედუღება!
შედუღება!

თუ თქვენ გაქვთ მიკროსქემის დაფა, შეგიძლიათ დაიწყოთ ყველა ნაწილის ერთმანეთთან შედუღება იმავე კონფიგურაციით, რომელიც თქვენს პურის დაფას აქვს.

ჩემს მიკროსქემს აქვს უწყვეტი სპილენძის ზოლები გამოყენების მარტივად.

თითოეული სენსორისთვის მე ვჭრი პატარა კვადრატს რეზისტორებისა და მავთულის დასაკავშირებლად.

გაგზავნის მავთულები (მავთულები, რომლებიც მიდიან 4 პინიდან თითოეულ სენსორზე) თანმიმდევრობით იკვრება ცალკეულ კვადრატზე, 1 მავთულით, რომელიც გადადის პინ 4 -ში.

მე ვიცავდი გრძელ მართკუთხედს, რათა გამეკეთებინა იმპროვიზირებული led ზოლები (გავზომოთ ისე, რომ მოთავსდეს თავსახურის შიგნით, მაგრამ ფუძის კიდეებზე). თქვენ შეგიძლიათ უბრალოდ ჩასვათ led– ები ერთმანეთის მიყოლებით (გაითვალისწინეთ, რომ სურათზე მე შემთხვევით შევაერთე led და რეზისტორები მიკროსქემის არასწორ მხარეს, სპილენძის ზოლები ყოველთვის ქვედა მხარეს უნდა იყოს).

როდესაც დაასრულებთ ცალკეული ნაწილების შედუღებას, მოათავსეთ ისინი ქეისში. მე არ შევაერთე ჩემი ინდივიდუალური მავთულები ერთად, ასე რომ საჭიროების შემთხვევაში შემიძლია მათი ადვილად შეცვლა.

დროა ყველაფერი მოვათავსოთ ბაზაში: ეს საკმაოდ მარტივი ნაბიჯია, არდუინო უნდა განთავსდეს პირველ რიგში USB პორტით, ხვრელის უკანა ნაწილში. ახლა დაამატეთ სენსორები, დარწმუნდით, რომ სენსორული კილიტა ხის ორივე მხარეს ჯდება, დაფარული კილიტა პირდაპირ მის წინააღმდეგ. როდესაც ყველაფერი კარგად ჯდება, შეაერთეთ RGB ველები მარჯვენა ქინძისთავებში (9, 10, 11) და დატოვეთ იგი ბაზის კიდეებზე.

ნაბიჯი 7: ჩვენ დავასრულეთ

თუ თქვენ გაჰყევით ამ ყველაფერს, თქვენ ახლა უნდა გქონდეთ სამუშაო შუქი კაპიტალური შეხების ფერის შერწყმით. Გაერთე!

გირჩევთ: