Мазмұны:
- 1 -қадам: материалдар мен құрылыс
- 2 -қадам: AVR диодты және динамикке дәнекерлеу
- 3 -қадам: Attiny13a бағдарламалау
- 4 -қадам: Marioman үшін микробағдарламаны құру
- 5 -қадам: Мариоманды босатыңыз
Бейне: Жыпылықтау, ән айту, Мариоман: 5 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:28
Super Mario Brothers тақырыптық әнді ойнайтын жыпылықтайтын Мариоман жасау үшін attiny13a, екі жарық диодты және сәлемдесу картасының динамигін қолданыңыз. Бұл AVR бағдарламалаудың қызықты жолын іздейтін кез келген адам үшін арзан бағадағы жоба болуы мүмкін! әндердің ноталары AVR микроконтроллерінің бір түйреуішінде шығатын төртбұрышты толқынмен жасалады. Әр жазбада ауысатын светодиодтар бір чиптің әрқайсысына 2 түйреуішке қосылады.
1 -қадам: материалдар мен құрылыс
1 аттин13а
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 Екі светодиоды тікелей екі түйреуішке бекітілген13A. Әр светодиод үшін екі түйреуіш пайдаланылады, екінші түйреуіш жерге қосылу үшін төмен орнатылады. AVR -дегі енгізу -шығару түйреуіштерінің ағымдағы шегі светодиодтардың шамадан тыс тартылуына жол бермейді, сондықтан оларды қосу үшін резистор қажет емес. Қолданылатын динамик музыкалық сәлемдесу картасына тән, кез келген кішкентай спикер бұл шаршы толқынды үн шығаратынын ескере отырып жасайды, динамикті басқару немесе дыбыс сапасы туралы алаңдау маңызды емес.
2 -қадам: AVR диодты және динамикке дәнекерлеу
Жарық диодтары қолдар сияқты жетуі үшін, AVR -дің әр жағында бір түйреуіш иілген. AVR -ді осылай бағыттау динамикке (екінші сурет) қосылуды жеңілдетеді, себебі қосылымдар төменгі екі түйреуіште. Эстетика үшін чиптің алдыңғы жағын сыртқа қаратқыңыз келеді. ол бекітілген.
3 -қадам: Attiny13a бағдарламалау
AVR бағдарламалаудың көптеген нұсқалары бар, бұл жоба үшін USBtiny қолданылды, ол ladyada сайтынан жинақ ретінде қол жетімді https://www.ladyada.net/make/usbtinyisp/index.html АВР -ны бағдарламашыға қосу үшін сымдарды аналық розеткаға жалғап, оларды тақтаға қосыңыз немесе одан да жақсы AVR бағдарламалау адаптерін алыңыз, мысалы: штепсельді жалғау үшін 3x2 ерлер тақырыптары бар..
4 -қадам: Marioman үшін микробағдарламаны құру
Attiny13A -де 1K бағдарламаланатын жарқыл және 64 байт SRAM бар. Қосылған tar файлында бастапқы файл, сонымен қатар жүктеуге арналған микробағдарлама бар. Музыканы құру үшін c кодының үш массиві қолданылған.
- жиілік - әр нотаның жиіліктері
- ұзындық - әр нотаның ұзындығы
- кешіктіру - әр нотаның арасындағы үзіліс
Жиіліктер жиілігінде нақты жиіліктер жоқ, керісінше PB0 түйреуішінің квадраттық толқынын генерациялау үшін TTCROB регистріне енгізілетін мән бар. Мұнда шаршы толқын генерациясы үшін есептеулер мен түйреуіштердің қысқаша мазмұны берілген:
- Attiny13A 9,6 МГц ішкі осцилляторы бар
- IO үшін ішкі сағат - осциллятор 8 немесе 1,2 МГц -ке бөлінеді
- Ішкі таймер 8 биттік тізілімде орнатылған, ол әрбір сағат циклін 8 -ге дейінгі бағамен есептейді.
- Нәтижесінде 1 / (1.2МГц / 8) =.006667 мс тең болатын бір белгі пайда болады
- 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 алдын ала шкаласы TTCR0B = 143; // 524 Гц жиіліктегі шаршы толқын шығарадыДыбыстарды және олардың арасындағы кідірістерді кешіктіру үшін қарапайым кешіктіру функциясы қолданылды
бос ұйқы (int ms) {int cnt; үшін (cnt = 0; cnt <(ms); cnt ++) {int i = 150; while (i--) {_asm («NOP»); }}}Бұл әрбір NOP циклі шамамен.006667ms болатын 150 -ден бастап есептеледі. Кодтың соңғы әрекеті - массивтерді айналдыру, музыканы шығару және екі жарық диодты жыпылықтау.
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 (& жиілік [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 (& delay [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 сағат бойы жыпылықтап, шу шығаруы мүмкін. Оны қосудың және өшірудің жалғыз жолы - монеталық батареяны шығарып алу. бұл үшін өте қолайлы. Қосқышты қосуға болады, бірақ оны қарапайым ұстау үшін айту керек.
Ұсынылған:
Arduino бағдарламалау ұялы байланыс арқылы -- Ардуинодроид -- Android үшін Arduino Ide -- Жыпылықтау: 4 қадам
Arduino бағдарламалау ұялы байланыс арқылы || Ардуинодроид || Android үшін Arduino Ide || Blink: Қосымша бейнелер үшін менің youtube каналыма жазылыңыз …… Arduino - бұл USB арқылы тікелей бағдарламаланатын тақта. Бұл колледж мен мектептің жобаларына немесе тіпті өнімдердің прототипіне өте қарапайым және арзан. Көптеген өнімдер бірінші кезекте мен үшін
Жарық жыпылықтау детекторы: 3 қадам (суреттермен)
Жарық жыпылықтау детекторы: Мені электрониканың бізбен бірге жүретіні мені әрқашан қызықтырды. Бұл барлық жерде ғана. Біз жарық көздері туралы айтатын болсақ (жұлдыз сияқты табиғи емес), біз бірнеше параметрлерді ескеруіміз керек: жарықтық, түс және
Ардуино Щелкунчикті айту: 8 қадам
Ән айту Arduino Щелкунчик: Бұл жаңғақшату кіретін дыбысқа негізделген аузын ашады. Қайыршы үйінділерден ән айтатын жаңғақшаларға дейін 3 сағат ішінде оңай орындалады. Бұл жоба үшін сізге аузы қозғалатын Щелкунчик, прототип қажет болады
Raspberry Pi бар жарық диодты жыпылықтау - Raspberry Pi -де GPIO түйреуіштерін қалай қолдануға болады: 4 қадам
Raspberry Pi бар жарық диодты жыпылықтау | Raspberry Pi -де GPIO түйреуіштерін қалай қолдануға болады: Сәлеметсіздер ме, осы нұсқаулықта біз Raspberry pi -дің GPIO -ларын қолдануды үйренеміз. Егер сіз бір кездері Arduino -ны қолданған болсаңыз, онда біз светодиодты қосқышты және т.б. оның түйреуіштеріне қосып, оны жұмыс істетуге болатынын білетін шығарсыз. светодиодты жыпылықтатыңыз немесе қосқыштан кіріс алыңыз
Нұсқаулыққа қалай алғыс айту керек: 16 қадам (суреттермен)
Нұсқаулықтарға қалай алғыс айтуға болады: Мен 2008 жылдың 25 шілдесінің ортасында Instructables чат бөлмесінде отырып, әңгімеге өз үлесімді қосқан кезде, менің ойыма бір идея келді: " Бұл мені керемет әңгімемен бірге алып келді. әр түрлі елдерден келген адамдар