Სარჩევი:

არდუინო კარის ზარი: 4 ნაბიჯი
არდუინო კარის ზარი: 4 ნაბიჯი

ვიდეო: არდუინო კარის ზარი: 4 ნაბიჯი

ვიდეო: არდუინო კარის ზარი: 4 ნაბიჯი
ვიდეო: კახი კალაძე დატროლეს 😀🤣🤣 2024, ივლისი
Anonim
არდუინო დორბელი
არდუინო დორბელი

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

მასალები:

  • Arduino Uno (სხვა ტიპის უმეტესობა გააკეთებს)
  • კომპიუტერი Arduino IDE პროგრამირებისთვის
  • USB-A to USB-B კაბელი Arduino პროგრამირებისთვის
  • პურის დაფა
  • 4x მხტუნავი მავთულები
  • Pushbutton ან სხვა შეცვლა
  • 10 kOhm რეზისტორი
  • პასიური ზარი (ანუ პიეოელექტრული სპიკერი)
  • მუდმივი ინსტალაციისთვის:

    • 9V DC კვების ბლოკი ან 9 ვ ბატარეა არდუინოს დასატენად
    • 2x გრძელი მავთულები კარის გარეთ გაყვანილობის ღილაკისთვის

ნაბიჯი 1: აპარატურის დაყენება

აპარატურის დაყენება
აპარატურის დაყენება
აპარატურის დაყენება
აპარატურის დაყენება
აპარატურის დაყენება
აპარატურის დაყენება

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

შემდეგი, ჩვენ დავაყენებთ ღილაკს კარის ზარისთვის. ჩვენ გამოვიყენებთ 10 kOhm გარე pulldown რეზისტორს გადართვისთვის, ასე რომ არ არსებობს მცურავი ძაბვა ან არასტაბილური მდგომარეობა არდუინოს შესასვლელში. ღილაკის დაჭერისას არდუინო კითხულობს ძაბვას 0V- ზე და ღილაკზე დაჭერისას 5V. დამატებითი ინფორმაციისთვის pullup ან pulldown რეზისტორების შესახებ, შეგიძლიათ წაიკითხოთ ეს სტატია:

ჩვენ დავაკავშირებთ ღილაკის ერთ მხარეს 5 ვ. ღილაკის მეორე მხარე მიწასთან იქნება დაკავშირებული 10 kOhm გამწევ რეზისტორის საშუალებით. გახსოვდეთ: ღილაკები ერთმანეთთან ჰორიზონტალურად არის დაკავშირებული. ისინი დაკავშირებულია მხოლოდ ვერტიკალურად დაჭერისას. დამატებითი ინფორმაცია მოცემულია ამ სტატიაში:

ნაბიჯი 2: პროგრამული უზრუნველყოფის დაყენება

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

აწყობა:

Setup () ფუნქციაში ჩვენ გვსურს ციფრული ქინძისთავების კონფიგურაცია ჩვენი ღილაკისა და დინამიკისთვის. ჩვენ გვსურს დავაკონფიგურიროთ პინ 2, როგორც შეყვანა ჩვენი ღილაკისთვის და გვსურს კონფიგურაცია 8, როგორც გამომავალი ჩვენი სპიკერისთვის.

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

#მოიცავს "მოედნებს.ჰ"

#მოიცავს "songs.h" #განსაზღვრეთ BUTTON_PIN 2 #განსაზღვრეთ SPEAKER_PIN 8/ * შექმენით ფუნქცია */void setup () {// ჩართეთ/გამოუშვით ქინძისთავები pinMode (BUTTON_PIN, INPUT); pinMode (SPEAKER_PIN, OUTPUT); // სათესლე random () ფუნქცია ისე, რომ მივიღოთ სხვადასხვა რიგის randomSeed (analogRead (0)); }

მარყუჟი:

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

მას შემდეგ რაც დადასტურდება, რომ ღილაკი დაჭერილია, ჩვენ ვიყენებთ შემთხვევითი რიცხვების გენერატორს, რომ შევარჩიოთ 5 სიმღერიდან ერთი გადართვის განცხადების გამოყენებით. ამ სიმღერების მონაცემები ინახება "songs.h" - ში, ხოლო მოედანზე ინფორმაცია ინახება "pitches.h" - ში. მას შემდეგ, რაც ჩვენ ვირჩევთ სიმღერას, ჩვენ ამ ინფორმაციას გადავცემთ ფუნქცია play_song ().

/ * მთავარი ხოლო მარყუჟის ფუნქცია */

