Можно ли запустить две функции в arduino одновременно?
Я новичок в мире arduino, и у меня нет никакого опыта. Я просто хочу спросить, могу ли я запустить две функции в arduino одновременно. Я собираюсь сделать детектор землетрясений, но в то же время я хочу получать sms на свой телефон, когда он сигнализирует. Возможно ли это?
1 ответ
Вы можете представить себе программу как процедуру, которую выполняет процессор, читая и делая шаг за шагом. Когда вы компилируете любую программу, компилятор проверяет ее, и когда он находит какую-то ошибку, он может точно сказать вам, где (строка), в которой вы допустили эту ошибку. Это можно сделать просто потому, что программа представляет собой серию команд.
Кроме того, если в некоторых случаях (прерывания, обратные вызовы, асинхронные функции и т.д.) Все кажется по-другому, код всегда выполняется шаг за шагом, например, когда вы следуете рецепту во время приготовления пищи.
Вам не нужно беспокоиться об этом, на самом деле эти шаги выполняются процессором очень быстро, и вы можете делать много вещей так, как они были бы сделаны, казалось бы, одновременно.
Arduino Uno (Atmega328) работает на частоте 16 МГц. Как вы можете прочитать здесь: "почти пустой цикл () просматривается около 150 тысяч раз в секунду".
Так что не беспокойтесь об одновременности ваших функций. Вы можете написать функцию для обнаружения землетрясения, которая вызывает другие функции (например, сигналы тревоги, процедуры и т. Д.) Без большого промежутка времени (лучшая логика, я думаю, такова: сначала проверьте событие, а затем сделайте вещи).
Единственное, что я предлагаю вам сделать, это уменьшить код, чтобы он стал как можно меньше (и быстрее), но мы говорим о нескольких миллисекундах промежутка от землетрясения до тревоги.
Если вам нужно зарегистрировать точное время землетрясения (абсолютная точность), вы можете использовать команду micros(). В этом случае не забудьте сделать это в качестве первой инструкции (чтобы уменьшить задержку, конечно).
- SIM800L + Arduino Uno не отправляет SMS
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
Если отправка сигнала тревоги зависит от обнаружения землетрясения, вам не нужно делать две вещи одновременно, а последовательно, что достаточно просто., @ocrdu
Вы пробовали его запрограммировать? Если да, пожалуйста, покажите нам (свернутый) код и сообщите нам, где вы спотыкаетесь. Если нет, пожалуйста, попробуйте, прежде чем продолжить., @the busybee
Вы здесь сами по себе, потому что, похоже, технические ответы запрещены., @jwh20