Სარჩევი:
- ნაბიჯი 1: მასალები და კონსტრუქცია
- ნაბიჯი 2: AVR- ის შედუღება LED- ებზე და დინამიკზე
- ნაბიჯი 3: პროგრამირება Attiny13a
- ნაბიჯი 4: შექმნა firmware for Marioman
- ნაბიჯი 5: მარიომანის გაშვება
ვიდეო: მოციმციმე, სიმღერა, მარიომანი: 5 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:22
გამოიყენეთ attiny13a, ორი LED- ები და მისალოცი ბარათის სპიკერი, რომ შექმნათ მოციმციმე Marioman, რომელიც უკრავს სუპერ მარიო ძმების თემატიკურ სიმღერას. ეს შეიძლება იყოს მარტივი დაბალბიუჯეტიანი პროექტი მათთვის, ვინც ეძებს გართობის გზას AVR პროგრამირების შესვენების მიზნით! სიმღერების ნოტები წარმოიქმნება AVR მიკროკონტროლის ერთ პინზე გამომავალი კვადრატული ტალღის მიერ. LED- ები, რომლებიც ალტერნატიულია თითოეულ ნოტზე, დაკავშირებულია 2 ქინძისთავთან, თითოეული ერთი და იგივე ჩიპით.
ნაბიჯი 1: მასალები და კონსტრუქცია
1 attiny13a
www.mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMvu0Nwh4cA1wRKJzS2Lmyk%252bEP0e%2f7dEeq0%3d ფასი: $ 1.40
- 2 LED- ები - ნებისმიერი LED- ები გააკეთებს
- 1 ლითიუმის მონეტის ბატარეა
www.sparkfun.com/commerce/product_info.php?products_id=338 ღირებულება: $ 2.00
1 მონეტის უჯრედის მფლობელი
www.sparkfun.com/commerce/product_info.php?products_id=8822 ღირებულება: $ 1.25
1 პატარა სპიკერი მუსიკალური მისალოცი ბარათიდან
მასალების საერთო ღირებულება ~ 5 აშშ დოლარი ორი LED იყო მიმაგრებული პირდაპირ ორ ქინძისთავზე თითოეული attiny13A. თითოეული შუქდიოდისთვის გამოიყენება ორი ქინძისთავები, მეორე პინი დაბალ დონეზეა გამოსაყენებელი, როგორც სახმელეთო კავშირი. AVR- ზე I/O ქინძისთავების ამჟამინდელი ლიმიტი ხელს შეუშლის LED- ებს ძალიან ბევრი ხატვისგან, ამიტომ რეზისტორი არ არის საჭირო სერია. გამოყენებული სპიკერი ტიპიურია მუსიკალური მისალოცი ბარათში ნაპოვნი, ნებისმიერი პატარა სპიკერი ამას გააკეთებს, იმის გათვალისწინებით, რომ ეს გამოსცემს კვადრატულ ტალღას, არც ისე მნიშვნელოვანია ფიქრი დინამიკის მართვის ან ხმის ხარისხის შესახებ.
ნაბიჯი 2: AVR- ის შედუღება LED- ებზე და დინამიკზე
იმისათვის, რომ შუქდიოდური შუშები მკლავების მსგავსად მიაღწიოს, ერთი პინდი მოხრილია AVR თითოეულ მხარეს. AVR– ის ორიენტაცია ამ გზით აადვილებს დინამიკთან დაკავშირებას (მეორე სურათი), ვინაიდან კავშირები ორ ქვედა ქინძისთავზეა. ესთეტიკისთვის თქვენ გინდათ ჩიპის წინა მხარე მოპირკეთებული, ასე რომ დარწმუნდით, რომ სპიკერი ერთნაირად დგას, როდესაც იგი მიმაგრებულია
ნაბიჯი 3: პროგრამირება Attiny13a
AVR– ის დასაპროგრამებლად უამრავი სხვადასხვა ვარიანტია. ამ პროექტისათვის გამოიყენეს USB ტინი, რომელიც ხელმისაწვდომია როგორც კომპლექტი ქალბატონის საიტიდან https://www.ladyada.net/make/usbtinyisp/index.html AVR პროგრამისტთან დასაკავშირებლად შეგიძლიათ ან მიამაგრეთ მავთულები ქალის სოკეტში და შეაერთეთ ისინი პურის დაფაზე, ან უკეთესად მიიღეთ იაფი AVR პროგრამირების ადაპტერი, როგორიცაა ეს რა
ნაბიჯი 4: შექმნა firmware for Marioman
Attiny13A– ს აქვს 1K პროგრამირებადი ფლეშ და 64bytes SRAM. თანდართულ ტარ ფაილს აქვს საწყისი ფაილი, ასევე ჩამოთვლილი პროგრამული უზრუნველყოფა. C კოდში სამი მასივი გამოიყენებოდა მუსიკის შესაქმნელად
- freq - თითოეული ნოტის სიხშირე
- სიგრძე - თითოეული ნოტის სიგრძე
- დაგვიანებით - პაუზა თითოეულ ნოტს შორის
სიხშირის მასივს არ გააჩნია ფაქტობრივი სიხშირეები, არამედ მნიშვნელობა TTCROB რეგისტრში ჩასასმელად PB0 პინიდან კვადრატული ტალღის შესაქმნელად. აქ არის კვადრატული ტალღის წარმოქმნის გამოთვლებისა და პინ კონფიგურაციის მოკლე შინაარსი:
- Attiny13A– ს აქვს შიდა ოსცილატორი 9.6 MHz– ზე
- შიდა საათის IO არის oscillator იყოფა 8 ან 1.2MHz
- შიდა ქრონომეტრი დაყენებულია 8 ბიტიან რეგისტრში, რომ დაითვალოს ყოველი საათის ციკლი 8 – ის წინასწარი მასშტაბით.
- ეს იწვევს 1 ტკიპის ტოლფასი 1 / (1.2MHz / 8) =.006667ms
- Attiny13A არის კონფიგურირებული, რომ შეადაროს ის, რაც არის 8 ბიტიანი TCCR0B რეგისტრში ტაიმერთან და შეცვალოს პინი, როდესაც ისინი ემთხვევა.
- მაგალითად, კვადრატული ტალღის წარმოქმნის მიზნით 524Hz (ერთი ოქტავა შუა C- ზე ზემოთ), რომლის პერიოდია 1.908ms.
1.908ms = 286 საათის ტკიპები (1.908/.0067) გაყავით 286 2 -ზე, რომ გადართოთ pin t/2 (286/2 = 143) ჩადეთ 143 TTCR0B რეგისტრში ამ შენიშვნის შესაქმნელად. ეს არის ყველა საჭირო კოდი ტაიმერის დასაყენებლად შეადარეთ და გამოუშვით კვადრატული ტალღა:
TCCR0A | = (1 << WGM01); // ტაიმერის 1 კონფიგურაცია CTC რეჟიმში TCCR0A | = (1 << COM0A0); // გადართვა OC0A შედარების მატჩზე TCCR0B | = (1 << CS01); // clk/8 prescale TTCR0B = 143; // წარმოქმნის კვადრატულ ტალღას 524 ჰც -ზებგერების და მათ შორის პაუზების გადადების მიზნით გამოიყენება მარტივი დაყოვნების ფუნქცია
ბათილი ძილი (int ms) {int cnt; for (cnt = 0; cnt <(ms); cnt ++) {int i = 150; ხოლო (i--) {_asm ("NOP"); }}}ეს ითვლის 150 -დან, სადაც თითოეული NOP ციკლი არის დაახლოებით.006667ms. ბოლო რასაც კოდი აკეთებს არის მასივების მარყუჟი, მუსიკის გენერირება და ორი LED- ის დახუჭვა. ეს კეთდება მარყუჟის უწყვეტად შემდეგი კოდით
const uint8_t freq PROGMEM = {… data}; const uint8_t სიგრძე PROGMEM = {… data}; const uint8_t დაგვიანებით PROGMEM = {… data};… while (1) {for (cnt = 0; cnt < 156; cnt ++) {OCR0A = pgm_read_byte (& freq [cnt]); output_toggle (PORTB, PB3); output_toggle (PORTB, PB4); ძილი (pgm_read_byte (& სიგრძე [cnt])); output_toggle (PORTB, PB3); output_toggle (PORTB, PB4); // ტაიმერის გაჩერება TCCR0B = 0; ძილი (pgm_read_word (& დაგვიანება [cnt])); // დაწყების ტაიმერი TCCR0B | = (1 << CS01); // clk/8 წინასწარი ზომა}}სიხშირის/სიგრძის/დაგვიანების მასივებში არის 156 ელემენტი, ეს მარყუჟი მათ კვეთს. PIN PB3 და PB4 არის თითოეული გადართული, ასე რომ ისინი შეიცვლება თითოეულ ნოტთან ერთად პირველი ძილი არის ნოტის სიგრძე, რომელსაც ჩვენ ვთამაშობთ OCR0A რეგისტრის შესაბამისი მნიშვნელობის დაყენების შემდეგ. მეორე ძილი არის პაუზა ნოტებს შორის, რომელსაც ჩვენ ვთამაშობთ. ზემოთ მოყვანილ კოდში თქვენ შეიძლება შეამჩნიოთ ორი ფუნქცია pgm_read_byte () და pgm_read_word (), ასევე საკვანძო სიტყვა PROGMEM. ჩამონტაჟებული ჩიპით, როგორიცაა attiny, SRAM– ის რაოდენობა ძალიან შეზღუდულია, ამ შემთხვევაში მხოლოდ 64 ბაიტი. მასივები, რომელსაც ჩვენ ვიყენებთ სიხშირის/შეფერხების/სიგრძის ყველა მონაცემისთვის, გაცილებით დიდია ვიდრე 64 ბაიტი და, შესაბამისად, შეუძლებელია მათი მეხსიერებაში ჩატვირთვა. სპეციალური PROGMEM avr-gcc დირექტივის გამოყენებით ეს დიდი მონაცემთა მასივები ხელს უშლის მეხსიერებაში ჩატვირთვას, სამაგიეროდ იკითხება ფლეშიდან.
ნაბიჯი 5: მარიომანის გაშვება
ზემოთ მოყვანილი ვიდეო აჩვენებს მარიომანს მოქმედებაში. საშუალო ენერგომოხმარება არის დაახლოებით 25mA, ასე რომ მას შეუძლია დახუჭოს და ხმაური გაუწიოს ლითიუმის მონეტის უჯრედის გაშრობამდე დაახლოებით 10 საათის განმავლობაში. ერთადერთი გზა მისი ჩართვისა და გამორთვისთვის არის მონეტის უჯრედის ბატარეის ამოღება, მასალებში ჩამოთვლილი მყარია კარგად შეეფერება ამას. გადართვა შეიძლება დაემატოს, მაგრამ არის რაღაც სათქმელი მისი სიმარტივის შესანარჩუნებლად.
გირჩევთ:
Switch-Adapt სათამაშოები: საფეხურზე ასვლა სიმღერა სათამაშო: 7 ნაბიჯი
გადართვა-მორგება სათამაშოები: საფეხურზე ასვლა სათამაშო: სათამაშოების ადაპტაცია ხსნის ახალ გზებს და მორგებულ გადაწყვეტილებებს, რათა შეზღუდული საავტომობილო შესაძლებლობების ან განვითარების შეზღუდული შესაძლებლობის მქონე ბავშვებს შეეძლოთ დამოუკიდებლად დაუკავშირდნენ სათამაშოებს. ხშირ შემთხვევაში, ბავშვები, რომლებსაც სჭირდებათ ადაპტირებული სათამაშოები, ვერ ახერხებენ
არდუინოს ფორტეპიანო ხელით და 7 წინასწარ განსაზღვრული სიმღერა: 7 ნაბიჯი
Arduino Piano With Manual and 7 Presets Songs: Arduino Piano Keyboard interfacing with LCD has 2 mode.The Manual Mode & წინასწარ განსაზღვრული რეჟიმი. მე გამოვიყენე 7 ღილაკი მარტივი 7 ღილაკის ფორტეპიანოსთვის და 1 ღილაკი Setup Mode– ისთვის 7 წინასწარ განსაზღვრულ სიმღერაზე გადასასვლელად .. წინასწარ რეჟიმის სიმღერები: დააწკაპუნეთ დაყენების რეჟიმის ღილაკზე fi
გააკეთეთ დაბალი ღირებულების სენსორული სიმღერა წუთებში!: 10 ნაბიჯი (სურათებით)
გააკეთეთ დაბალი ღირებულების სენსორული ბილიკი წუთებში!: ჩემს წინა ინსტრუქციებში მე გაჩვენეთ, თუ როგორ უნდა გააკეთოთ მატარებლის მოდელის განლაგება ავტომატური საფარით. მან გამოიყენა ტრეკის სეგმენტი, სახელწოდებით "სენსორული სიმღერა". საკმაოდ სასარგებლო რამ არის რკინიგზის მოდელის განლაგება. მე შემიძლია გამოვიყენო შემდეგისთვის: დაბლოკვა
Money Heist BELLA CIAO სიმღერა Arduino Uno– ში: 9 ნაბიჯი (სურათებით)
Money Heist BELLA CIAO სიმღერა არდუინო უნოში: ამ გაკვეთილში მე გაჩვენებთ თუ როგორ შეგიძლიათ ითამაშოთ Money Heist სიმღერა ბელა სიაო ნებისმიერ არდუინოში პიეზოელექტრული ზუზუნის დახმარებით. ეს მაგარი პროექტი ეძღვნება Money Heist- ის ყველა თაყვანისმცემელს მთელს მსოფლიოში. მაშ, დავიწყოთ
PUBG თემა სიმღერა+ანიმაცია არდუინოსთან ერთად !: 13 ნაბიჯი (სურათებით)
PUBG თემის სიმღერა+ანიმაცია არდუინოსთან ერთად !: გამარჯობა და კეთილი იყოს თქვენი მობრძანება ამ სახალისო ინსტრუქციურად! ვიმედოვნებ, რომ ყველანი კარგად ხართ და ჯანმრთელები ხართ. ეს პატარა, მაგრამ საოცარი პროექტი არის PUBG თემის სიმღერის დაკვრაზე და თუნდაც თამაშების ანიმაციის შექმნაზე არდუინოს გამოყენებით. გამოყენებული კომპონენტები ძალიან