Სარჩევი:

Arduino გიტარა ჯეკ გასაღების მფლობელი ჯეკ აღიარებით და OLED: 7 ნაბიჯი
Arduino გიტარა ჯეკ გასაღების მფლობელი ჯეკ აღიარებით და OLED: 7 ნაბიჯი

ვიდეო: Arduino გიტარა ჯეკ გასაღების მფლობელი ჯეკ აღიარებით და OLED: 7 ნაბიჯი

ვიდეო: Arduino გიტარა ჯეკ გასაღების მფლობელი ჯეკ აღიარებით და OLED: 7 ნაბიჯი
ვიდეო: Arduino Project- My Guitar Teacher 2024, ივლისი
Anonim
Image
Image
Arduino გიტარა ჯეკ გასაღების მფლობელი ჯეკ აღიარებით და OLED
Arduino გიტარა ჯეკ გასაღების მფლობელი ჯეკ აღიარებით და OLED

შესავალი:

ეს ინსტრუქცია დეტალურად აღწერს ჩემი არდუინოზე დაფუძნებული გიტარა ჯეკ მოდულის გასაღების მფლობელს

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

ნაბიჯი 1: ნაწილები და ინსტრუმენტები

ნაწილები და ინსტრუმენტები
ნაწილები და ინსტრუმენტები
ნაწილები და ინსტრუმენტები
ნაწილები და ინსტრუმენტები
ნაწილები და ინსტრუმენტები
ნაწილები და ინსტრუმენტები

იმ ნაწილების უმეტესობა, რაც მე შევიძინე Amazon.co.uk– დან ან eBay– დან, ზოგი მე უკვე დავარტყი გარშემო - აქ არის ჩამონათვალი იმისა, რაც დაგჭირდებათ.

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

მინდოდა შეენარჩუნებინა ეს შენობა საკმაოდ დაბალბიუჯეტიანი და ბიუჯეტური. თქვენ შეგიძლიათ გამოიყენოთ უფრო დიდი TFT ეკრანი, როგორც გსურთ, ასევე განსხვავებული არდუინო. არ გამოიყენოთ NANO, რადგან ის დაიშლება მეხსიერების მაღალი გამოყენების გამო. კოდი იყენებს Pro Micro ოპერატიული მეხსიერების დაახლოებით 72% -ს და სტაბილურია, მაგრამ ტესტირებისას NANO დაიშლება და იყინება.

(უფრო დეტალურად კოდი ნაბიჯში.)

ნაწილები

1x Arduino Pro Micro -

1x 0.96 OLED ყვითელი და ლურჯი ჩვენებით -

4x WS2812 "პიქსელი" -

1x DS3231 RTC -

4x 1/4 მონო ჯეკი (ან რამდენიც გინდათ) - ამაზონი (ოქრო) ან ამაზონი (ვერცხლი) ან eBay.co.uk

1x შერეული რეზისტორული პაკეტი -

4x 1/4 გიტარის ჯეკები -

1x მიკრო USB კაბელის გაფართოების კაბელი -

4x M3 ხრახნები

ინსტრუმენტები და მასალები

