595 Сдвиговый Регистр Не Работает Должным Образом

Я следовал учебнику по управлению 8 светодиодами с помощью сдвигового регистра SIPO SN74HC595N как на Adafruit, так и на Last Minute Engineer. Я использовал Sparkfun Pro Micro (эквивалент Arduino).

Проблема в том, что светодиоды не загораются так, как я ожидаю. Оба гида сказали, что каждый светодиод будет загораться один за другим. После того как все 8 будут зажжены, все они погаснут. Вот мой результат. Другие светодиоды будут либо тускнеть вверх, либо опускаться вниз по мере включения целевого светодиода. Я воспользовался кодом, приведенным в руководстве, и изменил только номер распиновки. Значения резисторов одинаковы для каждого цвета, так что это не может быть резистор. Кто-нибудь знает, что здесь происходит?

/*
Тестовый код для сдвигового регистра SIPO 74HC595N. Используется с Pro Micro
*/

int latchPin = 16;
int clockPin = 15;
int dataPin = 14;
int outputEnablePin = 10;

byte leds = 0;    // Переменная для хранения шаблона того, какие светодиоды в данный момент включены или выключены

void setup() 
{
  // Установите все контакты 74HC595 в качестве выходных
  pinMode(latchPin, OUTPUT);
  pinMode(dataPin, OUTPUT);  
  pinMode(clockPin, OUTPUT);
  pinMode(outputEnablePin, OUTPUT);
  outputEnablePin = LOW;
}

/*
 * loop() - this function runs over and over again
 */
void loop() 
{
  leds = 0; // Изначально выключает все светодиоды, придавая переменной 'leds' значение 0
  updateShiftRegister();
  delay(500);
  for (int i = 0; i < 8; i++) // Turn all the LEDs ON one by one.
  {
    bitSet(leds, i);    // Установить бит, управляющий этим светодиодом в переменной 'leds'
    updateShiftRegister();
    delay(500);
  }
}

/*
 * updateShiftRegister() - Эта функция устанавливает фиксатор в low, затем вызывает функцию Arduino "shiftOut", чтобы переместить содержимое переменной "leds" в регистр сдвига, прежде чем снова поставить "фиксатор" high.
 */
void updateShiftRegister()
{
   digitalWrite(latchPin, LOW);
   shiftOut(dataPin, clockPin, LSBFIRST, leds);
   digitalWrite(latchPin, HIGH);
}

Схемы:

, 👍0

Обсуждение

- Значения резисторов одинаковы для каждого цвета, так что это не может быть резистор.` Почему ты так думаешь? Ток через светодиод диктуется значением резистора и прямым напряжением светодиода. Прямое напряжение светодиода диктуется цветом. Таким образом, вам нужно правильно подобрать размер резистора для каждого цвета светодиода., @Majenko

Тем не менее, тот факт, что некоторые включаются частично, когда они не должны этого делать, на самом деле вызывает беспокойство., @Majenko

Ваш pro micro-это 3,3 В или 5 В?, @Majenko

Pro Micro-5V. Что я имел в виду под резисторами, так это два светодиода одного цвета и 4 разных цвета. Я вычисляю значение резисторов на основе их заданного напряжения и тока для каждого цвета. Значение резистора одинаково для пары светодиодов одного цвета., @Agriculex

Это действительно поможет, если вы добавите схему того, как вы на самом деле построили схему, вместо того, чтобы я пытался отладить вашу схему из анимированного GIF с низким разрешением. Ваш код выглядит нормально на первый взгляд, кстати., @StarCat

GND 74HC595 подключен к правой силовой рейке (синяя линия) на вашей макетной плате. Но этот рельс **не соединяется** с GND Arduino., @Gerben

Я делал схему для StarCat и только что обнаружил эту ошибку GND! Глупый я! Я подключил его к земле, и теперь диммирующие светодиоды исчезли! Однако у меня все еще есть проблемы со светодиодом. Светодиоды не загораются в том порядке, в котором их спроектировал код., @Agriculex

@Agriculex, рад быть полезным ;-) Вы могли бы написать ответ на свой собственный вопрос., @StarCat

Я только что нашел решение проблемы с шаблоном. В руководствах не было сказано (по крайней мере, недостаточно ясно), что вывод 10 (SRCLR с линией/полосой сверху) должен быть подключен к 5V., @Agriculex

@Agriculex - Пожалуйста, ответьте на свой собственный вопрос, а затем примите этот ответ в течение 48 часов., @VE7JRO

StackExchange-это *не* форум. Вы не редактируете заголовок вопроса с помощью "Решено", если у вас есть ответ. Вместо этого вы пишете ответ и (позже, когда вам разрешат) отмечаете его. Пожалуйста, исправьте это. Люди, приходящие сюда, не ищут "Решенных", они ищут отмеченные ответы., @the busybee

Сделал это только что. Я все еще новичок в том, как работает StackExchange opps., @Agriculex


1 ответ


1

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

Однако по-прежнему существует проблема с режимом включения и выключения светодиода. Иногда два светодиода включаются одновременно, и все предыдущие светодиоды гаснут до включения последнего или предпоследнего светодиода. Оказывается, вывод 10 (панель SRCLR) необходимо поднять до максимума, чтобы устранить это несоответствие шаблону.

,

ДА. Вы не можете оставлять важные контакты, такие как SRCLR, плавающими. Сигналы, которые имеют значение, должны быть намеренно установлены. Верно для любого чипа., @lurker