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

Arduino - Үе үе тасалдах: 4 алхам
Arduino - Үе үе тасалдах: 4 алхам

Видео: Arduino - Үе үе тасалдах: 4 алхам

Видео: Arduino - Үе үе тасалдах: 4 алхам
Видео: Мини Серво Робот на Ардуино! 2024, Арваннэгдүгээр
Anonim
Arduino - Үе үе тасалдах
Arduino - Үе үе тасалдах

Энэхүү зааварчилгаа нь Arduino програмуудад цагийн тасалдал ашиглах тухай юм. Энэ бол Arduino илүү ихийг хийж чадна гэдгийг мэддэг боловч үүнийг хэрхэн яаж хийхээ мэдэхгүй байгаа Arduino програмистын хувьд алхам юм.

Хэрэв гүйцэтгэлийн асуудал гарвал та нэг буюу хэд хэдэн delay () функцийг ашиглаж байна гэж бодож байна. Заль мэх нь delay () функц (үүд) -ээс салж, тасалдлыг орлуулах явдал юм. Delay () функц нь Arduino -г саатал () дуусахыг хүлээх зуур юу ч хийхгүй байхыг шаарддаг. Тасалдлыг ашиглах нь саатал дуустал хүлээх зуураа таны програмд өөр зүйл хийх боломжийг олгодог. Delay () ашиглах үед бусад зүйлд ашиглаж болох асар их ашиглагдаагүй үхсэн цаг байдаг. Тасалдлыг ашиглах нь энэ асуудлыг шийддэг.

Алхам 1: Тасалдал зохицуулагч

1. Тасалдлын зохицуулагчийг програмдаа нэмээрэй. Зүгээр л тохиргооноос дээш хаа нэг газар хуулж тавь ();

const гарын үсэг зураагүй урт TIMER0_COUNT = 500; // 500 msec таймерын интервал

// TIMER0 тасалдал зохицуулагч дэгдэмхий bool цаг = худал; ISR (TIMER0_COMPA_vect) {статик тэмдэггүй урт тоо = 0; if (++ count> TIMER0_COUNT) {count = 0; цаг = үнэн; // цагийг TIMER0_COUNT ms тутамд үнэн гэж тохируулсан болно // (үндсэн горимд цагийг цэвэрлэх шаардлагатай)}

Алхам 2: Хугацааны интервал тогтоох

2. Цагийн интервалыг тохируулна уу. Энэхүү ердийн гахай нь ~ 1 msec тутамд галладаг TIMER0 тасалдал руу буцдаг.

Таны "интервал" гэдэг нь боловсруулах TIMER0 тасалдлын тоо юм. Интервал бүр ~ 1 msec байдаг тул та интервалаа идэвхжүүлэхийн өмнө хичнээн TIMER0 тасалдлыг тоолохоо тохируулж байна. IOW, TIMER0_COUNT хувьсагчийг хичнээн миллисекундээр хүлээж байгаарай. Жишээлбэл, секундын нэг хагаст 500 ашиглана уу. 3000 -ийг 3 секундын турш ашигла.

Алхам 3: Эхлэлийг таслах

3. "TIMER0 эхлүүлэх" кодыг өөрийн setup () аргад нэмнэ үү. Дахин хэлэхэд тохиргоонд () суулгаад хуулж тавь.

// *** TIMER0 эхлүүлэх ***

cli (); // бүх тасалдлыг унтраах TIMSK0 = 0; // доод чичиргээний таймерыг унтраах OCR0A = 0xBB; // дурын тасалдлын тоо TIMSK0 | = _BV (OCIE0A); // piggy буцааж тасалдах sei (); // эргэлт тасалдлыг буцааж асаах

Алхам 4: Кодоо хаана нэмэх вэ

4. "Цаг шалгах" кодыг loop () аргадаа нэмнэ үү. Loop () дээр хуулж буулгана уу.

хэрэв (цаг) {

цаг = худал; // энд ямар нэгэн зүйл хий}

"Цаг = худал;" шугам чухал. Энэ мөр байхгүй бол "loop here" програмыг ажиллуулах бүрт "энд ямар нэгэн зүйл хийх" мөрийг гүйцэтгэх болно.

Мэдээжийн хэрэг та "энд ямар нэгэн зүйл хийх" мөрөнд өөрийн үйл ажиллагааг орлуулдаг. Эхлэхийн тулд текстийг хэвлэх эсвэл LED -ийг асаах хэрэгтэй.

Чи дууссан!

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