При определении одной и той же переменной в разных функциях код стопорится | Arduino c++

185
03 апреля 2018, 00:26

Вчера победил многозадачность в Arduino и решил не делать 4 переменные 2 из которых копия других 2. Засунул одинаковые переменные в разные функции. Заливаю... Светодиоды загорелись, но тухнуть не хотят. В чём я накосячил?

Вот код (кот):

int main() {
  init();
  while (1) {
    led13_ne(), led12_ne();
  }
}
void led13_ne() {
  DDRB |= B10000000;
  //init();
  unsigned long previousMillis = 0;
  const long interval = 1000;
  byte port13read = 0;
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    //currentMillis = 0;
    port13read = bitRead(PORTB, 7);
    if (port13read == 0) {
      PORTB |= B10000000;
      //port13read = 1;
    } else {
      PORTB &= ~B10000000;
      //port13read = 0;
    }
  }
}
void led12_ne() {
  DDRB |= B01000000;
  unsigned long previousMillis = 0;
  const long interval = 500;
  byte port12read = 0;
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    //currentMillis = 0;
    port12read = bitRead(PORTB, 6);
    if (port12read == 0) {
      PORTB |= B01000000;
      //port13read = 1;
    } else {
      PORTB &= ~B01000000;
      //port13read = 0;
    }
  }
}
Answer 1

Переменная previousMillis должна быть или глобальной:

  unsigned long previousMillis = 0;
  void led13_ne() {
     ...
  }

или статичной:

  void led13_ne() {
     static unsigned long previousMillis = 0;
     ...
  }

Тогда она будет обнуляться только при рестарте микроконтроллера. А сейчас она обнуляется при каждом вызове функции.

READ ALSO
Как настроить QT creator в Mint Linux

Как настроить QT creator в Mint Linux

Здравствуйте, нужно для лабораторных писать ПО под LinuxПоставил на Virtual Box Mint(писали что он лучше всего для новичков подойдет)

212
Использование friend funtions в С++

Использование friend funtions в С++

Здравствуйте, изучаю вот OpenGL, и наткнулся на совсем мне непонятную проблему, вот код:

304
Составить программу в C++ [требует правки]

Составить программу в C++ [требует правки]

Даны действительные числа х, у, zПолучить: a) max(x,y,z); b)min(x,y,z), max(x,y,z)

242
вычисление jsmath в браузере

вычисление jsmath в браузере

Доброго времени этого не пишут в учебниках хочу заставить Лису(FF) вычислять math функцию внутри браузера, а не через Windows (ADVAPI32DLL Function36)

232