2016-08-18 3 views
-1

У меня есть основания два данных, которые содержат данные о температуре от Arduino ...Миллиса для Arduino

Я хочу, чтобы отправить данные в эти базы данных в течение минуты, затем после из отправки данных в других данных основание, отправить его на следующую базу данных (позже ДЕСЯТЬ РАЗ ПЕРВОГО базы данных)

Мой код ниже:

int count = 0; 
for(int a = 1; a <= 10; a++) { 
    Cayenne.run(); 
    delay(60000); 
    count = count + 1; 
} 
if(count== 10) { 
    ToPostWStemp(); 
    count = 0; 
} 

Но не посылает ничего, и я не знаю, как делать. Многие люди говорили мне, что это намного лучше использовать функцию millis(), но я не знаю, как код, который работает на моем Arduino.

D.P. Функция «Cayenne.run» вызывает первую функцию сервера, затем «ToPostWStemp» вызывает вторую последнюю функцию сервера.

Спасибо!

+0

Недостаточно информации, чтобы сообщить, что вы делаете неправильно. Выполняется ли код выше в бесконечном цикле? Или это функция? Что такое «первая функция сервера»? Что такое «последняя функция сервера»? – iheanyi

+0

Хорошо, позвольте мне уточнить полный код – Maclos

ответ

0

Если я правильно понял вопрос, звучит так, как будто вы хотите, чтобы вы звонили один раз в минуту, а ToPostWStemp() вызывается один раз каждые 10 минут.

Для этого с помощью millis() вы можете просто следить за последним вызовом каждой функции и сравнивать это с текущим значением millis(), вызывая каждую функцию только тогда, когда прошедшее время превышает желаемый интервал , Что-то вроде этого:

unsigned long cayenneTime = 0; 
unsigned long postWSTime = 0; 
void loop() 
{ 
    if (millis() - cayenneTime >= 60000) 
    { 
     // Do this every 60 seconds 
     Cayenne.run(); 

     // Keep track of the last time this code ran, so we know 
     // when to run it next time 
     cayenneTime = millis(); 
    } 
    if (millis() - postWSTime >= 60000 * 10) 
    { 
     // Every 10 minutes, do this 
     ToPostWStemp(); 

     // Keep track of the last time this code ran, so we know 
     // when to run it next time 
     postWSTime = millis(); 
    } 

    // Do other stuff here 
} 

Обратите внимание, что Миллис() будет переполнение и сбрасывается в 0 каждые 4294967295 миллисекунд (около 49 дней), так что если это будет затянувшийся программу вы хотите принять, что в учетной записи и настроить для нее.

+0

Спасибо за ответ, вы классный приятель, теперь я знаю, что использую функцию millis, спасибо за ваш пример вашего ответа на время, Джефф. Привет – Maclos

+0

Подождите ... почему вы пишете const вне цикла? – Maclos

+0

Не уверен, что вы имеете в виду. Если вы имеете в виду, почему я объявлял 'cayenneTime' и' postWSTime' вне функции 'loop()', потому что объявление их внутри 'loop()' создавало бы их локальные переменные, что означает, что их значения будут сбрасываться каждый раз через 'loop()'. Я мог бы также объявить их как «статические» локальные переменные внутри цикла(), которые будут иметь тот же эффект и, вероятно, будут более чистыми, но это вопрос стиля кодирования. –

Смежные вопросы