Последовательное включение диодов, прошу помощи в скетче

Wiring, Processing, библиотеки

Последовательное включение диодов, прошу помощи в скетче

Сообщение samum » 30 ноя 2015, 11:13

Здравствуйте, уважаемые участники форума.
В наличии arduino uno, 20 диодов, 3 сдвиговых регистра и огромное желание сделать так, чтобы эти 20 диодов включились друг за другом в столбик с 1 по 20, простояли включёнными некоторое время, далее всё погасло и столбик начинал расти заново. Как некая шкала или индикатор.
За некоторое время изучения интернетов на предмет подобных решений родился скетч. Его итерации умеют:
-зажигать диоды по отдельности, (т.е. первый горит,следующий гаснет)сверху вниз
-и снизу вверх,
- от любого диода в столбике до следующего любого диода,
- все 20 диодов включаются одновременно
- одновременно включается рандомное число диодов в столбике
..но научить его работать так, как мне надо не получилось. :(
На всякий случай, выкладываю скетч, который зажигает и гасит диоды по отдельности друг за другом
Код: Выделить всё
//ST_CP вход
const int latchPin = 8;
//SH_CP вход
const int clockPin = 12;
//DS вход
const int dataPin = 11;

void setup() {
  //режим OUTPUT
  pinMode(latchPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
}

void loop() {
  // проходим по всем выходам трёх регистров, 25 потому, что если 24
// то последний диод не горит
  for (int thisLed = 0; thisLed < 25; thisLed++) {
  // записываем сигнал в регистр для очередного светодиода
  registerWrite(thisLed, LOW);
  // если это не первый светодиод, то отключаем предыдущий
  if (thisLed > 0) {
  registerWrite(thisLed - 1, HIGH);
  }
  // если это первый светодиод, то отключаем последний
  else {
  registerWrite(19, LOW);
  }
  // делаем паузу
  delay(250);
  }
}
// этим куском кода подключаем регистры в нужном кол-ве
void registerWrite(int whichPin, int whichState) {
// инициализируем и обнуляем байт
  byte bitsToSend[3] = {0, 0, 0};
  digitalWrite(latchPin, LOW);
  // устанавливаем HIGH в соответствующем бите
  bitWrite(bitsToSend[whichPin/8], whichPin%8, whichState);
  // проталкиваем байт в регистр
  for(int i = 0; i < 3; i++) shiftOut(dataPin, clockPin, LSBFIRST, bitsToSend[i]);
  // "защелкиваем" регистр, чтобы байт появился на его выходах
  digitalWrite(latchPin, HIGH);
}


Помогите, пожалуйста, в решении
samum
 
Сообщения: 1
Зарегистрирован: 30 ноя 2015, 11:01

Re: Последовательное включение диодов, прошу помощи в скетче

Сообщение admin » 30 ноя 2015, 16:26

Аватара пользователя
admin
Администратор
 
Сообщения: 315
Зарегистрирован: 05 май 2011, 14:57
Откуда: Калининград


Вернуться в Программирование

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron
© 2009-2017 |  О проекте  |  Политика Конфиденциальности  |