Mega 2560 PRO MINI

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем FOXL, 6 сен 2019.

  1. FOXL

    FOXL Нерд

    Всё же код в таком виде работает.

    Код (C++):

    volatile boolean flag;

    int D = 6;                    
    int A = 10;
    int S = 2;
    int EX = 7;
    int B = 8;
    int R = 5;
    int Rel = 3;

    void setup()
    {
      // Debug console
      Serial.begin(115200);
    pinMode(D, OUTPUT);
    pinMode(A, OUTPUT);
    pinMode(S, OUTPUT);
    pinMode(EX, OUTPUT);
    pinMode(R, OUTPUT);
    pinMode(B, OUTPUT);
    pinMode(Rel, INPUT_PULLUP);
    attachInterrupt(1, myInterrupt, CHANGE);
    }

    void loop()
    {
      if (flag) {

              {
              //Закрытие Just Dance

              digitalWrite(EX, HIGH);
             delay(100);

             digitalWrite(EX, LOW);
             delay(500);

             digitalWrite(D, HIGH);
             delay(100);

             digitalWrite(D, LOW);
             delay(200);

             digitalWrite(D, HIGH);
             delay(100);

             digitalWrite(D, LOW);
             delay(200);

             digitalWrite(S, HIGH);
             delay(100);

             digitalWrite(S, LOW);
             delay(1000);

             digitalWrite(D, HIGH);
             delay(100);

             digitalWrite(D, LOW);
             delay(200);

             digitalWrite(D, HIGH);
             delay(100);

             digitalWrite(D, LOW);
             delay(200);

             digitalWrite(D, HIGH);
             delay(100);

             digitalWrite(D, LOW);
             delay(200);

             digitalWrite(D, HIGH);
             delay(100);

             digitalWrite(D, LOW);
             delay(200);

             digitalWrite(A, HIGH);
             delay(100);

             digitalWrite(A, LOW);
             delay(1000);

             digitalWrite(B, HIGH);
             delay(100);

             digitalWrite(B, LOW);
             delay(1000);

             digitalWrite(A, HIGH);
             delay(100);

             digitalWrite(A, LOW);
             delay(60000);

             digitalWrite(A, HIGH);
             delay(100);

             digitalWrite(A, LOW);
             delay(15000);

             digitalWrite(A, HIGH);
             delay(100);

             digitalWrite(A, LOW);
             delay(7000);

             digitalWrite(A, HIGH);
             delay(100);

             digitalWrite(A, LOW);
             delay(3000);

             digitalWrite(A, HIGH);
             delay(100);

             digitalWrite(A, LOW);
             delay(8000);

             digitalWrite(B, HIGH);
             delay(100);

             digitalWrite(B, LOW);
             delay(500);

             digitalWrite(D, HIGH);
             delay(100);

             digitalWrite(D, LOW);
             delay(500);

             digitalWrite(A, HIGH);
             delay(100);

             digitalWrite(A, LOW);
             delay(500);

             digitalWrite(D, HIGH);
             delay(3000);

             digitalWrite(D, LOW);
             delay(1000);

             digitalWrite(R, HIGH);
             delay(100);

             digitalWrite(R, LOW);
             delay(2000);
    }
            flag = 0;}
                            else
                {

                 digitalWrite(D, HIGH);
                  delay(100);

                  digitalWrite(D, LOW);
                  delay(500);

                  digitalWrite(A, HIGH);
                  delay(100);

                  digitalWrite(A, LOW);
                  delay(30000);
            }
    }
    void myInterrupt() {
      flag = 1;
    }
    Данные по номерам прерываний взял тут.
    Для PIN 3 прервывание 1
    Если я конечно верно понял. Но это точно работает.
     
    Последнее редактирование: 7 сен 2019
  2. b707

    b707 Гуру

    Да, вероятно вы правы. Наверно в Ардуино ИДЕ такая нумерация.
    Просто на пине 3 в Меге находится INT5 - поэтому мне казалось, что и в ардуино оно будет называться 5 - но не угадал :), видимо для совместимости с Уно сделали на ногах 2 и3 прерывание 0 и 1
     
  3. FOXL

    FOXL Нерд

    Нормально, мы не машины, всего не учтёшь.
    Спасибо за помощь.
    Проблема была в неправильном параметре прерывания, но я б наверно ещеб неделю мозг ломал, в какую сторону копать, думая что параметр, это номер пина:D
    Стронно что NodeMCU работало. Надо глянуть что у неё по прерываниям.
     
  4. issaom

    issaom Гуру

    Дело в данном случае не в раздражении а в здравом смысле. Обращение на форум с вопросами по готовой конструкции предполагает что электроника собрана правильно - ведь если что-то собрано не верно с точки зрения электроники то мы можем завалить вас ценными советами но у вас так ничего и не заработает. Обидеть я Вас точно не хотел....
     
    Последнее редактирование: 7 сен 2019
  5. FOXL

    FOXL Нерд

    Тоже верно. Со своей стороны я сам должен был выдать всю картину в целом.
    Итог: кнопка в большом скетче в работает по старому подключению для INPUT_PULLUP, без завода на питание и на пин с землёй через резистор.
    Ошибка была в неверно вбитом номере прерываниям для конкретной платы.
     
    issaom нравится это.