void loop () {// შეამოწმეთ თუ არა ღილაკზე დაჭერილი თუ (digitalRead (BUTTON_PIN) == HIGH) {// დააყოვნეთ 50 ms, რომ დარწმუნდეთ, რომ ის კვლავ დაჭერილია // თავიდან აიცილებს ყოველგვარ შეცდომაში შემყვან კითხვებს (50); if (digitalRead (BUTTON_PIN) == HIGH) {// შემთხვევით აირჩიე სიმღერა int song_choice = შემთხვევითი (5); // აირჩიეთ რომელი სიმღერის დაკვრაა გადართვა (song_choice) {case 0: play_song (haircutLength, haircut, haircutDurations, haircutTempo); შესვენება; შემთხვევა 1: play_song (marioLength, mario, marioDurations, marioTempo); შესვენება; შემთხვევა 2: play_song (miiLength, mii, miiDurations, miiTempo); შესვენება; შემთხვევა 3: play_song (hpLength, hp, hpDurations, hpTempo); შესვენება; შემთხვევა 4: play_song (takeonmeLength, takeonme, takeonmeDurations, takeonmeTempo); შესვენება; ნაგულისხმევი: play_song (miiLength, mii, miiDurations, miiTempo); შესვენება; }}}}

play_song:

play_song () იღებს 4 არგუმენტს: ნოტების რიცხვი სიმღერაში, მელოდიაში არსებული ბგერების მთელი მასივი, ხანგრძლივობის მთელი მასივი და მთელი ტემპი ამ კონკრეტული სიმღერისთვის. თქვენ უნდა მიუთითოთ თითოეული მათგანი თითოეული სიმღერისთვის, რომლის დაკვრა გსურთ. დამატებითი ინფორმაციისათვის, თუ როგორ გამოიყენოთ არდუინოს ტონის ფუნქციები, შეგიძლიათ გადახედოთ ამ გაკვეთილს: https://www.arduino.cc/en/Tutorial/ToneMelody. ამ სახელმძღვანელოს თავზე დავამატე გარკვეული ფუნქციონირება წერტილოვანი ჩანაწერებისათვის. თუ შენიშვნის ხანგრძლივობის მასივის მნიშვნელობა უარყოფითია, ეს ნიშნავს, რომ ეს არის წერტილოვანი ნოტა (სიგრძე 1.5 -ჯერ მეტია).

/ * უკრავს სიმღერას */

void play_song (int num_notes, int melody , int noteDurations , int tempo) {// გადახედე ყველა ნოტს (int i = 0; i 0) {ხანგრძლივობა = ტემპი / შენიშვნა ხანგრძლივობა ; } // თუ ის უარყოფითი რიცხვია, ნიშნავს წერტილოვან შენიშვნას // ზრდის ხანგრძლივობას ნახევრად წერტილოვანი ნოტებისთვის სხვა შემთხვევაში თუ (noteDurations <0) {duration = tempo / abs (noteDurations ) * 1.5; } ტონი (SPEAKER_PIN, მელოდია , ხანგრძლივობა); // ნოტების გასარჩევად, დაადგინეთ მათ შორის მინიმალური დრო. // შენიშვნის ხანგრძლივობა + 30% კარგად მუშაობს: int pauseBetweenNotes = ხანგრძლივობა * 1.30; შეფერხება (pauseBetweenNotes); // შეწყვიტე ტონის დაკვრა: noTone (SPEAKER_PIN); }}

სიმღერების ნიმუში. H:

ქვემოთ მოცემულია ერთ -ერთი სიმღერის ნიმუში "songs.h". შენიშვნები არის "pitches.h" - ში განსაზღვრული მაკროები. რიცხვები შეესაბამება ნოტების სიხშირეს ჰერცში (Hz). ნოტების ხანგრძლივობა განისაზღვრება შემდეგნაირად: 1 = მთლიანი ნოტა, 2 = ნახევარი ნოტა, 4 = მეოთხედი ნოტა, 8 = მერვე ნოტა, -4 = წერტილოვანი მეოთხედი ნოტა და ა.შ. სიგრძე არის სიმღერის ნოტების საერთო რაოდენობა. ტემპი არის სიმღერის სიჩქარის გამყოფი (უფრო მაღალი რიცხვი ნიშნავს შენელებულ ტემპს). თქვენ მოგიწევთ ამ ნომრით თამაში სანამ არ მიიღებთ თქვენთვის სასურველ ტემპს.

/* ჰარი პოტერი */

int hp = {NOTE_D4, NOTE_G4, NOTE_AS4, NOTE_A4, NOTE_G4, NOTE_D5, NOTE_C5, NOTE_A4, NOTE_G4, NOTE_AS4, NOTE_A4, NOTE_F4, NOTE_GS4, NOTE_D4}; int hpDurations = {4, -4, 8, 4, 2, 4, -2, -2, -4, 8, 4, 2, 4, 1}; int hpLength = 14; int hpTempo = 1050;

ნაბიჯი 3: შესწორებები

დაამატეთ მეტი სიმღერა! მიჰყევით ფორმატს, რომელიც ნაჩვენებია "songs.h" - ში და გამოიყენეთ სახელმძღვანელო დახმარებისთვის: https://www.arduino.cc/en/Tutorial/ToneMelody. ყოველი ახალი სიმღერისთვის, რომელსაც დაამატებთ, გახსოვდეთ დაამატოთ ახალი შემთხვევა გადამრთველში და გაზარდოთ მაქსიმალური რიცხვი, რომელიც შეიძლება გენერირდეს თქვენი შემთხვევითი () ფუნქციით. ბედნიერი კოდირება!

ნაბიჯი 4: მეტი პროექტი

მეტი პროექტისთვის ეწვიეთ ჩემს გვერდებს:

  • https://dargen.io/
  • https://github.com/mjdargen
  • https://www.instructables.com/member/mjdargen/

გირჩევთ: