Количество циклов в зависимости от количества и типа операторов
Я провел небольшой эксперимент, чтобы подсчитать количество циклов в секунду в двух разных конфигурациях:
1-Переменная a инициализируется нулем и увеличивается на единицу в каждом цикле цикла. -Значение a записывается каждый цикл -при millis() = 1000 приращение заканчивается, и значение millis() записывается для проверки точности синхронизации.
Код:
long a = 0;
int v = 1;
void setup() {
Serial.begin(9600);
}
void loop() {
if (v == 1){
a = a + 1 ;
Serial.println(a);
if (millis() >= 1000){
Serial.println(millis());
v = 0;}
}
}
Результат: 1 2 . . . 227 1000
2 — То же, что и 1, но значение a пишется только в конце.
Код:
long a = 0;
int v = 1;
void setup() {
Serial.begin(9600);
}
void loop() {
if (v == 1){
a = a + 1 ;
if (millis() >= 1000){
Serial.println(millis());
Serial.println(a);
v = 0;}
}
}
Результат:
1000 265174
-Итак, 227 циклов для 1 и 265174 для 2, это правильно, и может ли такая простая модификация замедлить цикличность на 1000?
@Huskarnov, 👍-1
Обсуждение3 ответа
Когда последовательный буфер (64 байта) заполнен, print
ожидает, пока байты не будут отправлены со скоростью 9600 бод.
Запись через последовательный интерфейс занимает много времени (просто учтите выбранную вами скорость передачи данных). Вы всегда должны помнить, что изменение объема печати может изменить поведение ваших программ. Это означает, что ваша 2. конфигурация (более) надежна.
Вы также можете использовать micros(), чтобы увеличить разрешение до 4 мкС вместо 1000 мкС. Увеличение скорости до 115200 также должно привести к некоторому улучшению.
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
Serial.print()
занимает много времени, поэтому результат правильный., @Matej