Orodha ya maudhui:

Jenereta ya Toni ya Arduino Isiyo na Maktaba au Kazi za Siri (Pamoja na Usumbufu): Hatua 10
Jenereta ya Toni ya Arduino Isiyo na Maktaba au Kazi za Siri (Pamoja na Usumbufu): Hatua 10

Video: Jenereta ya Toni ya Arduino Isiyo na Maktaba au Kazi za Siri (Pamoja na Usumbufu): Hatua 10

Video: Jenereta ya Toni ya Arduino Isiyo na Maktaba au Kazi za Siri (Pamoja na Usumbufu): Hatua 10
Video: Winson WCS1800 WCS2750 WCS1500 Hall Effect Current Sensor with dispaly with over current protection 2024, Novemba
Anonim
Jenereta ya Toni ya Arduino Isiyo na Maktaba au Kazi za Siri (Pamoja na Usumbufu)
Jenereta ya Toni ya Arduino Isiyo na Maktaba au Kazi za Siri (Pamoja na Usumbufu)

Hili sio jambo ambalo kwa kawaida ningefanya kufundishwa, napendelea ujumi wangu wa chuma, lakini kwa kuwa mimi ni mwanafunzi wa uhandisi wa umeme na lazima nichukue darasa juu ya watawala wadogo (Ubunifu wa Mifumo Iliyopachikwa), nilifikiri ningefundisha juu ya moja ya miradi yangu. Wakati mwanzoni nilifanya mradi na wengine kwa darasa hili, niligundua kuwa kuna mafunzo machache sana ambayo hayatumii kazi za maktaba ya arduino au kazi za serial, ambayo ni sababu nyingine nilidhani hii itakuwa nzuri kufundisha.

Nambari hii imeundwa kwa Mdhibiti mdogo wa Atmega 2560, kwa hivyo ikiwa unataka kuitumia kwenye bodi nyingine utahitaji kubadilisha rejista za anwani kwenye nambari kulingana na mwongozo wako wa watumiaji. Wazo la kimsingi nyuma ya nambari ni kwamba wakati wowote unapoingiza kitufe kwenye kibodi kwenye mfuatiliaji wa serial, mega ya arduino itatoa masafa fulani kulingana na ufunguo gani unabonyeza, na "q" kuiweka upya. Nilifanya hivyo ili "a" itoe frequency ya gorofa na "A" itatoa frequency kali, "b" ikitoa B gorofa, "c" kwa C gorofa, "C" kwa C mkali, na kadhalika. Nambari kamili imepakiwa mwishoni, lakini kila hatua itavunja nambari vipande vipande kwa hivyo ni rahisi kuelezea.

Hatua ya 1: Kufafanua Anwani za Sajili

Kufafanua Anwani za Sajili
Kufafanua Anwani za Sajili

Hatua hii ni rahisi, ikiwa unatumia atmega 2560, unahitaji tu kutumia anwani nilizotumia, ingawa ukitumia bodi iliyo na chip tofauti, utahitaji kupata anwani za kila moja ya rejista hizi kwenye mwongozo wa mtumiaji wa chips. Ufafanuzi hapo juu ni kanuni tu ambazo zitatumika kwa kazi zetu baadaye. Tunabainisha anwani kama ambazo hazijasainiwa kwa sababu hatutaki mkusanyaji afanye fujo nao.

Hatua ya 2: Mpangilio na Vigeuzi vya Ulimwenguni

Safu na Vigeuzi vya Ulimwenguni
Safu na Vigeuzi vya Ulimwenguni
Safu na Vigeuzi vya Ulimwenguni
Safu na Vigeuzi vya Ulimwenguni
Safu na Vigeuzi vya Ulimwenguni
Safu na Vigeuzi vya Ulimwenguni

Hapa tunataka kufafanua safu ya Mzunguko ambayo itakuwa na masafa ambayo kila kitufe kinapaswa kutolewa. Thamani hizi zimehesabiwa kutoka kwa masafa halisi ya maandishi, na kwa uaminifu nilisahau jinsi nilivyozipata, lakini ndio maadili sahihi wakati niliwajaribu kwenye oscilloscope ili kuhakikisha. Tunafafanua pia safu ya maelezo ambayo ina funguo zote za kubonyeza kila toni, na vile vile vigeuzi tutakavyohitaji kwa kazi zetu za baadaye.

