Სარჩევი:

არდუინოთი და DC ძრავით სიმღერების გაკეთება: 6 ნაბიჯი
არდუინოთი და DC ძრავით სიმღერების გაკეთება: 6 ნაბიჯი

ვიდეო: არდუინოთი და DC ძრავით სიმღერების გაკეთება: 6 ნაბიჯი

ვიდეო: არდუინოთი და DC ძრავით სიმღერების გაკეთება: 6 ნაბიჯი
ვიდეო: 1. რა არის Arduino? როგორ მუშაობს კომპიუტერი? 2024, ნოემბერი
Anonim
სიმღერების გაკეთება არდუინოთი და DC ძრავით
სიმღერების გაკეთება არდუინოთი და DC ძრავით

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

თუმცა, როდესაც მე თვითონ გამოვცადე, აღმოვაჩინე, რომ სტეპერიანი ძრავა არ შემიძლია საკმარისად სწრაფად ბრუნავს ტონის შესაქმნელად. ამის ნაცვლად, მე გამოვიყენე DC ძრავა, რომლის დაპროგრამება და დაკავშირება არდუინოსთან შედარებით მარტივია. საერთო L293D IC შეიძლება გამოყენებულ იქნას Arduino PWM პინიდან ძრავის მარტივად გადასაყვანად, ხოლო Arduino– ს მშობლიურ ტონის () ფუნქციას შეუძლია შექმნას საჭირო სიხშირე. ჩემდა გასაკვირად, მე ვერ ვიპოვე რაიმე მაგალითი ან პროექტი DC ძრავის გამოყენებით ინტერნეტში და, შესაბამისად, ეს ინსტრუქცია არის ჩემი პასუხი ამის გამოსასწორებლად. Დავიწყოთ!

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

