Агуулгын хүснэгт:
- Алхам 1: Бүртгэлийн хаягийг тодорхойлох
- Алхам 2: Массив ба дэлхийн хувьсагчид
- Алхам 3: "serial.begin" функц
- Алхам 4: "serial.available" функц
- Алхам 5: "serial.read" функц
- Алхам 6: "serial.write" функц
- Алхам 7: Тохируулах функц
- Алхам 8: Loop ба ISR функцууд
- Алхам 9: Цахилгааны утас
- Алхам 10: Бүгдийг нэг дор хийцгээе
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:04
Энэ бол миний зааж сургадаг зүйл биш, би төмөр хийцийг илүүд үздэг, гэхдээ би цахилгааны инженерийн оюутан тул микроконтроллер (Embedded System Design) -ийн хичээлд хамрагдах ёстой болохоор зааварчилгаа өгөх болно гэж бодсон. миний төслүүдийн нэг. Би анх энэ төслийг төсөл болон бусад хүмүүст зориулан хийхдээ arduino номын сангийн функц, цуваа функцийг ашигладаггүй хичээлүүд бараг байдаггүйг олж мэдсэн бөгөөд энэ нь надад сайн сургамжтай гэж бодсон бас нэг шалтгаан юм.
Энэ код нь Atmega 2560 микроконтроллерт зориулагдсан тул хэрэв та үүнийг өөр самбар дээр ашиглахыг хүсвэл хянагчийн хэрэглэгчийн гарын авлагад үндэслэн кодын хаягийн бүртгэлийг өөрчлөх шаардлагатай болно. Кодын гол санаа нь та гар дээрх товчлуурыг цуваа дэлгэц рүү оруулах болгондоо arduino мега нь таны дарсан товчлуур дээр үндэслэн тодорхой давтамж гаргаж, "q" товчлуурыг дахин тохируулах болно. Би үүнийг "a" нь A хавтгай давтамжийг, "A" нь A -ийн хурц давтамжийг, "b" -г B хавтгайг, "c" -г "C", "C" -г "хурц" гэх мэтийг гаргахаар хийсэн. Бүрэн кодыг төгсгөлд нь байршуулдаг боловч алхам бүр нь кодыг хэсэг болгон задлах тул тайлбарлахад илүү хялбар болно.
Алхам 1: Бүртгэлийн хаягийг тодорхойлох
Энэ алхам нь маш хялбар бөгөөд хэрэв та atmega 2560 ашиглаж байгаа бол та миний ашигласан хаягийг ашиглах хэрэгтэй, гэхдээ хэрэв та өөр чиптэй самбар ашигладаг бол эдгээр регистр тус бүрийн хаягийг өөрийн компьютер дээрээс олох хэрэгтэй болно. чипсийн хэрэглэгчийн гарын авлага. Дээд талд байгаа тодорхойлолтууд нь бидний функцүүдэд ашиглагдах тогтмолууд юм. Бид хөрвүүлэгчийг эмх замбараагүй болгохыг хүсэхгүй байгаа тул хаягийг тогтворгүй гарын үсэггүй гэж тодорхойлдог.
Алхам 2: Массив ба дэлхийн хувьсагчид
Энд бид түлхүүр бүрийн гаргах ёстой бүх давтамжийг агуулсан давтамжийн массивыг тодорхойлохыг хүсч байна. Эдгээр утгыг бодит тэмдэглэлийн давтамжаар тооцдог бөгөөд үнэнийг хэлэхэд би үүнийг хэрхэн олж авснаа мартсан боловч үүнийг баталгаажуулахын тулд осциллограф дээр туршиж үзсэний хувьд эдгээр нь зөв утга юм. Бид мөн аялгуу бүрийн хувьд дарах бүх товчлуурууд, түүнчлэн бидний дараагийн функцүүдэд шаардлагатай хувьсагчдыг агуулсан тэмдэглэлийн массивыг тодорхойлж байна.
Алхам 3: "serial.begin" функц
Бид "serial.begin" функцийг U0init () хуулбарладаг өөрийн хувийн функцийг дуудах болно. Энэ нь хүссэн baudrate -ийг оролт болгон авч, цуваа портыг тухайн baudrate -аас эхлүүлнэ.
Алхам 4: "serial.available" функц
Бид "serial.available" U0kbhit () -ийг дуурайдаг функцийг дуудах болно. Энэ нь оролт шаарддаггүй, харин оронд нь RDA статусын битийг ашиглан гар дээр өөрчлөлт орсон эсэхийг илрүүлж, өөрчлөлт илэрсэн тохиолдолд үнэнийг буцаана.
Алхам 5: "serial.read" функц
Бид "serial.read" функцийг дуурайдаг функцийг U0getchar () гэж нэрлэдэг бөгөөд энэ нь UDR0 регистрт хадгалагдсан гар дээр гарсан өөрчлөлтийг оруулдаггүй.
Алхам 6: "serial.write" функц
Бид өөрчлөлтийг илрүүлж, хадгалж байх үед UDR0 бүртгэлээс өгөгдөл авдаг U0putchar () -ийг дуурайдаг функцийг дуудна.
Алхам 7: Тохируулах функц
Энэ бол бидний "serial.begin" дууриамалыг ашиглан цуваа портыг эхлүүлэх бөгөөд таймерын регистрийн бит тохиргоог эхлүүлж PB6 -ийг бидний аяыг гаргахаар тохируулах үндсэн функц юм.
Алхам 8: Loop ба ISR функцууд
Давталт нь дараах байдлаар ажилладаг: хэрэв бидний "serial.available" функцээр өөрчлөлт илэрсэн бол бидний "serial.read" функц нь үүнийг өөрчилж хадгалдаг бөгөөд "serial.write" функц нь энэ өөрчлөлтийг цуваа дэлгэцэнд оруулдаг. I хувьсагч нь давтамжийн массивын хэмжээнээс бага байвал гаралтыг тухайн массив дахь i -ийн байрлал болгож, тухайн байрлал дахь давтамжийг гаргадаг. ISR нь дахин тохируулах үүргийг гүйцэтгэдэг бөгөөд хэрэв давтамжийн массивын байрлал 0 -тэй тэнцүү биш бол (өөрөөр хэлбэл "q" дарагдаагүй бол) давтамжийг гаргадаг, харин "q" дарагдсан үед дахин тохируулах болно. Энэ код нь тасалдал ашигладаг боловч үүнийг тасалдсан тохиолдолд хийж болно. Хэрэв надад ямар нэгэн хүсэлт ирвэл би кодыг тасалдалгүйгээр оруулах болно, гэхдээ тасалдсан хувилбар нь илүү хөгжилтэй гэж бодож байна.
Алхам 9: Цахилгааны утас
Энэ кодын утас нь маш хялбар бөгөөд PB6 -аас гаралтын утсыг талхны самбар дээр байрлуулж, дуут дохио эсвэл чанга яригчийг цувралаар холбож, газарт буцааж холбоно уу. Анхаарна уу: хэрэв та чанга яригч ашигладаг бол чанга яригчийн өмнө жижиг эсэргүүцэл тавь. Хэрэв та зүгээр л гаралтыг харахыг хүсч байгаа боловч сонсохгүй байвал PB6 -ийг осциллографын улаан туяанд, хар туяаг газарт холбоно уу.
Алхам 10: Бүгдийг нэг дор хийцгээе
Би өмнөх алхмуудынхаа бүх хэсгийг тайлбарласан тул энэ кодыг бүрэн оруулсан болно. Янз бүрийн давтамжийн гарны оролт шаардлагатай бөгөөд энэ давтамжийг PB6 руу гаргадаг. IDE ашиглан код бичих өөр аргыг унших танд таалагдсан гэж найдаж байна!
Мөн үүнд микроконтроллерийн уралдаанд саналаа өгөөрэй: D
Зөвлөмж болгож буй:
Номын сангүй RC5 алсын удирдлагатай протокол декодер: 4 алхам
Номын сангүй RC5 алсын удирдлагатай протоколын декодер: rc5 -ийг декодлохын өмнө эхлээд rc5 тушаал гэж юу болох, түүний бүтэц юу болохыг ярилцана. Телевиз, cd тоглуулагч, d2h, гэрийн театрын систем гэх мэт алсын удирдлагад ашигладаг rc5 команд нь үндсэндээ 13 эсвэл 14 битээр тоноглогдсон байдаг
Neopixel Ws2812 LED эсвэл LED зурвас эсвэл Led бөгжийг Arduino ашиглан хэрхэн ашиглах вэ: 4 алхам
Neopixel Ws2812 LED эсвэл LED STRIP эсвэл Led Ring -ийг Arduino ашиглан хэрхэн ашиглах вэ: Сайн уу залуусаа Neopixel led Strip нь маш алдартай бөгөөд үүнийг ws2812 LED зурвас гэж нэрлэдэг. Эдгээр нь маш их алдартай, учир нь эдгээр LED зурвас дээр бид тус бүрийг тус тусад нь авч үзэх боломжтой бөгөөд хэрэв та цөөн хэдэн гэрлийг нэг өнгөөр гэрэлтүүлэхийг хүсч байвал
Arduino Ws2812 LED эсвэл Neopixel Led Strip эсвэл Ring хичээл: 4 алхам
Arduino Ws2812 LED эсвэл Neopixel Led Strip эсвэл Ring заавар: Энэхүү зааварчилгаанд бид неопиксел эсвэл ws 2812 эсвэл Arduino -ийн тусламжтайгаар хурдан удирдаж сурах болно. Эдгээр төрлийн LED эсвэл тууз эсвэл цагиргийг зөвхөн нэг Vin зүүгээр удирддаг. LED нь тус тусдаа хаяглагддаг тул тэдгээрийг инди гэж нэрлэдэг
CH340 UART цуваа хөрвүүлэгч кабелийг ашиглан програм эсвэл кодыг Arduino Pro Mini руу хэрхэн байршуулах вэ: 4 алхам
CH340 UART цуваа хөрвүүлэгч кабелийг ашиглан програм эсвэл кодыг Arduino Pro Mini -д хэрхэн байршуулах вэ: USB TTL цуваа кабелиуд нь USB ба цуваа UART интерфэйсүүдийн хооронд холболтыг хангадаг цуврал хөрвүүлэгч кабелийн USB юм. 5 вольт, 3.3 вольт эсвэл хэрэглэгчийн заасан дохионы түвшинг ашиглан холболтыг санал болгодог олон төрлийн кабелийг ашиглах боломжтой
ITunes номын сангаа ТВ эсвэл Аврагч ашиглан хэрхэн сонсох вэ: 5 алхам
ITunes номын сангаа ТВ эсвэл Авч хүлээн авагчаараа хэрхэн сонсох вэ: За, би үүнийг 10 минутын дотор зааж өгсөн. Ийм амархан байсан! Зөөврийн компьютер нь үүнийг хийхэд тохиромжтой байх болно, гэхдээ телевизийн ойролцоо ширээний компьютер ч бас зүгээр юм. Хэрэв танд нисэх онгоцны буудлын экспресс байгаа бол би танд нэг алхам нэмж өгөх болно. (Тэмдэглэл: Би нисэх онгоцны буудлын экспресс эзэмшдэггүй, хэрэв би