attachInterrupt

Тема в разделе "Arduino & Shields", создана пользователем __grisha__, 6 фев 2017.

  1. __grisha__

    __grisha__ Нуб

    Код (C++):

    int ledg=3;
    int ledy=4;
    int ledr=5;
    volatile int regim=1;

    void setup(){
      pinMode(ledg,OUTPUT);
      pinMode(ledy,OUTPUT);
      pinMode(ledr,OUTPUT);
      attachInterrupt(0,value, RISING);
     
    }
    void value()
    {
      regim=regim+1;
      if(regim>3)
      {
        regim=1;
      }
    }
    void loop(){
      switch(regim){
        case 1:
        digitalWrite(ledg,HIGH);
        digitalWrite(ledy,LOW);
        digitalWrite(ledr,LOW);
        break;
        case 2:
        digitalWrite(ledy,HIGH);
        digitalWrite(ledg,LOW);
        digitalWrite(ledr,LOW);
        break;
        case 3:
        digitalWrite(ledr,HIGH);
        digitalWrite(ledy,LOW);
        digitalWrite(ledr,LOW);
        break;
      }
    }
     
  2. __grisha__

    __grisha__ Нуб

    Что не так?
     
  3. sslobodyan

    sslobodyan Гик

    С контактами все в порядке? Режим ножки прерывания выставлен?
     
  4. __grisha__

    __grisha__ Нуб

    Да все в порядке,при проверке он выделяет красным цветом "attachInterrupt(0,value, RISING);" и пишет :
    " 'value' was not declared in this scope",не пойму,что не так?
     
  5. Onkel

    Onkel Гуру

    вот это и не так - value у вас не была описана.
     
  6. __grisha__

    __grisha__ Нуб

    А где ее надо описать ?
     
  7. AlexBklnv

    AlexBklnv Нерд

    нормально у него все описано
     
  8. __grisha__

    __grisha__ Нуб

    Она главное сначала загрузилась хорошо,а во второй раз выдает эту ошибку
     
  9. ИгорьК

    ИгорьК Гуру

    value случаем не зарезервированное слово? Поменяйте его везде на что-то другое.
     
  10. __grisha__

    __grisha__ Нуб

    менял,все равно ошибка
     
  11. Onkel

    Onkel Гуру

    Английский знаете?
     
  12. __grisha__

    __grisha__ Нуб

  13. Onkel

    Onkel Гуру

    какая ардуина? У уно всяких ф-я работает только с 2 пинами, 2 и 3, вот табличка
    Board

    int.0 int.1 int.2 int.3 int.4 int.5
    Uno, Ethernet 2 3
    Mega2560 2 3 21 20 19 18
    32u4 based (e.g Leonardo, Micro) 3 2 0 1 7
    Due, Zero, MKR1000, 101 interrupt number = pin number
    Видимо тут
    attachInterrupt(0,value, RISING);
    0 не нравится, попробуйте 2 или 3 , ну это если уно или однокласники.
     
  14. Onkel

    Onkel Гуру

    hm.jpg
    Знаю. Когда появляется сообщение, что что-то не описано, это и не описано. В некоторых случаях это может быть из-за того, что какая-то синтаксическая ошибка до или после описания, или до этого "не описанного" . Это наш случай.
    Ну так как у вас с английским?
     
  15. AlexBklnv

    AlexBklnv Нерд

    С английским у меня прекрасно.
    Парирую знаниями о трансляторах, но описывать все лень. Функцию можно описать хоть где и транслятор при проходе все сделает
    .
    Функция это не переменная. У нее нет строгого места описания.
    Кстати в данном случае функция описана после строки с вызовом. В любом случае сработала бы.
    По поводу этого. Не буду докапываться, но функция описана)
     
  16. Onkel

    Onkel Гуру

    ардуина какая?
     
  17. AlexBklnv

    AlexBklnv Нерд

    Код (C++):
    attachInterrupt(digitalPinToInterrupt(pin), ISR, mode);
    чудесная функция все сделает..
     
  18. Onkel

    Onkel Гуру

    В общем неверное утверждение. В ide arduino - да, в любом профессиональном ide - Нет.
    Так что с трансляторами у вас также, как с английским.
     
  19. AlexBklnv

    AlexBklnv Нерд

    Да что вы говорите. А пруфы будут?
     
  20. Onkel

    Onkel Гуру

    А на таблицу умножения вам пруф не выложить?
    А вы каким профессиональным ide владеете?