- შედუღების რკინა (ეს არის ის, რაც მე შევიძინე - TS100 - როგორც ამას მოყვა დამატებითი რჩევები

- ჯარისკაცი

- ცხელი წებოს იარაღი (https://amzn.to/2UTd9PN)

- მავთული (https://amzn.to/2VK2ILU)

- მავთულის საჭრელი/სტრიპტიზატორები (https://amzn.to/2KzqUzp)

- 3D პრინტერის ან 3D ბეჭდვის სერვისი

სურვილისამებრ - ეს ელემენტები არჩევითია, ეს დამოკიდებულია იმაზე, თუ როგორ აირჩევთ ყველაფრის დაკავშირებას

- Veroboard/Stripboard (https://amzn.to/2KzMFPE)

- ხრახნიანი ტერმინალური კონექტორები (2 პოლუსი | 3 პოლუსი | 4 პოლუსი)

- PCB სათაურები (https://amzn.to/2X7RjWf)

ნაბიჯი 2: საქმის 3D ბეჭდვა

საქმის 3D ბეჭდვა
საქმის 3D ბეჭდვა
საქმის 3D ბეჭდვა
საქმის 3D ბეჭდვა
საქმის 3D ბეჭდვა
საქმის 3D ბეჭდვა
საქმის 3D ბეჭდვა
საქმის 3D ბეჭდვა

მე დავბეჭდე ჩემი Creality CR-10S, შავი PLA+-ის გამოყენებით (https://amzn.to/2X2SDtE)

მე დავბეჭდე 0,2 ფენის სიმაღლეზე, 25% შევსებით.

ნაბიჯი 3: ყველაფერი ერთად + სქემატური

ეს ყველაფერი ერთად + სქემატური
ეს ყველაფერი ერთად + სქემატური
ეს ყველაფერი ერთად + სქემატური
ეს ყველაფერი ერთად + სქემატური
ეს ყველაფერი ერთად + სქემატური
ეს ყველაფერი ერთად + სქემატური
ეს ყველაფერი ერთად + სქემატური
ეს ყველაფერი ერთად + სქემატური

როგორ აირჩევთ თქვენი არდუინოს დაკავშირებას, თქვენზეა დამოკიდებული - მე პირადად ავირჩიე, ასე ვთქვათ, "ფარი" გამეხადა. ფარის გასაკეთებლად, მე გადავიტანე ქალი სათაურები veroboard– ზე, რათა შეესაბამებოდეს Pro Micro– ს, შემდეგ დავამატე სარკინიგზო +5v და GND, საპირისპირო ბოლოებში. მე გამოვიყენე ჯუმბერის მავთულები +5v- ს ჩემს ახლანდელ 5v 'სარკინიგზო ხაზთან დასაკავშირებლად და იგივე გავაკეთე GND– სთვის. შემდეგ დავამატე ჩემი 4x 100k რეზისტორები, ერთი ბოლო +5 ვ -თან ყველა მათგანისთვის, ხოლო მეორე მეორე შესაბამისად A0, A1, A2 & A3 შესაბამისად. შემდეგ დავამატე ხრახნიანი ტერმინალები ანალოგიურ ქინძისთავებს A0, A1, A2 & A3 და ასევე ქინძისთავები 2 (SDA), 3 (SCL) და 4

გაზომეთ თქვენი გაყვანილობა და გაჭერით შესაბამის სიგრძეზე. დავიწყე WS2812 Pixel LED- ები - FIRST WS2812 LED აკავშირებს +5v არდუინოდან, GND არდუინოდან, და DIN აკავშირებს პინ 4 -ს. ამის შემდეგ, დანარჩენი 3 ერთმანეთზეა მიჯაჭვული, ყველა 5v> 5v ჯაჭვით, GND> GND ქინძისთავები და DOUT ერთი Pixel– დან, უკავშირდება DIN– ს შემდეგზე. შედუღებისთანავე, ეს ნაზად დაჭერით კვადრატულ ხვრელებში ზედა ნაწილში, და ცხელი წებო ადგილზე და ასევე დაიცავით უკანა მხარე შემთხვევითი კავშირებისა და შორტებისგან.

LED- ების შემდეგ, მე გიტარის ჯეკ სოკეტები შევიკავე. თითოეულის ერთი პინი უკავშირდება GND- ს, შემდეგ კი თითოეულის მე -2 პინი შესაბამისად A0, A1, A2 & A3- ს. ეს არის სოკეტი 1, A0, სოკეტი 2 A1, სოკეტი 3 A2 და სოკეტი 4 A3.

შემდეგ მე გავამაგრე 4 მავთული OLED კავშირებზე და მაქსიმალურად დავამტვრიე ზედმეტი შედუღება. თქვენ გსურთ მიამაგროთ თქვენი მავთულები ეკრანის უკნიდან, ასე რომ თქვენ იკვებებით ეკრანის წინა მხარეს.

მიაქციეთ ყურადღება ქინძისთავებს! ზოგიერთ OLED– ს აქვს GND გარედან, შემდეგ VCC, ზოგს აქვს VCC გარედან და შემდეგ GND

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

შეაერთეთ ყველაფერი სქემატურ და სურათებთან შესატყვისად და ერთხელ გახარებული, თქვენ ასევე შეგიძლიათ ცხელი წებოთი Pro Pro Micro და RTC საათიც ადგილზე და შემდეგ დააკავშიროთ USB გაფართოება Pro Micro– სთან.

მე გამოვიყენე მიკრო USB გაფართოება ისე, რომ ა) USB შეიძლება გამოყენებულ იქნას ენერგიის უზრუნველსაყოფად, მაგრამ უფრო მეტიც, ბ) ისე, რომ საჭიროების შემთხვევაში შესაძლებელი იყოს Pro Micro– ს გადაპროგრამება ყველაფრის დაშლის გარეშე

მას შემდეგ რაც ბედნიერი იქნებით, დააკაკუნეთ საქმე 4 ხრახნის გამოყენებით

ნაბიჯი 4: დანამატები

დანამატები!
დანამატები!
სანთლები!
სანთლები!
სანთლები!
სანთლები!

ეს მუშაობს ისე, რომ ყველა მიზნისთვის, დიზაინის ნაწილი მუშაობს როგორც „ოჰმეტრი“. ომმეტრი არის ელექტრო წინააღმდეგობის გაზომვის ინსტრუმენტი. მულტიმეტრების უმეტესობას აქვს ეს ფუნქცია, რომლის საშუალებითაც თქვენ ირჩევთ სასწორს და შემდეგ გაზომავთ რეზისტორს მისი მნიშვნელობის საპოვნელად. მოქმედი პრინციპია ის, რომ თქვენ დაუკავშირდეთ K- ის რეზისტორს +ve- სთან, რომელიც შემდეგ უკავშირდება უცნობ რეზისტორს, რომელიც აკავშირებს -ve- ს. 2 რეზისტორს შორის შეერთება აკავშირებს არდუინოს ანალოგურ პინს, რომ მას შეეძლოს ძაბვის წაკითხვა და წინააღმდეგობის გამოთვლა.

ის მუშაობს ძაბვის გამყოფის მსგავსად და ითვლის უცნობი რეზისტორის წინააღმდეგობას.

როგორც R1 და R2 რეზისტორების ძაბვის გამყოფი ქსელი, Vout = Vin * R2 / (R1 + R2) - ჩვენ ვიყენებთ 100k ჩვენს ცნობილ (R1) რეზისტორს. ეს გვაძლევს "ძაბვის ვარდნას"

აქედან, ჩვენ შეგვიძლია განვსაზღვროთ უცნობი (R2) რეზისტორის წინააღმდეგობა, R2 = Vout * R1 / (Vin - Vout) - სადაც R1 არის ჩვენი 100k (100, 000 ohm) რეზისტორი

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

მე ვიყენებ 4 ჯეკ სანთელს. მე ავირჩიე გამოყენება:

ცნობილი რეზისტორი (x4) - 100k

ჯეკ დანამა 1 - 5.6 კ

ჯეკ დანამატი 2 - 10 ათასი

ჯეკ დანამა 3 - 22k

ჯეკ დანამა 4 - 39 კ

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

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

Კოდი
Კოდი

პირველ რიგში, თქვენ დაგჭირდებათ Arduino IDE, რომელიც ხელმისაწვდომია აქედან:

თქვენ ასევე უნდა დარწმუნდეთ, რომ თქვენ გაქვთ რამდენიმე არდუინოს ბიბლიოთეკა:

Adafruit NeoPixel:

u8g2:

Adafruit RTCLib:

Adafruit SleepyDog (სურვილისამებრ):

შენიშვნა სწორი არდუინოს დაფის არჩევის შესახებ. თავდაპირველად მე დავიწყე ეს პროექტი არდუინო ნანოსთან ერთად, რადგან ისინი სუპერ იაფია £ 3 £ 4 the დიდ ბრიტანეთში, ან სულ მცირე 1.50 ფუნტი თუ ყიდულობთ AliExpress– დან (მაგრამ არ გაწუხებთ 30-50 დღის ლოდინი). ნანოს პრობლემა ის არის, რომ მისი SRAM არის 2 კბ (2048 ბაიტი). ესკიზი იყენებს დინამიური მეხსიერების 1728 ბაიტს გლობალური ცვლადებით. ეს არის SRAM– ის 84%, ტოვებს მხოლოდ 320 ბაიტს თავისუფალი ცვლადებისთვის. ეს არასაკმარისი იყო და გამოიწვევდა ნანოს ჩაკეტვას და გაყინვას.

Pro Micro (ლეონარდო) აქვს 2.5K SRAM (2560 ბაიტი), რაც იმას ნიშნავს, რომ 694 ბაიტი უფასოა ადგილობრივი ცვლადებისთვის (ესკიზი იყენებს Pro Micro– ს SRAM– ის 72%). ჯერჯერობით ეს სრულიად ადეკვატური და სტაბილური აღმოჩნდა ჩემი გამოყენებისთვის. თუ თქვენ აპირებთ გამოიყენოთ მრავალი ბუდე შტეფსელი, მაშინ შეიძლება დაგჭირდეთ რაიმე SRAM- ით რაღაცის გამოყენება.

რაც შეეხება Flash მეხსიერებას, ეს ესკიზი იყენებს 30% –ის 88% (25252 ბაიტი) (ATMega328p [Nano] და ATMega32u4 [Pro Micro] ორივე 32k, მაგრამ 2k დაცულია ჩატვირთვისთვის)

მე დავწერე ასობით არდუინოს ესკიზი წლების განმავლობაში, მაგრამ მე ვარ ჰობისტი - ასე რომ გაითვალისწინეთ, რომ კოდის ზოგიერთი ნაწილი შეიძლება იყოს არაეფექტური, ან შეიძლება არსებობდეს სცენარების "ამის უკეთესი გზები". როგორც ითქვა, ის მშვენივრად მუშაობს ჩემთვის და მე კმაყოფილი ვარ. მე გამოვიყენე ბიბლიოთეკები, რომლებიც უნდა მუშაობდეს უმეტეს დაფაზე, იქნება ეს AVR (ყველაზე ძირითადი Arduino) თუ SAMD21 (მე მაქვს მუჭა Cortex M0 მოწყობილობა)

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

sandhansblog.wordpress.com/2017/04/16/interfacing-displaying-a-custom-graphic-on-an-0-96-i2c-oled/

დარწმუნდით, რომ გამოიყენოთ PROGMEM თქვენი გრაფიკისთვის. Მაგალითად:

სტატიკური const ხელმოუწერელი სიმბოლო YOUR_IMAGE_NAME PROGMEM = {}

დიზაინით, ეკრანი "ამოიწურება" 5 წამის შემდეგ და დაუბრუნდება დროის ჩვენებას.

პარამეტრების უმეტესობა შეგიძლიათ იხილოთ პარამეტრებში. H, კერძოდ, ასოცირებული ბუდეების სახელი აქ არის კოდირებული:

#განსაზღვრეთ PLUG1 "გასაღებები"

#განსაზღვრეთ PLUG2 "P2" #განსაზღვრეთ PLUG3 "P3" #განსაზღვრეთ PLUG4 "P4" #განსაზღვრეთ GENERIC "NA"

ასევე არსებობს ცვლადის რამდენიმე მნიშვნელოვანი ნაწილი Variables.h- ს შიგნით

float R1 = 96700.0;

float R2 = 96300.0; float R3 = 96500.0; float R4 = 96300.0;

ეს არის წინააღმდეგობის KNOWN ღირებულებები, ohms, თითოეული 4 რეზისტორისგან.

R1 უკავშირდება A0, R2 A1, R3 A2 და R4 A3.

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

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

float P1_MIN = 4000.0, P1_MAX = 7000.0; // 5.6K

float P2_MIN = 8000.0, P2_MAX = 12000.0; // 10K ათწილადი P3_MIN = 20000.0, P3_MAX = 24000.0; // 22K float P4_MIN = 36000.0, P4_MAX = 42000.0; // 39K

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

რა ხდება, თუ აღმოჩენილი წინააღმდეგობაა 4000 ohms- დან 7000 ohms- მდე, ჩვენ ვვარაუდობთ, რომ თქვენ გამოიყენეთ 5.6k რეზისტორი და, შესაბამისად, კოდი ამას დაინახავს, როგორც Jack Plug 1. თუ გაზომილი წინააღმდეგობაა 8000 ohms და 12000 ohms, ვარაუდობენ, რომ ეს არის 10k რეზისტორი და არის Jack Plug 2 და ასე შემდეგ.

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

//#განსაზღვრა SERIAL_DEBUG

//#განსაზღვრა WAIT_FOR_SERIAL

უკომენტაროდ, უბრალოდ ამოიღეთ //…. ხაზის უკან გამოსაქვეყნებლად, ხელახლა დაამატეთ // ხაზის წინა მხარეს.

SERIAL_DEBUG საშუალებას იძლევა სერიული გამართვა და ისეთი საგნების გამოყენება, როგორიცაა (მაგალითად)

Serial.println (F ("გამარჯობა სამყარო"));

WAIT_FOR_SERIAL არის დამატებითი ნაბიჯი, რაც იმას ნიშნავს, რომ სანამ სერიულ მონიტორს არ გახსნით, კოდი არ გაგრძელდება. ეს დაგეხმარებათ დარწმუნდეთ, რომ არ გამოგრჩეთ რაიმე მნიშვნელოვანი სერიული შეტყობინება. - არასოდეს დატოვო ეს შესაძლებელი

თუ თქვენ დატოვეთ WAIT_FOR_SERIAL ჩართული, თქვენ ვერ შეძლებთ გამოიყენოთ თქვენი გასაღების დამჭერი ნებისმიერ "რეალურ სამყაროში" გარემოში, რადგან ის დარჩება ელოდება Arduino IDE სერიულ მონიტორს სანამ ესკიზის მთავარ მარყუჟში გაგრძელდება. მას შემდეგ რაც დაასრულებთ გამართულ შეცდომებს, დარწმუნდით, რომ კვლავ დატოვეთ კომენტარი ამ ხაზზე და ხელახლა ატვირთეთ ესკიზი წარმოებისთვის/დასრულებისთვის.

SERIAL_DEBUG ვარიანტის გამოყენებისას, ჩემი კოდი შეიცავს შემდეგს:

#ifdef SERIAL_DEBUG

Serial.print (F ("ACTIVE JACK =")); Serial.println (ACTIVE_JACK); int len = ზომა (SOCKET_1234_HAS_PLUGTYPE_X)/ზომა (SOCKET_1234_HAS_PLUGTYPE_X [0]); for (int i = 0; i <len; i ++) {Serial.print (F ("SOCKET_1234_HAS_PLUGTYPE_X [")); სერიული. ბეჭდვა (i); Serial.print (F ("] =")); Serial.println (SOCKET_1234_HAS_PLUGTYPE_X ); } Serial.println (); if (INSERTED [socket]) {Serial.print (F ("Plug in socket")); Serial.print (სოკეტი+1); Serial.print (F ("აქვს რეზისტენტობა:")); Serial.println (წინააღმდეგობა); } #დაასრულე თუ

ბოლო Serial.print ხაზი გეტყვით რა წინააღმდეგობაა ოჰმ -ში ბოლო ჩასმული ჯეკის მიმართ. ასე რომ თქვენ ასევე შეგიძლიათ გამოიყენოთ ეს ესკიზი, როგორც სახის ოჰმეტრი, რათა შეამოწმოთ ჯეკის დანამატის წინააღმდეგობა.

ნაბიჯი 6: შენიშვნები

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

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

Მადლობა წაკითხვისთვის.

გირჩევთ: