Агуулгын хүснэгт:

Номын сангүй эсвэл цуваа функцгүй Arduino ая үүсгэгч (тасалдалтай): 10 алхам
Номын сангүй эсвэл цуваа функцгүй Arduino ая үүсгэгч (тасалдалтай): 10 алхам
Anonim
Номын сангүй эсвэл цуваа функцгүй Arduino ая үүсгэгч (тасалдалтай)
Номын сангүй эсвэл цуваа функцгүй Arduino ая үүсгэгч (тасалдалтай)

Энэ бол миний зааж сургадаг зүйл биш, би төмөр хийцийг илүүд үздэг, гэхдээ би цахилгааны инженерийн оюутан тул микроконтроллер (Embedded System Design) -ийн хичээлд хамрагдах ёстой болохоор зааварчилгаа өгөх болно гэж бодсон. миний төслүүдийн нэг. Би анх энэ төслийг төсөл болон бусад хүмүүст зориулан хийхдээ arduino номын сангийн функц, цуваа функцийг ашигладаггүй хичээлүүд бараг байдаггүйг олж мэдсэн бөгөөд энэ нь надад сайн сургамжтай гэж бодсон бас нэг шалтгаан юм.

Энэ код нь Atmega 2560 микроконтроллерт зориулагдсан тул хэрэв та үүнийг өөр самбар дээр ашиглахыг хүсвэл хянагчийн хэрэглэгчийн гарын авлагад үндэслэн кодын хаягийн бүртгэлийг өөрчлөх шаардлагатай болно. Кодын гол санаа нь та гар дээрх товчлуурыг цуваа дэлгэц рүү оруулах болгондоо arduino мега нь таны дарсан товчлуур дээр үндэслэн тодорхой давтамж гаргаж, "q" товчлуурыг дахин тохируулах болно. Би үүнийг "a" нь A хавтгай давтамжийг, "A" нь A -ийн хурц давтамжийг, "b" -г B хавтгайг, "c" -г "C", "C" -г "хурц" гэх мэтийг гаргахаар хийсэн. Бүрэн кодыг төгсгөлд нь байршуулдаг боловч алхам бүр нь кодыг хэсэг болгон задлах тул тайлбарлахад илүү хялбар болно.

Алхам 1: Бүртгэлийн хаягийг тодорхойлох

Бүртгэлийн хаягийг тодорхойлох
Бүртгэлийн хаягийг тодорхойлох

Энэ алхам нь маш хялбар бөгөөд хэрэв та atmega 2560 ашиглаж байгаа бол та миний ашигласан хаягийг ашиглах хэрэгтэй, гэхдээ хэрэв та өөр чиптэй самбар ашигладаг бол эдгээр регистр тус бүрийн хаягийг өөрийн компьютер дээрээс олох хэрэгтэй болно. чипсийн хэрэглэгчийн гарын авлага. Дээд талд байгаа тодорхойлолтууд нь бидний функцүүдэд ашиглагдах тогтмолууд юм. Бид хөрвүүлэгчийг эмх замбараагүй болгохыг хүсэхгүй байгаа тул хаягийг тогтворгүй гарын үсэггүй гэж тодорхойлдог.

Алхам 2: Массив ба дэлхийн хувьсагчид

Массив ба дэлхийн хувьсагчид
Массив ба дэлхийн хувьсагчид
Массив ба дэлхийн хувьсагчид
Массив ба дэлхийн хувьсагчид
Массив ба дэлхийн хувьсагчид
Массив ба дэлхийн хувьсагчид

Энд бид түлхүүр бүрийн гаргах ёстой бүх давтамжийг агуулсан давтамжийн массивыг тодорхойлохыг хүсч байна. Эдгээр утгыг бодит тэмдэглэлийн давтамжаар тооцдог бөгөөд үнэнийг хэлэхэд би үүнийг хэрхэн олж авснаа мартсан боловч үүнийг баталгаажуулахын тулд осциллограф дээр туршиж үзсэний хувьд эдгээр нь зөв утга юм. Бид мөн аялгуу бүрийн хувьд дарах бүх товчлуурууд, түүнчлэн бидний дараагийн функцүүдэд шаардлагатай хувьсагчдыг агуулсан тэмдэглэлийн массивыг тодорхойлж байна.

Алхам 3: "serial.begin" функц

The
The

Бид "serial.begin" функцийг U0init () хуулбарладаг өөрийн хувийн функцийг дуудах болно. Энэ нь хүссэн baudrate -ийг оролт болгон авч, цуваа портыг тухайн baudrate -аас эхлүүлнэ.

Алхам 4: "serial.available" функц

The
The

Бид "serial.available" U0kbhit () -ийг дуурайдаг функцийг дуудах болно. Энэ нь оролт шаарддаггүй, харин оронд нь RDA статусын битийг ашиглан гар дээр өөрчлөлт орсон эсэхийг илрүүлж, өөрчлөлт илэрсэн тохиолдолд үнэнийг буцаана.

Алхам 5: "serial.read" функц

The
The

Бид "serial.read" функцийг дуурайдаг функцийг U0getchar () гэж нэрлэдэг бөгөөд энэ нь UDR0 регистрт хадгалагдсан гар дээр гарсан өөрчлөлтийг оруулдаггүй.

Алхам 6: "serial.write" функц

The
The

Бид өөрчлөлтийг илрүүлж, хадгалж байх үед UDR0 бүртгэлээс өгөгдөл авдаг U0putchar () -ийг дуурайдаг функцийг дуудна.

Алхам 7: Тохируулах функц

Тохируулах функц
Тохируулах функц

Энэ бол бидний "serial.begin" дууриамалыг ашиглан цуваа портыг эхлүүлэх бөгөөд таймерын регистрийн бит тохиргоог эхлүүлж PB6 -ийг бидний аяыг гаргахаар тохируулах үндсэн функц юм.

Алхам 8: Loop ба ISR функцууд

Loop ба ISR функцууд
Loop ба ISR функцууд

Давталт нь дараах байдлаар ажилладаг: хэрэв бидний "serial.available" функцээр өөрчлөлт илэрсэн бол бидний "serial.read" функц нь үүнийг өөрчилж хадгалдаг бөгөөд "serial.write" функц нь энэ өөрчлөлтийг цуваа дэлгэцэнд оруулдаг. I хувьсагч нь давтамжийн массивын хэмжээнээс бага байвал гаралтыг тухайн массив дахь i -ийн байрлал болгож, тухайн байрлал дахь давтамжийг гаргадаг. ISR нь дахин тохируулах үүргийг гүйцэтгэдэг бөгөөд хэрэв давтамжийн массивын байрлал 0 -тэй тэнцүү биш бол (өөрөөр хэлбэл "q" дарагдаагүй бол) давтамжийг гаргадаг, харин "q" дарагдсан үед дахин тохируулах болно. Энэ код нь тасалдал ашигладаг боловч үүнийг тасалдсан тохиолдолд хийж болно. Хэрэв надад ямар нэгэн хүсэлт ирвэл би кодыг тасалдалгүйгээр оруулах болно, гэхдээ тасалдсан хувилбар нь илүү хөгжилтэй гэж бодож байна.

Алхам 9: Цахилгааны утас

Цахилгаан утас
Цахилгаан утас

Энэ кодын утас нь маш хялбар бөгөөд PB6 -аас гаралтын утсыг талхны самбар дээр байрлуулж, дуут дохио эсвэл чанга яригчийг цувралаар холбож, газарт буцааж холбоно уу. Анхаарна уу: хэрэв та чанга яригч ашигладаг бол чанга яригчийн өмнө жижиг эсэргүүцэл тавь. Хэрэв та зүгээр л гаралтыг харахыг хүсч байгаа боловч сонсохгүй байвал PB6 -ийг осциллографын улаан туяанд, хар туяаг газарт холбоно уу.

Алхам 10: Бүгдийг нэг дор хийцгээе

Би өмнөх алхмуудынхаа бүх хэсгийг тайлбарласан тул энэ кодыг бүрэн оруулсан болно. Янз бүрийн давтамжийн гарны оролт шаардлагатай бөгөөд энэ давтамжийг PB6 руу гаргадаг. IDE ашиглан код бичих өөр аргыг унших танд таалагдсан гэж найдаж байна!

Мөн үүнд микроконтроллерийн уралдаанд саналаа өгөөрэй: D

Зөвлөмж болгож буй: