Помощь в создании проекта для ардуино нано

Братцы! Нужна помощь со скетчем ардуино нано. Алгоритм : управление 4 реле 1 кнопкой, при первом нажатии срабатывает реле1, при втором реле1 отключается, включается реле2, при третьем реле2 отключается, включается реле 3, при четвертом реле 3 отключается, включается реле 4 при пятом реле4 отключается, включается реле1и2, при шестом реле 1и2 отключаются, а реле 3и4 включаются, при седьмом реле 3и4отключаются, а реле 1,2,3,4 включаются, при восьмом все реле отключаются, при дальнейших нажатиях цикл повторяется.

и что?

помощь - штука взаимная. Ты - мне, я - тебе. Эта концепция знакома? :moneybag: :dollar: или :wine_glass: :tumbler_glass: :beer:

Бэзвозмездно, то есть даром, могу предложить разместить твой пост в Алисе от Яндекса. Уж не знаю, почему ты сам это не сделал. Сделать? Или все-таки осилишь “контрол Цэ, контрол Вэ”? Алиса, конечно не чатЖПТ, но скетчи писать умеет.

Скину тебе АВР на owenlogic промышленная

вот на этот промпт

Алиса выдала вот это. Это на первый взгляд правильное решение. :wink:
Дикие вы все какие-то люди, честное пионерское. :rofl:

Спойлер

Вот готовый скетч для Arduino Nano:

const int buttonPin = 2;    // Кнопка подключена к пину 2
const int relay1 = 4;       // Реле 1 подключено к пину 4
const int relay2 = 5;       // Реле 2 подключено к пину 5
const int relay3 = 6;       // Реле 3 подключено к пину 6
const int relay4 = 7;       // Реле 4 подключено к пину 7

int buttonState = 0;        // Текущее состояние кнопки
int lastButtonState = 0;    // Предыдущее состояние кнопки
unsigned long lastDebounceTime = 0; // Время последнего изменения состояния кнопки
unsigned long debounceDelay = 50;  // Задержка для подавления дребезга

int step = 0;              // Текущий шаг цикла

void setup() {
  pinMode(buttonPin, INPUT);
  pinMode(relay1, OUTPUT);
  pinMode(relay2, OUTPUT);
  pinMode(relay3, OUTPUT);
  pinMode(relay4, OUTPUT);
}

void loop() {
  // Считываем текущее состояние кнопки
  buttonState = digitalRead(buttonPin);
  
  // Если состояние изменилось
  if (buttonState != lastButtonState) {
    lastDebounceTime = millis();
  }

  // Если прошло достаточно времени для подавления дребезга
  if ((millis() - lastDebounceTime) > debounceDelay) {
    // Если кнопка нажата
    if (buttonState == LOW) {
      step = (step + 1) % 8;  // Переходим к следующему шагу цикла
      
      // Обновляем состояние реле в зависимости от шага
      switch(step) {
        case 0:
          digitalWrite(relay1, HIGH);
          digitalWrite(relay2, LOW);
          digitalWrite(relay3, LOW);
          digitalWrite(relay4, LOW);
          break;
        case 1:
          digitalWrite(relay1, LOW);
          digitalWrite(relay2, HIGH);
          digitalWrite(relay3, LOW);
          digitalWrite(relay4, LOW);
          break;
        case 2:
          digitalWrite(relay1, LOW);
          digitalWrite(relay2, LOW);
          digitalWrite(relay3, HIGH);
          digitalWrite(relay4, LOW);
          break;
        case 3:
          digitalWrite(relay1, LOW);
          digitalWrite(relay2, LOW);
          digitalWrite(relay3, LOW);
          digitalWrite(relay4, HIGH);
          break;
        case 4:
          digitalWrite(relay1, HIGH);
          digitalWrite(relay2, HIGH);
          digitalWrite(relay3, LOW);
          digitalWrite(relay4, LOW);
          break;
        case 5:
          digitalWrite(relay1, LOW);
          digitalWrite(relay2, LOW);
          digitalWrite(relay3, HIGH);
          digitalWrite(relay4, HIGH);
          break;
        case 6:
          digitalWrite(relay1, HIGH);
          digitalWrite(relay2, HIGH);
          digitalWrite(relay3, HIGH);
          digitalWrite(relay4, HIGH);
          break;
        case 7:
          digitalWrite(relay1, LOW);
          digitalWrite(relay2, LOW);
          digitalWrite(relay3, LOW);
          digitalWrite(relay4, LOW);
          break;
      }
    }
  }

  lastButtonState = buttonState;
}

Как использовать:

NaN. Подключите кнопку к пину 2 (можно использовать другой пин, но нужно изменить в коде)
NaN. Подключите реле к пинам 4, 5, 6, 7 (можно использовать другие пины, но нужно изменить в коде)
NaN. Загрузите скетч в Arduino Nano

Особенности:

  • Реализовано подавление дребезга кнопки
  • Цикличность работы
  • Четкая последовательность включения/выключения реле
  • Простой и понятный код

При необходимости можно изменить номера пинов под вашу схему подключения, а также настроить задержку для подавления дребезга (debounceDelay).

А оно мне нужно?

Вы бы сначала согласия другой стороны спросили. Надеюсь, Вам известно, что: «Согласие есть продукт при полном непротивлении сторон»?

А если по делу, то Вам нужна не помощь, а халява, чтобы кто-то просто сделал это за Вас. Так вот, так оно не работает.

Если Вам нужна эта приблуда, добро пожаловать в коммерческий раздел форума и заказывайте её там по обоюдо-устраивающей цене. Ибо, как уже сказано: «Согласие есть продукт при полном непротивлении сторон»

1 лайк

Для чего тогда отозвался, умник. Без тебя обошелся за 30 мин.