Სარჩევი:

სიმღერის დიგიტალიზაცია არდუინოსთან ერთად: 6 ნაბიჯი
სიმღერის დიგიტალიზაცია არდუინოსთან ერთად: 6 ნაბიჯი

ვიდეო: სიმღერის დიგიტალიზაცია არდუინოსთან ერთად: 6 ნაბიჯი

ვიდეო: სიმღერის დიგიტალიზაცია არდუინოსთან ერთად: 6 ნაბიჯი
ვიდეო: პროექტი ქართული გალობის უნიკალური სანოტო ჩანაწერების დიგიტალიზაცია 2024, ნოემბერი
Anonim
სიმღერის დიგიტალიზაცია არდუინოსთან ერთად
სიმღერის დიგიტალიზაცია არდუინოსთან ერთად

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

თქვენ დაგჭირდებათ ერთი Arduino Uno ან მეგა, ბევრი ჯუმბერის კაბელი, პიეზოს ზუზუნი, პურის დაფა, 16*2 LCD ეკრანი, რომელსაც აქვს ყველა გამწმენდი ქინძისთავები და 10 კ პოტენომეტრი (თქვენ ასევე შეგიძლიათ მოისმინოთ, რომ ისინი მოიხსენიებიან როგორც ჭურჭელი)). უმჯობესია ყველა ეს მარაგი შევიკრიბოთ მშენებლობის დაწყებამდე.

ნაბიჯი 1: გადააკეთეთ მუსიკალური ქულა ციფრულ ნოტებად: ღირებულებების გადადება

გადააკეთეთ მუსიკალური პაროლი ციფრულ ნოტებად: ღირებულებების გადადება
გადააკეთეთ მუსიკალური პაროლი ციფრულ ნოტებად: ღირებულებების გადადება

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

ნაბიჯი 2: გადააკეთეთ მუსიკალური ქულა ციფრულ ნოტებად: ჰერცის ღირებულებები

გადააკეთეთ მუსიკალური პაროლი ციფრულ ნოტებად: ჰერცის ღირებულებები
გადააკეთეთ მუსიკალური პაროლი ციფრულ ნოტებად: ჰერცის ღირებულებები

სანამ ამ ნაბიჯს დავიწყებ, ნება მომეცით განვსაზღვრო ტექნიკური ტერმინები. ნოტის "ღირებულება" შეიძლება ურთიერთშემცვლელ იქნას სიტყვებით "სიმაღლე", "მნიშვნელობა" და "შენიშვნა". ახლა თქვენ უნდა წაიკითხოთ სიმღერის თითოეული ნოტი პარტიტიდან. თქვენ მოგიწევთ თითოეული ნოტის თარგმნა ჰერცში მუსიკის გამოყენებით ჰერცის მაგიდაზე, რომელსაც მარტივად ნახავთ ინტერნეტში. ერთი რამ უნდა გვახსოვდეს, რომ შუა C ჩამოთვლილია როგორც C4 მაგიდაზე, ხოლო ოქტავა უფრო მაღალია C5 და ასე შემდეგ. მას შემდეგ, რაც ეს შენიშვნები გადაწერილი იქნება ჰერცზე, თქვენ მნიშვნელობებს ათავსებთ ფუნქციის ტონში (x, y, z); სადაც X არის პინის ნომერი ან const int, ცვლადების განსაზღვრის გზა, რომელსაც მოგვიანებით განვმარტავ. Y იქნება ჰერცის მნიშვნელობა, რომელიც თქვენ ახლა გადაწერეთ, ხოლო Z იქნება ნოტის ხანგრძლივობა მილიწამებში დამრგვალებული უახლოეს მეასედზე. Გადადება(); მნიშვნელობები იქნება შენიშვნის ხანგრძლივობა. ახლა, მოდით შევქმნათ წრე, რომელსაც შეუძლია მუსიკის დაკვრა.

ნაბიჯი 3: სქემის დიზაინი

წრიული დიზაინი
წრიული დიზაინი

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

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

GND ნიშნავს მიწას, ეს არის უარყოფითი მავთული პირდაპირი დენის დროს. მავთულის GND პურის დაფის უარყოფით რელსზე.

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

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

