Кодты іздеу

Сабақ 14/31-1: Arduino Millis (кешіктірусіз) және map функциялары | SunFounder Robojax

Бұл сабақтың бөлігі: Arduino Course based on SunFounder's 3-in-1 Learning Kit

Сабақ 14/31-1: Arduino Millis (кешіктірусіз) және map функциялары | SunFounder Robojax

Бұл нұсқаулық Arduino millis() функциясын таныстырады, бұл блоктамайтын код орындалуын қажет ететін уақытқа негізделген жобаларға арналған іргелі құрал. Бүкіл бағдарламаны тоқтататын delay()-ден айырмашылығы, millis() тақта іске қосылғаннан бері өткен уақытты бақылайды, бұл Arduino-ға тиімді мультитаскинг жасауға мүмкіндік береді. Бұл әдісті келесі нәрселерді жасау үшін қолдануға болады:

  • Басқа код орындалып жатқанда жұмыс істейтін блоктамайтын LED жыпылықтатқыштар.
  • Датчиктер немесе түймелер арқылы іске қосылатын уақыттық оқиғалар, мысалы, түйме басылғаннан кейін 5 секундтан соң өшетін шам.
  • Тұрақты аралықтарда датчик мәндерін жазатын қарапайым деректерді журналдау жүйелері.
  • Қатып қалмай кірістерге жауап беретін пайдаланушы интерфейс жүйелері.
Құрастырылған Sunfounder көлігі

millis() функциясын түсіну

millis() функциясы - Arduino тақтасы ағымдағы бағдарламаны орындай бастағаннан бері өткен миллисекундтар санын қайтаратын кірістірілген Arduino командасы. Ол қуат қосылғанда нөлден басталады және әр миллисекунд сайын артады. Кодтың кез келген нүктесінде ағымдағы "жұмыс уақыты" мәнін алу үшін бұл функцияны шақыруға болады. Мысалы, 1 секундтан кейін ол 1000 қайтарады; 5 секундтан кейін 5000 қайтарады. Негізгі артықшылығы - ол кодты тоқтатпайды, сондықтан басқа тапсырмалар орындалып жатқанда уақытты тексере аласыз.

Неліктен delay()-ден аулақ болу керек?

delay() функциясы бағдарламаны тоқтатудың қарапайым тәсілі, бірақ ол блоктайтын функция. delay(5000) шақырғанда, Arduino 5 секунд бойы барлық басқа кодты орындауды тоқтатады, қосылған кез келген компоненттерді қатырады. Бұл кірістерге жауап беруі немесе шығыстарды үздіксіз жаңартуы қажет жобалар үшін проблемалық. millis() қолдану бағдарламаның қалған бөлігін тоқтатпай белгілі бір уақыт өткенін тексеруге мүмкіндік береді, бұл оны мультитаскинг үшін өте қолайлы етеді.

Қажетті аппараттық құралдар

  • Arduino тақтасы (Uno, Mega және т.б.)
  • Бағдарламалау және қуат үшін USB кабелі

Сым қосу нұсқаулығы

Бұл мысал сыртқы сым қосуды қажет етпейді. Arduino тек кодты жүктеп, сериялық монитор шығысын көру үшін USB арқылы компьютерге қосылуы керек.

Кодты түсіндіру

Бұл бірінші мысал millis() қалай жұмыс істейтінінің қарапайым көрсетілімі. Код сериялық мониторды инициализациялайды және шексіз циклде millis() мәнін басып шығарады.

void setup() {
  Serial.begin(9600);//сериялық мониторды инициализациялау
  Serial.println("millis-ке кіріспе");
  delay(2000);
}

void loop() {
  Serial.println(millis());
}

setup() функциясы 9600 бод жылдамдығында сериялық байланысты бастайды және қош келдіңіз хабарламасын басып шығарады. Мұндағы delay(2000) тек millis() бағдарлама іске қосылған сәттен бастап санай бастайтынын көрсету үшін демонстрацияға арналған. loop() функциясы millis() ағымдағы мәнін үздіксіз басып шығарады. Сериялық мониторды ашқанда, миллисекундтардағы уақыттың тез өсіп жатқанын көресіз. Бұл millis() ешқашан тоқтамайтын есептегіш екенін көрсетеді, бағдарламаңызға үздіксіз уақыт анықтамасын береді.

Бұл іргелі құрылыс блогы. Бейнеде нұсқаушы белгілі бір код блогын орындау алдында 5000 миллисекунд (5 секунд) өткенін тексеру сияқты, белгіленген кезеңнен кейін әрекеттерді іске қосу үшін бұл мәнді қалай пайдалану керектігін көрсетеді. Бұл ағымдағы millis() мәнін айнымалыда сақтау арқылы, содан кейін оны негізгі циклде салыстыру арқылы жасалады.

map() функциясын пайдаланып LED-ті пайыздық мәнмен басқару 14/31-4 сабақ: Arduino coding map() мысал 1 қамтылған.

Тірі жоба демонстрациясы

Бейнеде нұсқаушы бұл кодты жүктеп, сериялық мониторды ашады. Шығыс бастапқы 2 секундтық кідірістен кейін басталып, 1999-ға жақын мәнді көрсететінін көре аласыз. Содан кейін сандар тез өседі, миллисекундтардың үздіксіз саналуын көрсетеді. Бұл тірі көрініс функцияның жұмыс істеп тұрғанын растайды және уақыттың қалай бақыланатыны туралы нақты визуалды түсінік береді.

Осы бейнеге қатысты жобалар

Тараулар

  • [00:00] millis()-ке кіріспе
  • [01:19] millis() дегеніміз не және неге оны қолдану керек
  • [03:06] millis() практикалық демонстрациясы
  • [05:46] Уақыттық оқиғаны іске қосу үшін millis() қолдану
  • [08:29] Түймелі мысал
  • [12:14] Кеңейтілген түйме уақытын өлшеу мысалы
  • [17:20] map() функциясына кіріспе
  • [19:47] LED-пен map() код мысалы
  • [22:41] Арнайы map функциясын құру

Суреттер

Sunfounder car assembled
Sunfounder car assembled
Sunfounder car assembled
Sunfounder car assembled
916-Lesson 14/31-1: Arduino coding millis() example 1
Тіл: C++
/*
Lesson 14/31: Arduino coding millis() example 1
Get this code and watch video Download and resource page https://robojax.com/RJT597
YouTube video https://www.youtube.com/watch?v=lqgzQohNiIM
 
  
 * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.* 
 * This code has been download from Robojax.com
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */
/*
 * Example-1 of using millis() with Arduino
 * Written by Ahmad Shamshiri on July 27, 2019
 * in Ajax, Ontario, Canada
 * Watch video instructio for millis() :https://youtu.be/u2HsiTS8niQ
 */


void setup() {
  Serial.begin(9600);//initialize serial monitor
  Serial.println("Introduction to millis");
  delay(2000);
  


}

void loop() {

  Serial.println(millis());

}// loop end

Сізге қажет болуы мүмкін нәрселер

Ресурстар мен сілтемелер

Файлдар📁

Arduino кітапханалары (zip)