Мазмуну:
- 1 -кадам: Interrupt Handler
- 2 -кадам: Мезгилдик убакыт интервалын коюңуз
- 3 -кадам: үзгүлтүккө учуратуу
- 4 -кадам: Кодуңузду кайда кошсо болот
Video: Arduino - Мезгилдүү үзгүлтүк: 4 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:41
Бул Инструкция Arduino программаларында мезгил үчүн үзгүлтүккө учуроону колдонуу жөнүндө. Бул Arduino көп нерсени жасай аларын билген, бирок муну кантип жасоону такыр билбеген, жаңыдан башталып келе жаткан Arduino программисти үчүн бир кадам.
Эгерде иштөө көйгөйү болсо, мен сиз бир же бир нече delay () функцияларын колдонуп жатасыз деп ойлойм. Айла - кечиктирүү () функциясынан (функцияларынан) арылуу жана үзүүнү алмаштыруу. Delay () функциясы Arduino кечиктирүүнү () бүтүшүн күтүп жатканда эч нерсе кылууга мажбурлайт. Үзгүлтүктү колдонуу программаңызга кечигүүнүн бүтүшүн күтүп, башка нерселерди кылууга мүмкүнчүлүк берет. Адатта, delay () колдонулганда башка нерселер үчүн колдонулушу мүмкүн болгон колдонулбаган өлгөн убакыттын көп саны бар. Үзгүлтүктү колдонуу бул маселени чечет.
1 -кадам: Interrupt Handler
1. Программаңызга үзгүлтүккө учурагычты кошуңуз. Жөн гана көчүрүү жана орнотуунун жогору жагындагы бир жерге чаптоо ();
const unsigned long TIMER0_COUNT = 500; // 500 мс таймер аралыгы
// TIMER0 үзгүлтүк иштетүүчү туруксуз бол убакыт = жалган; ISR (TIMER0_COMPA_vect) {static unsigned long count = 0; if (++ count> TIMER0_COUNT) {count = 0; убакыт = чындык; // убакыт ар бир TIMER0_COUNT мс} коюлган (убакыт негизги тартипте тазаланышы керек)}
2 -кадам: Мезгилдик убакыт интервалын коюңуз
2. Убакыт аралыгын коюңуз. Бул регулярдуу түрдө ~ 1 msec сайын күйүп турган TIMER0 үзгүлтүгүнө кайтат.
Сиздин "интервал" - бул иштетүү үчүн TIMER0 үзүлүүлөрүнүн саны. Ар бир интервал ~ 1 msec, андыктан сиз интервалды иштетүүдөн мурун канча TIMER0 үзүлүшүн эсептейсиз. IOW, TIMER0_COUNT өзгөрмөсүн канча миллисекунд күткүңүз келсе, ошого коюңуз. Мисалы, 500 секунданын жарымында колдонуңуз. 3000ди 3 секунд колдонуңуз.
3 -кадам: үзгүлтүккө учуратуу
3. Setup () ыкмаңызга "TIMER0 инициализациясы" кодун кошуңуз. Дагы, жөн эле көчүрүү жана орнотуу ().
// *** TIMER0 инициализациясы ***
cli (); // бардык үзгүлтүктөрдү өчүрүү TIMSK0 = 0; // төмөнкү чуркоо үчүн таймерди өчүрүү OCR0A = 0xBB; // үзгүлтүксүз саноо TIMSK0 | = _BV (OCIE0A); // piggy back to interrupt sei (); // бурулуш үзгүлтүктөрдү кайра күйгүзүү
4 -кадам: Кодуңузду кайда кошсо болот
4. "time check" кодун loop () ыкмаңызга кошуңуз. Көчүрүү жана циклге коюу ().
эгер (убакыт) {
убакыт = жалган; // бул жерде бир нерсе кыл}
"Time = false;" линия маанилүү. Бул сызыксыз "бул жерде бир нерсе кыл" саптары программа циклди () аткарган сайын аткарылмак.
Албетте, сиз өзүңүздүн ишмердүүлүгүңүздү "бул жерде бир нерсе кыл" сапына алмаштырасыз. Бир аз текстти басып чыгаруу же LEDди күйгүзүү менен баштаңыз.
Сен бүттүң!
Сунушталууда:
Акустикалык левитация Arduino Uno менен кадам-кадам (8-кадам): 8 кадам
Акустикалык левитация менен Arduino Uno Step-by-Step (8-кадам): ультрадыбыштуу үн өткөргүчтөр L298N Dc аял адаптеринин электр энергиясы менен камсыздоосу эркек токту Arduino UNOBreadboard Бул кантип иштейт: Биринчиден, сиз Arduino Uno кодун жүктөп бересиз (бул санарип менен жабдылган микроконтроллер) жана аналогдук порттор кодду айландыруу үчүн (C ++)
RC Tracked роботу Arduino аркылуу - Кадам менен: 3 кадам
Arduino аркылуу RC Tracked роботу - Кадам менен: Эй балдар, мен BangGoodдан дагы бир сонун робот шасси менен кайтып келдим. Сиз мурунку долбоорлорубуздан өттүңүз деп үмүттөнөбүз - Spinel Crux V1 - Gesture Controlled Robot, Spinel Crux L2 - Arduino Pick and Place Robot with Robotik Arms and The Badland Braw
VHDLде программалануучу үзгүлтүк контроллеринин дизайны: 4 кадам
VHDLде программалануучу үзгүлтүккө учуроочу контролердун дизайны: Мен бул блогдон алган жоопторума толуп кеттим. Рахмат балдар менин блогума кирип, сиздер менен өз билимимди бөлүшүүгө түрткү бергениңиздер үчүн. Бул жолу мен бардык SOCларда көргөн дагы бир кызыктуу модулдун дизайнын сунуштайм - Interrupt C
Arduino автоматташтырылган көлөкө экраны долбоору үчүн кадам моторун жана драйверди тандоо: 12 кадам (сүрөттөр менен)
Arduino автоматташтырылган көлөкө экраны долбоору үчүн тепкич моторун жана драйверди тандоо: Бул Нускамада мен Automated Shade Screen долбоорунун прототипине Step Motor жана Driver тандоо үчүн жасаган кадамдарымдан өтөм. Көлөкөлүү экрандар - бул популярдуу жана арзан Coolaroo кол менен жасалган моделдер, мен аны алмаштыргым келди
DIY Arduino робот колу, Кадам менен: 9 кадам
DIY Arduino Robotic Arm, Step by Step: Бул окуу куралы сизге робот колун кантип курууну үйрөтөт