RS ნიშნავს რეგისტრაციის შერჩევას და ის გამოიყენება Arduino– ს მიერ ეკრანზე მონაცემების შესანახად. შეაერთეთ ეს პინდი Arduino– ს პინ 12 – თან.

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

E ნიშნავს Enable, რომელიც ეუბნება LCD- ს რომელი პიქსელების ჩართვა (ჩართვა) ან გამორთვა (გამორთვა). შეაერთეთ ეს პინდი Arduino პინ 11 -თან.

D4, D5, D6 და D7 არის ჩვენების ქინძისთავები, რომლებიც აკონტროლებენ გამოსახულ სიმბოლოებსა და ასოებს. დააკავშირეთ ისინი Arduino- ს პინებთან, შესაბამისად, 5, 4, 3 და 2, შესაბამისად.

Pin A, ზოგჯერ ლეიბლით LED, არის LED ანოდი უკანა განათებისთვის. შეაერთეთ ეს პოზიტიური სიმძლავრის სარკინიგზო ხაზთან მავთულით ან 220 ohm რეზისტორით. რეზისტორი უკეთესია უფრო დიდხანს გამოსაყენებლად, რადგან ის ზოგავს LCD- ს, მაგრამ თუ მოწყობილობა არ იქნება გამოყენებული დღე და ღამე, თქვენ არ გჭირდებათ რეზისტორი.

Pin K, ზოგჯერ ასევე (დამაბნეველად) იარლიყით LED, არის LED დასაყენებელი პინი. შეაერთეთ ეს სახმელეთო ელექტრო სარკინიგზო ხაზთან.

ნაბიჯი 4: კოდის ატვირთვა: როგორ

შეაერთეთ თქვენი Arduino თქვენი კომპიუტერის USB- ში. ატვირთეთ შემდეგი კოდი Arduino IDE პროგრამისტის გამოყენებით.

#ჩართეთ

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal LCD (rs, en, d4, d5, d6, d7);

