Добавить в код интервал в 1 минуту, чтобы отображать вывод непрерывно в течение одной минуты и не отображать его в течение другой минуты?
/*
Трехосевой гироскоп и акселерометр MPU6050. Пример акселерометра тангажа и крена.
Подробнее: http://www.jarzebski.pl/arduino/czujniki-i-sensory/3-osiowy-zyroskop-i-akcelerometr-mpu6050.html
GIT: https://github.com/jarzebski/Arduino-MPU6050
Сайт: http://www.jarzebski.pl
(c) 2014 г., Корнелиуш Яжебский.
*/
#include <Wire.h>
#include <MPU6050.h>
MPU6050 mpu;
void setup()
{
Serial.begin(115200);
Serial.println("Initialize MPU6050");
while(!mpu.begin(MPU6050_SCALE_2000DPS, MPU6050_RANGE_2G))
{
Serial.println("Could not find a valid MPU6050 sensor, check wiring!");
delay(500);
}
}
void loop()
{
// Чтение нормализованных значений
Vector normAccel = mpu.readNormalizeAccel();
// Рассчитать тангаж и крен
int pitch = -(atan2(normAccel.XAxis, sqrt(normAccel.YAxis*normAccel.YAxis + normAccel.ZAxis*normAccel.ZAxis))*180.0)/M_PI;
int roll = (atan2(normAccel.YAxis, normAccel.ZAxis)*180.0)/M_PI;
// Выход
Serial.print(" Pitch = ");
Serial.print(pitch);
Serial.print(" Roll = ");
Serial.print(roll);
Serial.println();
delay(10);
}
@Yash Thaker, 👍-1
Обсуждение1 ответ
Есть мнение, что это базовый вопрос программирования.
Я полагаю, что вы хотите отобразить вывод в течение одной минуты, затем не отображать его в течение минуты, затем отобразить его в течение минуты, затем выключить и т. д.
Если вы переименуете существующую функцию loop
в displayData
и добавите новую функцию loop
, которая выполняет следующее.
Он записывает текущее время (из millis()
) и сохраняет его в переменной с именем startTime
.
Он создает переменную с именем endTime
и устанавливает ее значение равным startTime + (60 * 1000)
(что составляет 60 секунд??)
Затем он выполняет цикл while до тех пор, пока не наступит millis() > endTime
.
Внутри этого цикла вызывается ваша новая функция displayData
Затем выполняется еще один цикл while или вызывается функция сна на 60 секунд.
Что-то вроде этого:
int endTime = millis() + 60000;
while (millis() < endTime)
{
displayData();
}
endTime = millis() + 60000;
while (millis() < endTime)
{
; // Пустой цикл
}
Ужасный код, есть гораздо более элегантные решения, но он справится со своей задачей.
- Как объявить массив переменного размера (глобально)
- Программирование Arduino с использованием Python, а не C/C ++
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Как справиться с rollover millis()?
- Является ли использование malloc() и free() действительно плохой идеей для Arduino?
- Можно ли сделать несколько функций loop() с помощью Arduino Uno?
- Какие накладные расходы и другие соображения существуют при использовании структуры по сравнению с классом?
- устаревшее преобразование из строковой константы в 'char*'
Существует множество руководств, обучающих тому, как делать что-то по времени. Погуглите немного, так как мы не являемся бесплатным сервисом по написанию кода., @chrisl