Не работает внешнее прерывание.

Тема в разделе "Arduino & Shields", создана пользователем CheckA, 29 июл 2015.

  1. CheckA

    CheckA Нуб

    Друзья, добрый вечер.
    Проблема с программой на Arduino UNO, не срабатывает прерывание и видимо я что-то не понимаю, так как не вижу проблемы. Прерывание на скетче из примеров по миганию led работают.

    Код (Text):
    #include <LiquidCrystal.h>

    int val = 0;
    int r = 5;
    int g = 6;
    int b = 7;
    int p = 13;
    LiquidCrystal lcd(2, 4, 8, 9, 10, 11);
    volatile int butflag = LOW;
    volatile int timeflag = LOW;          
    long previousMillis = 0;      
    long interval = 15000;

    void setup()
    {
      pinMode(r, OUTPUT);
      pinMode(g, OUTPUT);              
      pinMode(b, OUTPUT);
      pinMode(p, OUTPUT);
    attachInterrupt(1, blink, CHANGE);
    lcd.begin(20, 4);
    lcd.print("Loading");
      delay(1000);            
      lcd.clear();            
    }

    void blink()
    {
      butflag = HIGH;                  
      timeflag = HIGH;
    }

    void loop()
    {
    lcd.clear();
    val = analogRead(0);
    lcd.print("GND HUM: ");
    lcd.print(val);
    unsigned long currentMillis = millis();
      if(currentMillis - previousMillis > interval)
      {
    previousMillis = currentMillis;
        if (timeflag == LOW)
          timeflag = HIGH;
      }

    if (val >= 450) {
    digitalWrite(r, timeflag);
    digitalWrite(g, LOW);
    digitalWrite(b, LOW);
    digitalWrite(p, butflag);
    }
    else if (val <= 260) {
    digitalWrite(r, LOW);
    digitalWrite(g, LOW);
    digitalWrite(b, timeflag);
    digitalWrite(p, butflag);
    }
    else {
    digitalWrite(r, LOW);
    digitalWrite(g, timeflag);
    digitalWrite(b, LOW);
    digitalWrite(p, butflag);
    }

    delay(5000);
    timeflag = LOW;
    butflag = LOW;

    }
     
     
  2. CheckA

    CheckA Нуб

    спасибо, разобрасля