Hatua ya 3: Kazi ya "serial.begin"

The
The

Tutaita kazi yetu ya kawaida ambayo inaiga kazi ya "serial.begin" U0init (). Inachukua baudrate inayotakiwa kama pembejeo na kuanza bandari ya serial kwenye baudrate hiyo.

Hatua ya 4: Kazi ya "serial.available"

The
The

Tutaita kazi inayoiga "serial.ava inapatikana" U0kbhit (). Haichukui pembejeo lakini badala yake hugundua ikiwa kuna mabadiliko yaliyofanywa kwenye kibodi kwa kutumia hali ya RDA na inarudi kweli wakati mabadiliko yanapatikana.

Hatua ya 5: Kazi ya "serial.read"

The
The

Tutaita kazi ambayo inaiga kazi ya "serial.read" U0getchar (), ambayo haichukui pembejeo na matokeo yoyote ya mabadiliko yanayofanywa kwenye kibodi, ambayo huhifadhiwa kwenye rejista ya UDR0.

Hatua ya 6: Kazi ya "serial.write"

The
The

Tutaita kazi ambayo inaiga "serial.write" U0putchar (), ambayo inachukua data kutoka kwa rejista ya UDR0 wakati mabadiliko yanagunduliwa na kuhifadhiwa, na matokeo ambayo yanabadilisha kurudi kwa mfuatiliaji wa serial.

Hatua ya 7: Kazi ya Usanidi

Kazi ya Usanidi
Kazi ya Usanidi

Hii ndio kazi ya msingi ya usanidi ambayo itatumia uigaji wetu wa "serial.begin" kuanzisha bandari ya serial, na itaanzisha mipangilio yetu kidogo ya rejista za timer na kuweka PB6 kutoa sauti zetu.

Hatua ya 8: Kazi za Kitanzi na ISR

Kazi za Kitanzi na ISR
Kazi za Kitanzi na ISR

Kitanzi hufanya kazi hivi: ikiwa mabadiliko hugunduliwa na kazi yetu ya "serial.available", kazi yetu ya "serial.read" huhifadhi mabadiliko hayo, na kazi yetu ya "serial.write" inaweka mabadiliko hayo kwenye mfuatiliaji wa serial. Kwa muda mrefu kama kutofautisha i ni chini ya saizi ya safu ya masafa, itaweka pato kuwa msimamo wa i katika safu hiyo, ikitoa masafa katika nafasi hiyo. ISR inafanya kazi kama kuweka upya, ambapo ikiwa nafasi ya safu ya masafa hailingani na 0 (kwa maneno mengine ikiwa "q" haikushinikizwa), itatoa masafa, lakini wakati "q" imesisitizwa itaweka upya. Tafadhali kumbuka: nambari hii hutumia usumbufu, lakini inaweza kufanywa na usumbufu wa walemavu. Nitaandika nambari bila kukatiza ikiwa nitapata ombi lolote, nadhani toleo la kukatiza ni la kufurahisha zaidi.

Hatua ya 9: Wiring

Wiring
Wiring

Wiring ya nambari hii ni rahisi sana, weka waya wa pato kutoka PB6 hadi kwenye ubao wa mkate, unganisha buzzer au spika mfululizo na hiyo, na uiunganishe tena chini. Kumbuka: ukitumia spika, weka kontena dogo mbele ya spika. Ikiwa unataka tu kuona pato lakini usilisikie, unganisha tu PB6 kwa risasi nyekundu ya oscilloscope na risasi nyeusi hadi ardhini.

Hatua ya 10: Kuiweka Pamoja

Niliongeza nambari kamili kwa hatua hii, kwani nimeelezea sehemu zake zote katika hatua zilizopita. Inachukua tu ingizo la kibodi kwa masafa tofauti na matokeo ya masafa kwa PB6. Natumahi umefurahiya kusoma njia tofauti ya kuweka nambari na IDE!

Pia, tafadhali pigia kura hii kwenye shindano la Microcontroller: D

Ilipendekeza: