Arduino с 8 светодиодами и выключателем

У меня есть задание, в котором у нас есть 8 светодиодов, подключенных к Arduino Uno, у которого есть переключатель. Эти светодиоды загораются в соответствии со счетчиком Джонсона, но каждый раз, когда я выключаю переключатель, он должен сбрасываться к началу. Например, если я выключу переключатель, когда пин находится на 8, возвращаясь к 1, то когда я включаю его, он должен снова вернуться к 1. Я правильно понял часть сброса с 1 на 8, но с 8 на 1 у меня возникли проблемы.

Вот мой код:

int pin;
int sw3 = 10;

void setup() {
  // put your setup code here, to run once:
  for (pin = 2; pin <= 9; pin++) {
    pinMode(pin, OUTPUT);
  }
  pinMode(sw3, INPUT);
}

void loop() {
  pin == 2;
  if (digitalRead(sw3) == HIGH) {
    for (pin = 2; pin <= 9; pin++) {
      digitalWrite(pin, HIGH);
      delay(200);
    }
  }
  else {
    digitalWrite(pin, LOW);
  }

  delay(200);

  for (pin = 2; pin <= 9; pin++)
  {
    digitalWrite(pin, LOW);
  }
  delay(200);

  if (digitalRead(sw3) == HIGH) {
    for (pin = 9; pin >= 2; pin--) {
      digitalWrite(pin, HIGH);
      delay(200);
    }
  }
  else {

    digitalWrite(pin, LOW);
  }

  delay(200);

  for (pin = 9; pin >= 2; pin--) {
    digitalWrite(pin, LOW);
  }
  delay(200);
  {
    if (digitalRead(sw3) == LOW) {
      digitalWrite(pin, LOW);
    }
    else {
      digitalWrite(pin, LOW);
    }
  }
}

, 👍1

Обсуждение

Я не могу понять, в чем ваша проблема. Код также, похоже, не делает счетчик Джонсона. Не могли бы вы перефразировать свой вопрос и, возможно, отметить в коде, где у вас проблема?, @Gerben


1 ответ


Лучший ответ:

1

Некоторые исправления:

pin==2; здесь должно быть только 1 =. == — это сравнение.

pinMode(sw3,INPUT); сделайте это INPUT_PULLUP, чтобы включить внутренний подтягивающий резистор

if(digitalRead(sw3)==HIGH){ измените это на LOW и подключите переключатель/кнопку так, чтобы при нажатии контакт подключался к GND. Внутренний подтягивающий резистор не будет гарантировать, что контакт находится в состоянии HIGH, когда он не нажат, а кнопка/переключатель переведет его в состояние LOW при нажатии. Таким образом, контакт не может «плавать» и возвращать случайное значение HIGH или LOW.

,

Я думаю, что они используют внешний выпадающий список., @Gerben

проблема, вероятно, в штифте == 2., @CrossRoads