Как читать данные аналогового датчика с помощью разных таймеров в Arduino
У меня есть три аналоговых датчика, таких как напряжение, температура и давление. Мне нужно измерять напряжение и температуру каждые 10 мс, и мне нужно измерять только давление каждые 30 мс с помощью таймеров в Arduino.
Как я могу это сделать?
@Pritha, 👍-1
Обсуждение1 ответ
Пусть это поможет в качестве отправной точки! Не проверено
void setup() {
Serial.begin(9600);
pinMode(A0, INPUT);
pinMode(A1, INPUT);
pinMode(A2, INPUT);
}
unsigned long previousMillis1;
unsigned long previousMillis2;
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis1 >= 10) {
int val1 = analogRead(A0);
int val2 = analogRead(A1);
Serial.print("Values from A0 and A1: ");
Serial.print(val1);
Serial.print(" ");
Serial.println(val2);
previousMillis1 = currentMillis;
}
if (currentMillis - previousMillis2 >= 30) {
int val3 = analogRead(A2);
Serial.print("Value from A2: ");
Serial.println(val3);
previousMillis2 = currentMillis;
}
}
Спасибо за вашу любезную помощь, мистер Карлос Коста, но мне нужно использовать таймер 1 или 2. Без использования миллисекунд я должен прочитать данные датчика., @Pritha
Предположительно, это школьный проект. Разрешено ли вам использовать готовые библиотеки или вы должны использовать прямую настройку аппаратных регистров таймера? Какой Ардуино вы используете? В любом случае, техническое описание микроконтроллера — хорошее (но тяжелое) начало., @6v6gt
- Получение BPM из данного кода
- Проблемы с передачей данных через RF24
- Какова работа pulseIn?
- Сколько датчиков может поддерживать один модуль Arduino?
- Как сделать очень долгую функцию delay(), несколько часов
- Разница между «time_t» и «DateTime»
- Создание таймера с использованием часов реального времени с указанием времени начала и остановки
- Как подключить более 10 датчиков к Arduino uno r3
см. пример BlinkWithoutDelay в меню примеров Arduino IDE., @Juraj
Вы видели эту библиотеку? https://www.avdweb.nl/arduino/timing/virtualdelay, @VE7JRO
пожалуйста, добавьте свой код в свой пост, @jsotola
Для этого вам нужен только один таймер, который срабатывает каждые 10 мс. Затем считывайте давление только каждый третий раз. Или вы можете просто использовать
millis()
илиmicros()
в зависимости от остальной части вашего кода. Пожалуйста, поделитесь этим кодом и объясните, что он должен делать, @chrislначните с BlinkWithoutDelay, как упоминал @Juraj ... не удаляйте никакую часть кода ... добавьте переменную счетчика и установите ее на ноль ... перейдите к той части программы, где обновляется светодиод ... добавьте функция измерения напряжения и температуры... если счетчик = 0, то измерить давление... приращение счетчика... если счетчик = 3, то установить счетчик на ноль... когда все заработает то изменить переменную задержки с 500 до 10, @jsotola
«…с помощью таймеров в Arduino». У вас есть несколько вариантов в зависимости от того, насколько глубоко вам нужно зайти в этом упражнении, перечисленные здесь в порядке возрастания сложности. (1) Простая запись времени начала события и проверка того, не истек ли его временной интервал, как в уже упомянутом скетче «мигание без задержки». (2) использование готовых библиотек таймеров, которые могут вызывать указанные пользователем функции через определенные промежутки времени и т. д. и (3) прямая настройка аппаратных таймеров для запуска процедур обслуживания прерываний, прямого управления контактами gpio и т. д., @6v6gt