void setup () {

// დააყენეთ LCD სვეტებისა და რიგების რაოდენობა: lcd.begin (16, 2); // დაბეჭდეთ შეტყობინება LCD– ზე. lcd.print ("ჰერცის მოედანი:!"); დაგვიანება (1000); ბათილი მარყუჟი () {// დაკვრა e4 შეფერხებით (600); // პაუზა 0.6 წამის ტონით (10, 329.63, 300); // დაკვრა e ზუმზე 10 პინზე, ბოლო.3 წმ lcd.print (" 329.63 "); // აჩვენეთ შეტყობინება LCD- ზე" 329.63"

შეფერხება (350); // გადადება.35 წამი

lcd.clear (); // გაასუფთავეთ LCD და გადატვირთეთ შემდეგი შეტყობინებისთვის // ითამაშეთ d4# ტონი (10, 311.13, 300); lcd.print ("311.13"); დაგვიანება (350); lcd. წმინდა (); // დაუკრა e4 ტონი (10, 329.63, 300); lcd.print ("329.63"); დაგვიანება (350); lcd. წმინდა (); // დაკვრა d4# ტონით (10, 311.13, 300); lcd.print ("311.13"); დაგვიანება (350); lcd. წმინდა (); // დაუკრა e4 ტონი (10, 329.63, 300); lcd.print ("329.63"); დაგვიანება (350); lcd. წმინდა (); // b3 ტონის დაკვრა (10, 246.94, 300); lcd.print ("246.94"); დაგვიანება (400); lcd. წმინდა (); // d4 ტონის დაკვრა (10, 293.66, 300); lcd.print ("293.66"); დაგვიანება (400); lcd. წმინდა (); // c4 ტონის დაკვრა (10, 261.63, 300); lcd.print ("261.63"); დაგვიანება (400); lcd. წმინდა (); // a3 ტონის დაკვრა (10, 220, 900); lcd.print ("220.0"); დაგვიანება (1000); lcd.clear (); // line60 // helpave // avrdude.failure.eeprom // დაკვრა d3 ტონით (10, 146.83, 300); lcd.print ("146.63"); დაგვიანება (350); lcd. წმინდა (); // f3 ტონის დაკვრა (10, 174.61, 300); lcd.print ("174.61"); დაგვიანება (400); lcd. წმინდა (); // a3 ტონის დაკვრა (10, 220, 300); lcd.print ("220"); დაგვიანება (400); lcd. წმინდა (); // b3 ტონის დაკვრა (10, 246.94, 900); lcd.print ("246.94"); დაგვიანება (1000); lcd. წმინდა ();

// თამაში e3

ტონი (10, 164.81, 300); lcd.print ("164.81"); დაგვიანება (400); lcd. წმინდა (); // დაკვრა g3# ტონით (10, 207.65, 300); lcd.print ("207.65"); დაგვიანება (400); lcd. წმინდა (); // b3 ტონის დაკვრა (10, 246.94, 300); lcd.print ("246.94"); დაგვიანება (400); lcd. წმინდა (); // c4 ტონის დაკვრა (10, 261.63, 900); lcd.print ("261.63"); დაგვიანება (1000); lcd. წმინდა (); // დაუკრა e ტონი (10, 164.81, 300); lcd.print ("164.81"); დაგვიანება (400); lcd. წმინდა (); // დაუკრა e4 ტონი (10, 329.63, 300); lcd.print ("329.63"); დაგვიანება (400); lcd. წმინდა (); // დაკვრა d4# ტონით (10, 311.13, 300); lcd.print ("311.13"); დაგვიანება (400); lcd. წმინდა (); // დაუკრა e4 ტონი (10, 329.63, 300); lcd.print ("329.63"); დაგვიანება (400); lcd. წმინდა (); // დაკვრა d4# ტონით (10, 311.13, 300); lcd.print ("311.13"); დაგვიანება (400); lcd. წმინდა (); // დაუკრა e4 ტონი (10, 329.63, 300); lcd.print ("329.63"); დაგვიანება (400); lcd. წმინდა (); // b3 ტონის დაკვრა (10, 246.94, 300); lcd.print ("246.94"); დაგვიანება (400); lcd. წმინდა (); // d4 ტონის დაკვრა (10, 293.66, 300); lcd.print ("293.66"); დაგვიანება (400); lcd. წმინდა (); // c4 ტონის დაკვრა (10, 261.63, 300); lcd.print ("261.63"); დაგვიანება (400); lcd. წმინდა (); // a3 ტონის დაკვრა (10, 220, 900); lcd.print ("220.0"); დაგვიანება (1000); lcd. წმინდა (); // d3 ტონის დაკვრა (10, 146.83, 300); lcd.print ("146.83"); დაგვიანება (400); lcd. წმინდა (); // f3 ტონის დაკვრა (10, 174.61, 300); // eeprom 20–6 yesno, flash 65–0 noyes lcd.print ("174.61"); დაგვიანება (400); lcd. წმინდა (); // a3 ტონის დაკვრა (10, 220, 300); lcd.print ("220.0"); დაგვიანება (400); lcd. წმინდა (); // b3 ტონის დაკვრა (10, 246.94, 900); lcd.print ("246.94"); დაგვიანება (1000); lcd. წმინდა (); // f3 ტონის დაკვრა (10, 174.61, 300); lcd.print ("174.61"); დაგვიანება (400); lcd. წმინდა (); // c4 ტონის დაკვრა (10, 261.63, 300); lcd.print ("261.63"); დაგვიანება (400); lcd. წმინდა (); // b3 ტონის დაკვრა (10, 246.94, 300); lcd.print ("246.94"); დაგვიანება (400); lcd. წმინდა (); // a3 ტონის დაკვრა (10, 220, 900); lcd.print ("220.0"); დაგვიანება (1000); lcd. წმინდა (); // b3 ტონის დაკვრა (10, 246.94, 300); lcd.print ("246.94"); დაგვიანება (400); lcd. წმინდა (); // c4 ტონის დაკვრა (10, 261.63, 300); lcd.print ("261.63"); დაგვიანება (400); lcd. წმინდა (); // d4 ტონის დაკვრა (10, 293.66, 300); lcd.print ("293.66"); დაგვიანება (400); lcd. წმინდა (); // დაუკრა e4 ტონი (10, 329.63, 900); lcd.print ("329.63"); დაგვიანება (1000); lcd. წმინდა (); // g3 ტონის დაკვრა (10, 196, 300); lcd.print ("196.0"); დაგვიანება (400); lcd. წმინდა (); // f4 ტონის დაკვრა (10, 349.23, 300); lcd.print ("349.23"); დაგვიანება (400); lcd. წმინდა (); // დაუკრა e4 ტონი (10, 329.23, 300); lcd.print ("329.23"); დაგვიანება (400); lcd. წმინდა (); // d4 ტონის დაკვრა (10, 293.63, 900); lcd.print ("293.63"); დაგვიანება (1000); lcd. წმინდა (); // დაუკრა e3 ტონი (10, 164.81, 300); lcd.print ("164.81"); დაგვიანება (400); lcd. წმინდა (); // დაუკრა e4 ტონი (10, 329.63, 300); lcd.print ("329.63"); დაგვიანება (400); lcd. წმინდა (); // d4 ტონის დაკვრა (10, 293.63, 300); lcd.print ("293.63"); დაგვიანება (400); lcd. წმინდა (); // c4 ტონის დაკვრა (10, 261.63, 900); lcd.print ("261.63"); დაგვიანება (1000); lcd. წმინდა (); // d3 ტონის დაკვრა (10, 146.83, 300); lcd.print ("146.83"); დაგვიანება (400); lcd. წმინდა (); // d4 ტონის დაკვრა (10, 293.63, 300); lcd.print ("293.63"); დაგვიანება (400); lcd. წმინდა (); // c4 ტონის დაკვრა (10, 261.63, 300); lcd.print ("261.63"); დაგვიანება (400); lcd. წმინდა (); // b3 ტონის დაკვრა (10, 246.94, 900); lcd.print ("246.94"); დაგვიანება (1000); lcd. წმინდა (); // დაუკრა e4 ტონი (10, 329.63, 300); lcd.print ("329.63"); დაგვიანება (400); lcd. წმინდა (); // დაკვრა d4# ტონით (10, 311.13, 300); lcd.print ("311.13"); დაგვიანება (350); lcd. წმინდა (); // დაუკრა e4 ტონი (10, 329.63, 300); lcd.print ("329.63"); დაგვიანება (350); lcd. წმინდა (); // დაკვრა d4# ტონით (10, 311.13, 300); lcd.print ("311.13"); დაგვიანება (350); lcd. წმინდა (); // დაუკრა e4 ტონი (10, 329.63, 300); lcd.print ("329.63"); დაგვიანება (350); lcd. წმინდა (); // b3 ტონის დაკვრა (10, 246.94, 300); lcd.print ("246.94"); დაგვიანება (400); lcd. წმინდა (); // d4 ტონის დაკვრა (10, 293.66, 300); lcd.print ("293.66"); დაგვიანება (400); lcd. წმინდა (); // c4 ტონის დაკვრა (10, 261.63, 300); lcd.print ("261.63"); დაგვიანება (400); lcd. წმინდა (); // a3 ტონის დაკვრა (10, 220, 900); lcd.print ("220.0"); დაგვიანება (1000); lcd. წმინდა (); // დაკვრა d3 ტონით (10, 146.83, 300); lcd.print ("146.83"); დაგვიანება (350); lcd. წმინდა (); // f3 ტონის დაკვრა (10, 174.61, 300); lcd.print ("174.61"); დაგვიანება (400); lcd. წმინდა (); // a3 ტონის დაკვრა (10, 220, 300); lcd.print ("220.0"); დაგვიანება (400); // თამაში b3 lcd.clear (); ტონი (10, 246.94, 900); lcd.print ("246.94"); დაგვიანება (1000); lcd. წმინდა (); // დაუკრა e3 ტონი (10, 164.81, 300); lcd.print ("164.81"); დაგვიანება (400); lcd. წმინდა (); // დაკვრა g#3 ტონით (10, 207.65, 300); lcd.print ("207.65"); დაგვიანება (400); lcd. წმინდა (); // b3 ტონის დაკვრა (10, 246.94, 300); lcd.print ("246.94"); დაგვიანება (400); lcd. წმინდა (); // c4 ტონის დაკვრა (10, 261.63, 900); lcd.print ("261.63"); დაგვიანება (1000); დაგვიანება (300); lcd. წმინდა (); // დაუკრა e3 ტონი (10, 164.81, 300); lcd.print ("164.81"); დაგვიანება (400); lcd. წმინდა (); // დაუკრა e4 ტონი (10, 329.63, 300); lcd.print ("329.63"); დაგვიანება (400); lcd. წმინდა (); // დაკვრა d4# ტონით (10, 311.13, 300); lcd.print ("311.13"); დაგვიანება (400); lcd. წმინდა (); // დაუკრა e4 ტონი (10, 329.63, 300); lcd.print ("329.63"); დაგვიანება (400); lcd. წმინდა (); // დაკვრა d4# ტონით (10, 311.13, 300); lcd.print ("311.13"); დაგვიანება (400); lcd. წმინდა (); // დაუკრა e4 ტონი (10, 329.63, 300); lcd.print ("329.63"); დაგვიანება (400); lcd. წმინდა (); // b3 ტონის დაკვრა (10, 246.94, 300); lcd.print ("246.94"); დაგვიანება (400); lcd. წმინდა (); // d4 ტონის დაკვრა (10, 293.66, 300); lcd.print ("293.66"); დაგვიანება (400); lcd. წმინდა (); // c4 ტონის დაკვრა (10, 261.63, 300); lcd.print ("261.63"); დაგვიანება (400); lcd. წმინდა (); // a3 ტონის დაკვრა (10, 220, 900); lcd.print ("220.0"); დაგვიანება (1000); lcd. წმინდა (); // დაკვრა d3 ტონით (10, 146.83, 300); lcd.print ("146.83"); დაგვიანება (400); lcd. წმინდა (); // f3 ტონის დაკვრა (10, 174.61, 300); lcd.print ("174.61"); დაგვიანება (400); lcd. წმინდა (); // a3 ტონის დაკვრა (10, 220, 300); lcd.print ("220.0"); დაგვიანება (400); lcd. წმინდა (); // b3 ტონის დაკვრა (10, 246.94, 900); lcd.print ("246.94"); დაგვიანება (1000); lcd. წმინდა (); // f3 ტონის დაკვრა (10, 174.61, 300); lcd.print ("174.61"); დაგვიანება (400); lcd. წმინდა (); // c4 ტონის დაკვრა (10, 261.63, 300); lcd.print ("261.63"); დაგვიანება (400); lcd. წმინდა (); // b3 ტონის დაკვრა (10, 246.94, 300); lcd.print ("246.94"); დაგვიანება (400); lcd. წმინდა (); // a3 ტონის დაკვრა (10, 220, 900); lcd.print ("220.0"); დაგვიანება (1000); lcd. წმინდა (); }

ნაბიჯი 5: კოდის ატვირთვა: რას ნიშნავს ეს ყველაფერი?

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

ტონი (x, y, z); = დაუკარი ტონი y ჰერცის სიმაღლით, ზარის ზოლზე pin x- ზე, z მილიწამებში.

lcd.print ("XYZ"); = დაბეჭდეთ შეტყობინება სიმბოლოებით XYZ LCD ეკრანზე. (მაგალითად, ჰერცის მოედნის ჩვენება)

დაგვიანებით (x); = პაუზა x მილიწამში.

const int X = Y = დააყენეთ მუდმივი ცვლადი X პინზე Y, და გამოიყენეთ ან X ან Y მოწყობილობაზე ამოცანების დასატოვებლად.

lcd. წმინდა (); = გაასუფთავეთ LCD ეკრანი და გადატვირთეთ ახალი ჩვენებისთვის

pinMode (X, OUTPUT); = დააყენეთ pin X გამომავალი რეჟიმისთვის

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

ნაბიჯი 6: დასრულდა !

დასრულდა !!!
დასრულდა !!!
დასრულდა !!!
დასრულდა !!!

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

გირჩევთ: