Სარჩევი:
- ნაბიჯი 1: რეგისტრაციის მისამართების განსაზღვრა
- ნაბიჯი 2: მასივები და გლობალური ცვლადები
- ნაბიჯი 3: ფუნქცია "serial.begin"
- ნაბიჯი 4: ფუნქცია "serial.available"
- ნაბიჯი 5: ფუნქცია "serial.read"
- ნაბიჯი 6: ფუნქცია "serial.write"
- ნაბიჯი 7: დაყენების ფუნქცია
- ნაბიჯი 8: მარყუჟის და ISR ფუნქციები
- ნაბიჯი 9: გაყვანილობა
- ნაბიჯი 10: შეაჯამეთ ეს ყველაფერი ერთად
ვიდეო: Arduino ტონის გენერატორი ბიბლიოთეკის ან სერიული ფუნქციების გარეშე (შეფერხებებით): 10 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:19
ეს არ არის ის, რასაც ჩვეულებრივ ვაკეთებ ინსტრუქტაჟად, მე მირჩევნია ჩემი ლითონის სამუშაოები, მაგრამ რადგან მე ვარ ელექტროტექნიკის სტუდენტი და უნდა გავიარო კლასი მიკროკონტროლერებზე (ჩამონტაჟებული სისტემების დიზაინი), ვიფიქრე, რომ ინსტრუქტაჟს გავაკეთებდი ჩემი ერთ -ერთი პროექტი. როდესაც მე თავდაპირველად გავაკეთე პროექტი და სხვები ამ კლასისთვის, აღმოვაჩინე, რომ ძალიან ცოტაა გაკვეთილები, რომლებიც არ იყენებენ არდუინოს ბიბლიოთეკის ფუნქციებს ან სერიულ ფუნქციებს, რაც კიდევ ერთი მიზეზია იმისა, რომ მე ვფიქრობდი, რომ ეს იქნებოდა კარგი სასწავლო.
ეს კოდი განკუთვნილია Atmega 2560 მიკროკონტროლისთვის, ასე რომ, თუ მისი სხვა დაფაზე დანერგვა მოგიწევთ, თქვენ უნდა შეცვალოთ მისამართების რეგისტრები კოდში თქვენი კონტროლერების მომხმარებლის სახელმძღვანელოზე დაყრდნობით. კოდის ძირითადი იდეა იმაში მდგომარეობს, რომ როდესაც კლავიატურაზე კლავიშს შეიყვანთ სერიულ მონიტორში, arduino მეგა გამოუშვებს გარკვეულ სიხშირეს იმისდა მიხედვით, თუ რომელ ღილაკს დააჭერთ, "q" - ის გადატვირთვით. მე გავაკეთე ისე, რომ "a" გამოუშვებს A სიხშირეს და "A" გამოუშვებს A მკვეთრ სიხშირეს, "b" გამოსცემს B ბინას, "c" C ბინას, "C" C მკვეთრს და ა.შ. სრული კოდი აიტვირთება ბოლოს, მაგრამ ყოველი ნაბიჯი კოდს დაყოფს ნაწილებად, ასე რომ უფრო ადვილია ახსნა.
ნაბიჯი 1: რეგისტრაციის მისამართების განსაზღვრა
ეს ნაბიჯი ადვილია, თუ თქვენ იყენებთ atmega 2560 -ს, თქვენ უბრალოდ უნდა გამოიყენოთ ის მისამართები, რომლებიც მე გამოვიყენე, თუმცა თუ თქვენ იყენებთ დაფას სხვადასხვა ჩიპით, თქვენ უნდა იპოვოთ მისამართები თითოეული ამ რეგისტრისთვის თქვენს ჩიპსის მომხმარებლის სახელმძღვანელო. ზედა განმარტებები მხოლოდ მუდმივებია, რომლებიც შემდგომში გამოყენებული იქნება ჩვენი ფუნქციებისათვის. ჩვენ მივუთითებთ მისამართებს, როგორც არასტაბილურ ხელმოუწერელს, რადგან ჩვენ არ გვინდა, რომ შემდგენელმა შეაფერხოს ისინი.
ნაბიჯი 2: მასივები და გლობალური ცვლადები
აქ ჩვენ გვინდა განვსაზღვროთ სიხშირის მასივი, რომელიც შეიცავს ყველა იმ სიხშირეს, რაც თითოეულმა გასაღებმა უნდა გამოუშვას. ეს მნიშვნელობები გამოითვლება შენიშვნების რეალური სიხშირეებიდან და გულწრფელად რომ ვთქვა, დამავიწყდა როგორ მივიღე ისინი, მაგრამ ისინი სწორი მნიშვნელობებია, რადგან მე მათ ვამოწმებდი ოსცილოსკოპზე დავრწმუნდი. ჩვენ ასევე განვსაზღვრავთ ჩანაწერების მასივს, რომელიც შეიცავს ყველა ღილაკს, რომელიც უნდა დააჭიროთ თითოეულ ტონს, ასევე ცვლადებს, რომლებიც დაგვჭირდება ჩვენი შემდგომი ფუნქციებისთვის.
ნაბიჯი 3: ფუნქცია "serial.begin"
ჩვენ მოვუწოდებთ ჩვენს ჩვეულ ფუნქციას, რომელიც იმეორებს "serial.begin" ფუნქციას U0init (). იგი იღებს სასურველ ბაუდრატს შეყვანის სახით და იწყებს სერიულ პორტს ამ ბაუდრატზე.
ნაბიჯი 4: ფუნქცია "serial.available"
ჩვენ მოვუწოდებთ იმ ფუნქციას, რომელიც ბაძავს "serial.available" U0kbhit (). მას არ სჭირდება შეყვანა, მაგრამ პირიქით ამოიცნობს, არის თუ არა კლავიატურაზე ცვლილება RDA სტატუსის ბიტის გამოყენებით და ბრუნდება true როდესაც ცვლილება გამოვლინდება.
ნაბიჯი 5: ფუნქცია "serial.read"
ჩვენ მოვუწოდებთ იმ ფუნქციას, რომელიც ბაძავს "serial.read" ფუნქციას U0getchar (), რომელიც არ იღებს შეყვანს და გამოაქვს ნებისმიერი ცვლილება კლავიატურაზე, რომელიც ინახება UDR0 რეესტრში.
ნაბიჯი 6: ფუნქცია "serial.write"
ჩვენ გამოვიძახებთ იმ ფუნქციას, რომელიც ბაძავს "serial.write" U0putchar (), რომელიც იღებს მონაცემებს UDR0 რეესტრიდან ცვლილების გამოვლენისა და შენახვისას და ამონაწერებს, რომლებიც იცვლება სერიულ მონიტორზე.
ნაბიჯი 7: დაყენების ფუნქცია
ეს არის ძირითადი კონფიგურაციის ფუნქცია, რომელიც გამოიყენებს ჩვენს "serial.begin" იმიტაციას სერიული პორტის ინიციალიზაციისთვის და ინიციალიზებს ჩვენს ბიტ პარამეტრებს ტაიმერის რეგისტრატორებისთვის და დააყენებს PB6 ჩვენს ტონებს.
ნაბიჯი 8: მარყუჟის და ISR ფუნქციები
მარყუჟი ფუნქციონირებს ასე: თუ ცვლილებები გამოვლენილია ჩვენი "serial.available" ფუნქციით, ჩვენი "serial.read" ფუნქცია ინახავს ცვლილებებს და ჩვენი "serial.write" ფუნქცია აყენებს ამ ცვლილებას სერიულ მონიტორში. სანამ ცვლადი i ნაკლებია სიხშირის მასივის ზომაზე, ის ადგენს გამომავალს i- ის პოზიციას ამ მასივში და გამოაქვს სიხშირე ამ პოზიციაზე. ISR ფუნქციონირებს როგორც გადატვირთვა, სადაც თუ სიხშირის მასივის პოზიცია არ არის ტოლი 0 (სხვა სიტყვებით რომ ვთქვათ თუ "q" არ არის დაჭერილი), ის გამოუშვებს სიხშირეს, მაგრამ როდესაც "q" დაჭერილია ის გადატვირთულია. გთხოვთ გაითვალისწინოთ: ეს კოდი იყენებს შეფერხებებს, მაგრამ ეს შეიძლება გაკეთდეს გამორთული წყვეტებით. მე გამოვაქვეყნებ კოდს შეფერხების გარეშე, თუკი მივიღებ მასზე რაიმე მოთხოვნას, მე უბრალოდ ვფიქრობ, რომ შეფერხების ვერსია უფრო სახალისოა.
ნაბიჯი 9: გაყვანილობა
ამ კოდის გაყვანილობა უკიდურესად მარტივია, უბრალოდ PB6– დან გამომავალი მავთული მოათავსეთ პურის დაფაზე, დაუკავშირეთ ზუზერს ან დინამიკს სერიაში და მიაბრუნეთ იგი მიწასთან. შენიშვნა: თუ თქვენ იყენებთ დინამიკს, ჩასვით პატარა რეზისტორი დინამიკის წინ. თუ თქვენ უბრალოდ გსურთ ნახოთ გამომავალი, მაგრამ არ მოუსმინოთ მას, უბრალოდ დაუკავშირეთ PB6 ოსცილოსკოპის წითელ ტყვიას და შავ მიწას მიწასთან.
ნაბიჯი 10: შეაჯამეთ ეს ყველაფერი ერთად
მე დავამატე სრული კოდი ამ ნაბიჯს, ვინაიდან მე ავხსენი მისი ყველა ნაწილი წინა ნაბიჯებში. ის უბრალოდ იღებს კლავიატურის შეყვანას სხვადასხვა სიხშირეზე და ამ სიხშირეს გამოსცემს PB6- ში. ვიმედოვნებთ, რომ მოგეწონათ IDE– ით კოდირების სხვა გზით კითხვა!
ასევე, გთხოვთ მიეცით ხმა მიკროკონტროლერის კონკურსში: D
გირჩევთ:
Arduino– ს დაპროგრამება სხვა Arduino– ს გამოყენებით ბიბლიოთეკის გარეშე გადახვევის ტექსტი: 5 ნაბიჯი
Arduino– ს დაპროგრამება სხვა Arduino– ს გამოყენებით ბიბლიოთეკის გარეშე გადახვევის ტექსტი: Sony Spresense ან Arduino Uno არც ისე ძვირია და არ საჭიროებს დიდ ენერგიას. ამასთან, თუ თქვენს პროექტს აქვს შეზღუდვა ენერგიაზე, სივრცეზე ან ბიუჯეტზე, შეიძლება დაგჭირდეთ Arduino Pro Mini– ს გამოყენება. Arduino Pro Micro– სგან განსხვავებით, Arduino Pro Mi
RC5 დისტანციური მართვის პროტოკოლის დეკოდირება ბიბლიოთეკის გარეშე: 4 ნაბიჯი
RC5 დისტანციური მართვის პროტოკოლის დეკოდირება ბიბლიოთეკის გარეშე: rc5- ის დეკოდირებამდე ჯერ განვიხილავთ რა არის rc5 ბრძანება და როგორია მისი სტრუქტურა. ასე რომ, ძირითადად rc5 ბრძანება გამოიყენება დისტანციურ კონტროლში, რომლებიც გამოიყენება ტელევიზიებში, cd პლეერებში, d2h, სახლის კინოთეატრის სისტემებში და ა.შ. მას აქვს 13 ან 14 ბიტი მოწყობილი
მარტივი ტონის გენერატორი: 7 ნაბიჯი (სურათებით)
მარტივი ტონის გენერატორი: Arduino Tone Generator არის გადამრთველების ერთობლიობა, რომელიც იზიარებს საერთო ტერმინალს GND– ს, ხოლო დანარჩენი ქინძისთავები უკავშირდება 2, 3, 4, 5, 6, 7, 8 და 9 Arduino ციფრულ პინებს და ასევე სპიკერს დაინსტალირებული GND და ციფრულ პინ 11 შორის Arduino Uno– დან
Arduino Synth / ტონის გენერატორი: 5 ნაბიჯი
Arduino Synth / Tone Generator: ეს არის Synth / Tone Generator, რომელიც იყენებს Tone ბრძანებას, რომელიც შექმნილია Arduino– სთვის. მას აქვს 12 ინდივიდუალური გასაღები, რომელთა დაყენება შესაძლებელია კვადრატული ტალღის ნებისმიერი სიხშირის დასაკრავად. მას აქვს უნარი ასწიოს და ჩამოიაროს ოქტავაზე ღილაკით. მას ასევე აქვს ს
ტონის გენერატორი "Jimikky Kammal" Arduino Pro Mini გამოყენებით: 5 ნაბიჯი
ტონის გენერატორი "Jimikky Kammal" Arduino Pro Mini გამოყენებით: ეს არის მარტივი ტონის გენერატორის პროექტი Arduino Pro Mini- ის გამოყენებით. სუპერ ჰიტის სიმღერის ნაწილი " Jimikky Kammal " ფილმის " ველიპადინ პუშტაკამის " ერთფეროვანია განვითარებული. მუსიკალური ნოტები გვხვდება ბუნებაში, როგორც გლუვი და მოძრავი სინუსო