მარაგები

  • არდუინო (მე ვიყენებ UNO– ს, მაგრამ თუ გსურთ, შეგიძლიათ გამოიყენოთ სხვა Arduino)
  • სტანდარტული 5V DC ძრავა, სასურველია ჰქონდეს ვენტილატორი (იხილეთ სურათი "წრედის აწყობა"
  • L293D IC
  • იმდენი ღილაკი, რამდენიც ნოტი იმ სიმღერაში, რომლის დაკვრაც გსურთ
  • პურის დაფა
  • Jumper Wires

ნაბიჯი 1: მიმოხილვა

აი, როგორ მუშაობს პროექტი: Arduino გამოიმუშავებს კვადრატულ ტალღას მოცემულ სიხშირეზე, რომელიც გამოაქვს L293D– ზე. L293D დაკავშირებულია გარე კვების ბლოკთან, რომელსაც იგი იყენებს ძრავის დასატენად იმ სიხშირეზე, რომელსაც იძლევა არდუინო. DC ძრავის ლილვის ბრუნვის თავიდან აცილებით, ძრავა ისმის გამორთვასა და ჩართვაში სიხშირეზე, რაც წარმოშობს ტონს, ან ნოტს. ჩვენ შეგვიძლია დავაპროგრამოთ Arduino– ს ღილაკების დაჭერისას ჩანაწერების დაკვრა, ან ავტომატურად დაკვრა მათ.

ნაბიჯი 2: წრის შეკრება

მიკროსქემის აწყობა
მიკროსქემის აწყობა
მიკროსქემის აწყობა
მიკროსქემის აწყობა

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

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

ნაბიჯი 3: როგორ მუშაობს სქემა

როგორ მუშაობს წრედი
როგორ მუშაობს წრედი

L293D არის IC, რომელიც გამოიყენება შედარებით მაღალი ძაბვის, მაღალი დენის მოწყობილობების მართვისთვის, როგორიცაა რელეები და ძრავები. Arduino– ს არ შეუძლია მართოს ძრავების უმეტესობა უშუალოდ მისი გამომუშავებიდან (ხოლო ძრავის უკანა EMF– მ შეიძლება დააზიანოს Arduino– ს მგრძნობიარე ციფრული წრე), ამიტომ L293D– ის მსგავსი IC შეიძლება გამოყენებულ იქნას გარე კვების ბლოკით, რათა ადვილად მართოს DC ძრავა. სიგნალის შეყვანა L293D- ში გამოიცემა იგივე სიგნალი DC ძრავზე არდუინოს დაზიანების რისკის გარეშე.

ზემოთ მოცემულია L293D– ის pinout/ფუნქციური სქემა მისი მონაცემთა ცხრილისგან. ვინაიდან ჩვენ ვმოძრაობთ მხოლოდ 1 ძრავით (L293D– ს შეუძლია 2), ჩვენ გვჭირდება IC– ს მხოლოდ ერთი მხარე. პინი 8 არის სიმძლავრე, ქინძისთავები 4 და 5 არის GND, პინ 1 არის PWM გამომავალი არდუინოდან, ხოლო ქინძისთავები 2 და 7 აკონტროლებენ ძრავის მიმართულებას. როდესაც pin 2 არის მაღალი და pin 7 არის დაბალი, ძრავა ბრუნავს ერთი მიმართულებით, ხოლო როდესაც pin 2 არის დაბალი და pin 7 არის მაღალი, ძრავა ბრუნავს სხვა გზით. მას შემდეგ, რაც ჩვენ არ გვაინტერესებს, რა მიმართულებით ტრიალებს ძრავა, არ აქვს მნიშვნელობა პინები 2 და 7 დაბალია თუ მაღალი, რამდენადაც ისინი ერთმანეთისგან განსხვავდებიან. ქინძისთავები 3 და 6 უკავშირდება ძრავას. სურვილისამებრ შეგიძლიათ დააკავშიროთ ყველაფერი მეორე მხარეს (ქინძისთავები 9-16), მაგრამ გაითვალისწინეთ, რომ დენის და PWM ქინძისთავები ცვლის ადგილებს.

შენიშვნა: თუ თქვენ იყენებთ Arduino– ს, რომელსაც არ აქვს საკმარისი ღილაკები თითოეული ღილაკისთვის, შეგიძლიათ გამოიყენოთ რეზისტორების ქსელი, რომ ყველა გადამრთველი ერთ ანალოგიურ პინთან დააკავშიროთ, მაგალითად ამ ინსტრუქციებში. როგორ მუშაობს ეს არის ამ პროექტის ფარგლებს გარეთ, მაგრამ თუ თქვენ ოდესმე გამოგიყენებიათ R-2R DAC, თქვენთვის ნაცნობი უნდა გქონდეთ. გაითვალისწინეთ, რომ ანალოგური პინის გამოყენება მოითხოვს კოდის დიდი ნაწილის გადაწერას, რადგან ღილაკის ბიბლიოთეკა არ შეიძლება გამოყენებულ იქნას ანალოგურ ქინძისთავებთან.

ნაბიჯი 4: როგორ მუშაობს კოდი

ყველა ღილაკის დამუშავების გასაადვილებლად, მე გამოვიყენე ბიბლიოთეკა madleech- ის სახელწოდებით "Button". ბიბლიოთეკა პირველ რიგში შევიტანე. შემდეგ, 8-22 სტრიქონებში, მე განვსაზღვრე სიხშირეები ნოტებისთვის, რომლებიც საჭიროა Twinkle, Twinkle, Little Star (სიმღერის მაგალითი) დასაკრავად, პინი, რომელსაც გამოვიყენებ L293D– ის მართვისთვის და ღილაკები.

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

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

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

ნაბიჯი 5: სიმღერის პროგრამირება

იმის ნაცვლად, რომ გამოიყენოთ ღილაკები ჩანაწერების სათამაშოდ, თქვენ ასევე შეგიძლიათ დაპროგრამოთ Arduino, რომ ავტომატურად დაუკრას თქვენთვის მელოდიას. აქ არის პირველი ესკიზის შეცვლილი ვერსია, რომელიც თამაშობს Twinkle, Twinkle, Little Star ძრავზე. ესკიზის პირველი ნაწილი იგივეა - განსაზღვრეთ ჩანაწერების სიხშირეები და ტონი Pin. ჩვენ მივიღებთ ახალ ნაწილს bpm = "100". მე ვაყენებ დარტყმებს წუთში (წთ / წთ) და შემდეგ ვიყენებ მათემატიკას, რომ გავარკვიო მილიმეწამების რაოდენობა თითო დარტყმამდე, რასაც უტოლდება წთ. ამისათვის მე გამოვიყენე ტექნიკა სახელწოდებით განზომილებიანი ანალიზი (არ ინერვიულოთ - ეს არც ისე რთულია, როგორც ჟღერს). თუ ოდესმე გაგივლიათ საშუალო სკოლის ქიმიის კურსი, თქვენ აუცილებლად გამოიყენეთ განზომილებიანი ანალიზი ერთეულებს შორის გადასაყვანად. Floats () არსებობს იმის უზრუნველსაყოფად, რომ განტოლებაში არაფერი დამრგვალდეს ბოლომდე სიზუსტისთვის.

მას შემდეგ, რაც ჩვენ გვაქვს ms/beat რიცხვი, მე მას სათანადოდ ვყოფ ან გავამრავლებ, რათა ვიპოვო მუსიკაში ნაპოვნი ნოტების ხანგრძლივობის მილიწამიანი მნიშვნელობები. შემდეგ ვაკეთებ მასივის ყველა ნოტს ქრონოლოგიური თანმიმდევრობით, და კიდევ ერთს თითოეული ჩანაწერის ხანგრძლივობით. მნიშვნელოვანია, რომ თითოეული ნოტის ინდექსი ემთხვეოდეს მისი ხანგრძლივობის ინდექსს, წინააღმდეგ შემთხვევაში თქვენი მელოდია გაჟღერდება. მე მოვიყვანე ნოტები Twinkle, Twinkle, Little Star– ისთვის, როგორც მაგალითი, მაგრამ თქვენ შეგიძლიათ სცადოთ ნებისმიერი სიმღერა ან ნოტების თანმიმდევრობა, რაც გსურთ.

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

ნაბიჯი 6: გამოხმაურება

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

გირჩევთ: