Мазмуну:
- 1 -кадам: материалдар жана курулуш
- 2 -кадам: AVR диоддоруна жана спикерге ширетүү
- 3 -кадам: Attiny13a программалоо
- 4 -кадам: Marioman үчүн жабдыкты түзүү
- 5 -кадам: Мариоманды бош кое берүү
Video: Жаркылдоо, Ырдоо, Мариоман: 5 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:43
Attiny13a, эки светодиоддорду жана куттуктоо карта спикерлерин колдонуп, Super Mario Brothers темасындагы ырды ойнотуучу жаркыраган Мариоманды түзүңүз. ырлардын ноталары AVR микроконтроллеринин бир төөнөгүчүндө чыгарылган төрт бурчтуу толкун аркылуу жаратылган. Ар бир нотада кезектешип турган диоддор бир чиптин ар бирине 2 төөнөгүчкө туташтырылган.
1 -кадам: материалдар жана курулуш
1 attiny13a
www.mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMvu0Nwh4cA1wRKJzS2Lmyk%252bEP0e%2f7dEeq0%3dCost: $ 1.40
- 2 светодиод - каалаган светодиод жасайт
- 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нын ар бирине эки казыкка тиркелет. Эки казык ар бир LED үчүн колдонулат, экинчи пин жерге туташуу катары колдонулат. AVRдеги I/O казыктарынын учурдагы чеги светодиоддордун өтө көп тартылышына жол бербейт, андыктан резистор туташуу үчүн зарыл эмес. Колдонулган спикер музыкалык куттуктоо баракчасында кездешкен типтүү, кичинекей спикер бул чарчы толкундун үнүн чыгарып жатканын эске алып, спикерди же үн сапатын айдап кетүү жөнүндө тынчсыздануунун анча деле мааниси жок.
2 -кадам: AVR диоддоруна жана спикерге ширетүү
Светодиоддор колу сыяктуу жетиши үчүн, AVRдин ар бир тарабында бир пин кадалат. AVRди мындай багыттоо спикерге (экинчи сүрөт) туташууну жеңилдетет, анткени туташуулар эки астыңкы казыкта. Эстетика үчүн чиптин алдыңкы жагын карагыңыз келет, андыктан спикер ошол эле жакка караганына ишениңиз. ал тиркелет
3 -кадам: Attiny13a программалоо
AVR программалоо үчүн көптөгөн варианттар бар бул долбоор үчүн USBtiny ледиада сайтынан комплект катары жеткиликтүү болгон https://www.ladyada.net/make/usbtinyisp/index.html AVRди программистке туташтыруу үчүн же аялдын розеткасына зымдарды туташтырып, аларды панельге сайыңыз же андан көрө арзан AVR программалоо адаптерин алыңыз:
4 -кадам: Marioman үчүн жабдыкты түзүү
Attiny13A программалуу флештин 1К жана 64 байт SRAMге ээ. Тиркелген tar файлынын баштапкы файлы жана жүктөө үчүн камтылган программасы бар. C кодундагы үч массив музыканы жаратуу үчүн колдонулган.
- freq - ар бир нотанын жыштыктары
- узундук - ар бир нотанын узундугу
- кечигүү - ар бир нотанын ортосунда пауза
Жыштык массиви чыныгы жыштыктарга ээ эмес, тескерисинче, квадрат толкунду түзүү үчүн TTCROB реестрине коюла турган мааниге ээ эмес.
- Attiny13A 9.6МГцке орнотулган ички осцилляторго ээ
- IO үчүн ички саат 8 же 1.2МГцке бөлүнгөн осциллятор
- Ички таймер 8 биттик реестрде орнотулган, ал ар бир циклди 8ге чейинки баа менен эсептейт.
- Бул 1 / (1.2MHz / 8) =.006667ms барабар болгон бир белгини алып келет
- Attiny13A 8 биттик TCCR0B реестриндеги нерселерди таймер менен салыштырып, алар төп келгенде төөнөгүчтү алмаштыруу үчүн конфигурацияланган.
- Мисалы, 524 Гц (орточо Стин бир октавасы) чейрегиндеги толкунду жаратуу үчүн 1.908 мс.
1.908ms = 286 сааттардын кенелери (1.908/.0067) 286ды 2ге бөлүп, пинди t/2ге которуңуз (286/2 = 143) Бул нотаны түзүү үчүн TTCR0B реестрине 143 коюңуз. Бул бардык керектүү код таймерди орнотуу үчүн, чарчы толкунду салыштырып, чыгарыңыз:
TCCR0A | = (1 << WGM01); // CTC режими үчүн таймер 1ди конфигурациялоо TCCR0A | = (1 << COM0A0); // салыштыруу матчында OC0A которуштуруу TCCR0B | = (1 << CS01); // clk/8 prescale TTCR0B = 143; // 524 Гцте квадрат толкунду жарататОбондорду жана тыныгууларды кечиктирүү үчүн жөнөкөй кечигүү функциясы колдонулган
бош уктоо (int ms) {int cnt; үчүн (cnt = 0; cnt <(ms); cnt ++) {int i = 150; while (i--) {_asm ("NOP"); }}}Бул 150дөн баштап ар бир NOP циклинин болжол менен.006667ms. Соңку коду массивдерди аралап, музыканы жаратып, эки LEDди жаркылдатып турат.
const uint8_t freq PROGMEM = {… data}; const uint8_t length PROGMEM = {… data}; const uint8_t delay 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 (& length [cnt])); output_toggle (PORTB, PB3); output_toggle (PORTB, PB4); // токтоочу таймер TCCR0B = 0; уйку (pgm_read_word (& кечигүү [cnt]))); // таймерди баштоо TCCR0B | = (1 << CS01); // clk/8 prescale}}Жыштыктар/узундуктар/кечигүү массивдеринде 156 элемент бар, бул цикл аларды кесип өтөт. PB3 жана PB4 төөнөгүчтөрү ар бири которулат, ошондуктан алар ар бир нота менен алмашат. Биринчи уйку - бул OCR0A реестрин тиешелүү мааниге койгондон кийин ойногон нотанын узундугу. Экинчи уйку - биз ойногон ноталардын ортосундагы тыныгуу. Жогорудагы коддо сиз pgm_read_byte () жана pgm_read_word () эки функциясын, ошондой эле PROGMEM ачкыч сөзүн байкап калышыңыз мүмкүн. Бардык жыштык/кечиктирүү/узундук маалыматтары үчүн биз колдонуп жаткан массивдер 64 байттан чоңураак, ошондуктан эстутумга жүктөлбөйт. Атайын PROGMEM avr-gcc көрсөтмөсүн колдонуу менен, бул чоң массивдердин эс тутумга жүктөлүшүнө жол берилбейт, анын ордуна алар флештен окулат.
5 -кадам: Мариоманды бош кое берүү
Жогорудагы видео Мариомандын иш -аракетин көрсөтөт. Орточо энергия керектөөсү болжол менен 25мА, андыктан ал литий монета клеткасын төгүүдөн 10 сааттай мурун көзүн ирмеп, ызы -чуу чыгара алат. Аны күйгүзүүнүн жана өчүрүүнүн бирден -бир жолу монетанын клеткасынын батареясын алып салуу болуп саналат. бул үчүн жакшы ылайыктуу. Которууну кошсо болот, бирок аны жөнөкөй сактоо үчүн айта турган нерсе бар.
Сунушталууда:
Ардуино: Ырдоо Туулган күн белектери: 14 кадам
Ардуино: Ырдоо Туулган Куту белектери үчүн: Бул Ырдаган Туулган Кутуча туулган күн белектерин таңгактоо максатында жасалган, анын жардамы менен Ардуино атайын функцияларды камсыз кылат, анын ичинде LED шамды ырдоо жана жарыктандыруу. Туулган күн ырын ырдоо жана LED лампаларын күйгүзүү жөндөмдөрү менен
Ырдоо Arduino Щелкунчик: 8 кадам
Ырдап жаткан Arduino Щелкунчик: Бул жаңгакчы кирүүчү аудионун негизинде оозун ачат. 3 сааттын ичинде оңой эле жасалышы мүмкүн, тилемчи бөлүктөрдүн үймөгүнөн ырдаган жаңгакка өтөт. Бул долбоор үчүн сизге кыймылдуу оозу менен Щелкунчик, прототип керек болот
Visuino Pro Macchina Interface OBDII Баштоо LED Жаркылдоо: 3 кадам
Visuino Pro Macchina Interface OBDII Баштоо LED Жаркылдоо: Тасманын программасы MACCHINA M2 OBDII Которуу программасы: MACCHINA M2 OBDII интерфейсинин эң жөнөкөй мисалын көрсөткөн видео
Ырдоо Bust Prop: 7 кадам
Singing Bust Prop: Сиз качандыр бир кезде Haunted Mansionдагы ырдаган бюсттар кантип иштегенин ойлоп көрдүңүз беле же аларды жакшы жасоого аракет кылгыңыз келдиби, бул Instructable аларды кантип жасоону жана чындыгында жөнөкөй экенин көрсөтөт
Жакшыраак ырдоо үчүн суу өткөргүч динамик: 12 кадам (сүрөттөр менен)
Жакшыраак ырдоо үчүн суу өткөрбөй турган спикер: Эгерде сиз мага окшош болсоңуз-жана мен сизди билем-сиз душта ырдаганды СҮЙӨСҮЗ жана сиз ага Мен коркунучтуу ырдаган үнгө ээ болуу үчүн эч нерсе кыла албайм, бирок чындыгында мени, жана, балким, менин үнүмдүн чегинде жүргөндөрдүн баарын