Управление 12-ти сегментным блоком светодиодов

puhloschiok
puhloschiok аватар
Offline
Зарегистрирован: 02.11.2017

Всем привет! Прошу подсказку по управлению вот таким блоком:

Я знаю о существовании сдвиговых регистров вроде 74HC595, но к нему можно подключить только 8 светодиодов (если я не ошибаюсь). Возможно есть вариант использования двух таких схем одновременно. В проекте используется Adruino Nano, поэтому есть необходимость в экономии пинов.

puhloschiok
puhloschiok аватар
Offline
Зарегистрирован: 02.11.2017

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

nik182
Offline
Зарегистрирован: 04.05.2015
puhloschiok
puhloschiok аватар
Offline
Зарегистрирован: 02.11.2017

Благодарю! Пересмотрел несколько статей, но всё было не то. А по питанию что скажете? Если от Nano всё это дело питать, включая светодиодный модуль и два таких чипа?

b707
Offline
Зарегистрирован: 26.05.2017

puhloschiok пишет:

 А по питанию что скажете? Если от Nano всё это дело питать, включая светодиодный модуль и два таких чипа?

У вас Нано будет ток вырабатывать?

А если нет - то от чего Нано будете питать, от того же и это все хозяйство.

puhloschiok
puhloschiok аватар
Offline
Зарегистрирован: 02.11.2017

Это всё и так понятно. Но некоторые схемы требуют отдельной запитки, не через пин 5V Ардуино. Вот это я и имел в виду.

b707
Offline
Зарегистрирован: 26.05.2017

puhloschiok пишет:

Это всё и так понятно. Но некоторые схемы требуют отдельной запитки, не через пин 5V Ардуино. Вот это я и имел в виду.

Вы не поняли. Я не предлагаю питать схему "через пин 5V Ардуино". Сделайте внешний БП 5в и от него питайте и Ардуину, и остальную схему.

puhloschiok
puhloschiok аватар
Offline
Зарегистрирован: 02.11.2017

Вот теперь понимаю :) Благодарю!

puhloschiok
puhloschiok аватар
Offline
Зарегистрирован: 02.11.2017

Товарищи, возник ещё один вопрос по подключению этого блока светодиодов. А именно: у китайцев не могу найти схему подключения. Нужны ли резисторы для подключения этого блока к 74HC595? Спасибо.

bizzon
Offline
Зарегистрирован: 29.03.2016

Нужны.

puhloschiok
puhloschiok аватар
Offline
Зарегистрирован: 02.11.2017

Может ещё и номиналы подскажете? =) Или это только у продавца уточнять?

bizzon
Offline
Зарегистрирован: 29.03.2016

Давайте посчитаем. По даташиту максимальный ток через элемент- 30ма, прямое напряжение-2,5 вольта. Если подавать пять вольт, то:

(5-2,5):0,03=82 ома минимум.

Будет очень ярко. Я бы ом 200 поставил.

puhloschiok
puhloschiok аватар
Offline
Зарегистрирован: 02.11.2017

bizzon огромное спасибо и за даташит и за разъяснения!

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

bizzon пишет:

Давайте посчитаем. По даташиту максимальный ток через элемент- 30ма, прямое напряжение-2,5 вольта. Если подавать пять вольт, то:

(5-2,5):0,03=82 ома минимум.

Будет очень ярко. Я бы ом 200 поставил.

Если будет динамическая индикация, насколько ярко - оценить трудно.

Но необходимо еще и учитывать ограничение по току 595 регистра.

bizzon
Offline
Зарегистрирован: 29.03.2016

Разберётся сам я думаю :)

SLKH
Offline
Зарегистрирован: 17.08.2015

puhloschiok пишет:

Товарищи, возник ещё один вопрос по подключению этого блока светодиодов. А именно: у китайцев не могу найти схему подключения. Нужны ли резисторы для подключения этого блока к 74HC595? Спасибо.

а вот это http://arduino.ru/Tutorial/registr_74HC595 для кого писалось?

puhloschiok
puhloschiok аватар
Offline
Зарегистрирован: 02.11.2017

SLKH спасибо. Позже я эту статью нашёл по запросу с упоминанием 74HC595. Но пока я не знал о существовании регистров, то и найти ничего подходящего не мог.

Вот сейчас как раз иду забирать с почты этот светодиодный блок. Регистры с платами для удобства подключения уже купил. Отпишусь по результатам.

puhloschiok
puhloschiok аватар
Offline
Зарегистрирован: 02.11.2017

Вобщем по отдельности подключил. Сопротивление около 220 Ом нормально. Если ниже, то слишком ярко светит.

Попробую теперь через пару 74HC595 весь блок подключить. Только вот не знаю, как бы удобство работы с этим блоком светодиодным повысить так сказать. В стандартный бредборд не воткнуть — расстояние между ногами у него раза в полтора меньше. Был бы какой-то сокет с контактами, к которым подсоединяться удобно. Завтра на радио рынок поеду. Поищу что-нибудь подходящее.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

puhloschiok пишет:

Вобщем по отдельности подключил. Сопротивление около 220 Ом нормально. Если ниже, то слишком ярко светит.

Попробую теперь через пару 74HC595 весь блок подключить.

Боюсь, что для выходов 595 регистра сопротивления меньше 330 брать нельзя.

puhloschiok
puhloschiok аватар
Offline
Зарегистрирован: 02.11.2017

andriano спасибо за совет! прикуплю значит резисторов с номиналом не менее 330.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Давайте я приведу рассуждения аналогичные рассуждениям bizzon'а для регистров.

Максимальный ток через ВСЕ выводы регистра 70 мА. Ног - 8. Если используются все ноги, на каждую приходится примерно по 9 мА. Падение напряжения на светодиоде при 9 мА будет меньше, чем при 30 мА, допустим, вольта 2. Тогда на резистор остается 3 В. 9 мА при трех вольттах дают как раз 330 Ом.

Но есть один момент, который Вы должны оценить самостоятельно: в зависимости от конкретной схемы подключения регистра к индикатору и конкретного набора используемых знаков вполне может оказаться, что ни в каком из режимов у регистра не задействуются все 8 сегментов. Для 7-сегментного такого режима нет в "8" зажигаются все 7 сегментов + независимо может зажигаться точка. А вот в 12-сегментном одновременная работа всех сегментов сомнительна. Тогда следует посчитать для конкретного подключения и конкретного набора символов максимальное количество одновременно включенных выходов регистра. Если оно окажется не 8, а меньше, то именно на это число следует делить 70 мА, чтобы скорректировать расчет.

puhloschiok
puhloschiok аватар
Offline
Зарегистрирован: 02.11.2017

andriano благодарю за то, что разъясняете такие нюансы.

Принцип работы устройства будет таким, что в светодиодном блоке будет всегда гореть от 1 до 12 светодиодов. Вкратце: есть две кнопки, одна из них уменьшает значение переменной i, другая — увеличивает. В зависимости от значения переменной меняется количество активных в данный момент светодиодов слева направо.

Меня вот что смущает. Регистр расчитан на 8 выходов, светодиодов 12. Т.е. к первому регистру будет подключено 8 светодиодов, а ко второму всего 4. Я так понимаю, что лучше равномерно распределить элементы между двумя регистрами, чтобы везде использовать резисторы одного номинала?

Например, если к каждому регистру я подключу 6 элементов, то 70мА нужно будет разделить на 6. Получаем около 11.666мА на каждом выходе.

К тому же, даташит мне привели для жёлтого блока, а у меня красный (извиняюсь, что сразу не написал, понимаю, что для разных цветов нужно разное сопротивление): https://www.chipdip.ru/product/dd-12hwb?from=rec_product И тут максимальный ток уже 25 мА.

На сколько я понял, вы рассуждали о символьном индикаторе (с точкой). У меня же просто так называемая линейная «шкала».

 

sadman41
Offline
Зарегистрирован: 19.10.2016

595 - это сдвиговый регистр, т.е. если соединить две и более штуки цепочкой (см. daisy chain) слать в него более 8 бит, то часть из них протолкнется на следующую (следующие) МС. Таким образом - можно подключить к каждой МС по 6 (или по 3, 4, 7...) и слать в цепочку данные так, чтобы значащие биты приходились на ноги, к которым подключены СД. Делайте shiftout()  чисел в двоичном виде и тогда сразу будет понятно, как это работает.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Да, я что-то перепутал с 14-сегментным: 

Резисторы, конечно, нужны одинаковые, даже если к регистрам подключавется неодинаковое количество светодиодов. Иначе яркость будет разная.

При красном цвете свечения - минимальное падение напряжения на диодах, значит, на резисторах будет больше, следовательно, номиналы нужно увеличивать. В общем, думаю, можно остановиться на 270. Опять же, максимальный ток ограничивается не светодиодом, а регистром.

 

PS. Да, если дело упирается в нагрузочную способность регистров, можно ведь поставить их и 3 штуки.

strarbit
Offline
Зарегистрирован: 12.06.2016
Image already added
 
 

It is interesting, is not it?

 
puhloschiok
puhloschiok аватар
Offline
Зарегистрирован: 02.11.2017

Товарищи, прошу помощи со следующим шагом по управлению этим светодиодным блоком.

Значит наигрался я вдоволь, как с одним регистром, так и с парочкой. Зажигал светодиоды слева направо и наоборот. Включал нужный по команде с Serial-порта. И всякое разное. Это я делал с обычными светодиодами и подключенными один за другим с 0 по 7 пины каждого регистра.

Переходя к реальному проекту, чтобы вписаться по току, я разбил 12 светодиодов этого блока на три группы. Т.е. по 4 светодиода на один регистр. Каждая из групп подключена к 0-3 управляющим пинам регистров. Сами регистры, естественно, соединены последовательно. Таким образом, обычное перебирание от первого до последнего пинов в цикле уже не прокатывает :)

Прошу совета, как управлять такой "конструкцией".

У меня был вариант: отправлять значения в байтах по маске. Например "B11110000 B10000000 B0000000" Включает 5 первых светодиодов (четыре на первом регистре, и первый на втором). Но для этого надо отправлять аж три команды shiftOut(). Что кажется мне не оптимальным и некрасивым решением.

Так же были мысли, создать массив, где каждое из 12 значений будет отвечать за соответствующий порт на соответствующем регистре, а затем перезаписывать его. Но не знаю, как это выразить в коде.

Мне очень понравилось решение одного автора, где он управлял парочкой регистров с помощью отдельной функции, с простым числовым указанием номера порта от 0 до 15.

Вот пример функции:

// этот метод отсылает бит на сдвиговый регистр
 
void registerWrite(int whichPin, int whichState) {
  // для хранения 16 битов используем unsigned int
  unsigned int bitsToSend = 0;
 
  // выключаем светодиоды на время передачи битов
  digitalWrite(latchPin, LOW);
 
  // устанавливаем HIGH в соответствующий бит
  bitWrite(bitsToSend, whichPin, whichState);
 
  // разбиваем наши 16 бит на два байта
  // для записи в первый и второй регистр
  byte registerOne = highByte(bitsToSend);
  byte registerTwo = lowByte(bitsToSend);
 
  // "проталкиваем" байты в регистры
  shiftOut(dataPin, clockPin, MSBFIRST, registerOne);
  shiftOut(dataPin, clockPin, MSBFIRST, registerTwo);
 
  // "защелкиваем" регистр, чтобы биты появились на выходах регистра
  digitalWrite(latchPin, HIGH);
}

Но, как быть с тремя регистрами? Как разбить их на три группы? К сожалению моих познаний пока ещё далеко не достаточно... Заранее благодарю всех, кто натолкнёт на правильные мысли :)

sadman41
Offline
Зарегистрирован: 19.10.2016

В случае с фиксированным количеством регистров - три шифтаута не самое худшее для любителя решение.

Варианты такие:
- бежите в цикле по байтовому массиву на всю его длину и каждый байт шифтаутите
- пишете свою функцию шифтаута, которая берет какой-нибудь unsigned long, бежит по его битам, выставляет на dataPin состояние, потом клокает.
- ...

puhloschiok
puhloschiok аватар
Offline
Зарегистрирован: 02.11.2017

sadman41 благодарю за подсказку, но с моими познаниями в программировании, я, возможно, не правильно вас понял)

Вот что пока получилось:

void loop() {
  if (Serial.available() > 0) {
    int led = Serial.parseInt();
    
    switch (led) {
      case 1: digitalWrite(latchPin, LOW);
              shiftOut(dataPin, clockPin, LSBFIRST, B00000000);
              shiftOut(dataPin, clockPin, LSBFIRST, B10000000);
              digitalWrite(latchPin, HIGH);
              Serial.println(led);
              break;
      case 2: digitalWrite(latchPin, LOW);
              shiftOut(dataPin, clockPin, LSBFIRST, B00000000);
              shiftOut(dataPin, clockPin, LSBFIRST, B11000000);
              digitalWrite(latchPin, HIGH);
              Serial.println(led);
              break;
      case 3: digitalWrite(latchPin, LOW);
              shiftOut(dataPin, clockPin, LSBFIRST, B00000000);
              shiftOut(dataPin, clockPin, LSBFIRST, B11100000);
              digitalWrite(latchPin, HIGH);
              Serial.println(led);
              break;
      case 4: digitalWrite(latchPin, LOW);
              shiftOut(dataPin, clockPin, LSBFIRST, B00000000);
              shiftOut(dataPin, clockPin, LSBFIRST, B11110000);
              digitalWrite(latchPin, HIGH);
              Serial.println(led);
              break;
      case 5: digitalWrite(latchPin, LOW);
              shiftOut(dataPin, clockPin, LSBFIRST, B10000000);
              shiftOut(dataPin, clockPin, LSBFIRST, B11110000);
              digitalWrite(latchPin, HIGH);
              Serial.println(led);
              break;
      case 6: digitalWrite(latchPin, LOW);
              shiftOut(dataPin, clockPin, LSBFIRST, B11000000);
              shiftOut(dataPin, clockPin, LSBFIRST, B11110000);
              digitalWrite(latchPin, HIGH);
              Serial.println(led);
              break;
      case 7: digitalWrite(latchPin, LOW);
              shiftOut(dataPin, clockPin, LSBFIRST, B11100000);
              shiftOut(dataPin, clockPin, LSBFIRST, B11110000);
              digitalWrite(latchPin, HIGH);
              Serial.println(led);
              break;
      case 8: digitalWrite(latchPin, LOW);
              shiftOut(dataPin, clockPin, LSBFIRST, B11110000);
              shiftOut(dataPin, clockPin, LSBFIRST, B11110000);
              digitalWrite(latchPin, HIGH);
              Serial.println(led);
              break;
      default: Serial.println("no no no!");
    }
  }
}

Вместо изменения значений кнопками, я пока что передаю их из Serial-порта, но вцелом на суть дела это не влияет. По результатам тестов могу сказать, что результат вполне рабочий, хоть и громоздкий до жути. Но я пока не придумал, как хотя бы частично оптимизировать код. Например я почти уверен, что передачу LOW и HIGH на Latch-пин можно было бы не делать в каждом кейсе.

И да, хочу сразу заметить, что я в данном тесте использовал только два регистра и восемь светодиодов, т.к. бредборд весьма скромных размеров и туда больше не впихнуть. Но, опять же, суть от этого не меняется.

Если подскажете, как правильнее сделать, буду благодарен. Хотя бы простейший пример мне очень помог бы.

sadman41
Offline
Зарегистрирован: 19.10.2016
const uint8_t data[][2] = {
 {B00000000, B10000000},  // 1
 {B00000000, B11000000},  // 2
..
}

...

void loop() {
   ...
   int led = Serial.parseInt();

   //if (0 < led && 9 > led) {
   if (0 < led && (sizeof(data)/sizeof(data[0])) > led) {
      Serial.println(led);

      digitalWrite(latchPin, LOW);
      for (uint8_t i=0; i < sizeof(data[0]); i++){
          shiftOut(dataPin, clockPin, LSBFIRST, data[led][i]);
       }
      digitalWrite(latchPin, HIGH);
   }
}

 

puhloschiok
puhloschiok аватар
Offline
Зарегистрирован: 02.11.2017

Ничего себе! Честно сказать, я под впечатлением! О___о

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

Большущее спасибо!

sadman41
Offline
Зарегистрирован: 19.10.2016

Думаю, что если в sizeof()-ах я не ошибся, то для масштабирования достаточно будет только массив наращивать: как в длину, так и в ширину.

 

puhloschiok
puhloschiok аватар
Offline
Зарегистрирован: 02.11.2017

Да вроде всё в порядке с размерностью (с третим регистром постараюсь уже завтра проверить). Единственное: при вводе "1" загорается сразу два светодиода, т.е. берётся вторая строка массива. И я пока не понял, почему так происходит. Ну и так далее, по нарастающей. Т.е. всегда на единицу больше. И больше "7" ввести не даёт.

sadman41
Offline
Зарегистрирован: 19.10.2016

А, ну всё правильно. В Си нумерация массивов с нуля, а не с "раз", как у человеков. Т.е. надо минус один делать там, где обращение к массиву идет и условия пропуска в if откорректировать. Или сразу led-- сделать после получения, что проще.

После PHP с перловкой сложно переключиться сразу на другой язык.

puhloschiok
puhloschiok аватар
Offline
Зарегистрирован: 02.11.2017

sadman41 чуточку поправил ваш код, и всё стало просто идеально!

const int latchPin = 10; // ST_CP
const int clockPin = 11; // SH_CP
const int dataPin = 9; // DS
const uint8_t data[][2] = {
  {B00000000, B10000000},
  {B00000000, B11000000},
  {B00000000, B11100000},
  {B00000000, B11110000},
  {B10000000, B11110000},
  {B11000000, B11110000},
  {B11100000, B11110000},
  {B11110000, B11110000}
};

void setup() {
  pinMode(latchPin, OUTPUT);
  pinMode(dataPin, OUTPUT); 
  pinMode(clockPin, OUTPUT);
  Serial.begin(9600);
  digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, LSBFIRST, B00000000);
  shiftOut(dataPin, clockPin, LSBFIRST, B00000000);
  digitalWrite(latchPin, HIGH);
}
 
void loop() {
  int led = Serial.parseInt();
  
  if (led > 0 && led < (sizeof(data)/sizeof(data[0]) + 1)) {
      Serial.println(led);

      digitalWrite(latchPin, LOW);
      for (uint8_t i=0; i < sizeof(data[0]); i++){
          shiftOut(dataPin, clockPin, LSBFIRST, data[led - 1][i]);
       }
      digitalWrite(latchPin, HIGH);
  }
}

Ещё раз премного благодарен!

sadman41
Offline
Зарегистрирован: 19.10.2016

Пара замечаний: 
1)  if (Serial.available() > 0) не стоит убирать;
2)  led < (sizeof(data)/sizeof(data[0]) + 1) легко заменяется на led <= (sizeof(data)/sizeof(data[0]));
3) если к массиву добавить {B00000000, B00000000}, то вообще ничего править не нужно, а при вынесении дерганья защелки с циклом и шифтаутом в отдельную функцию, и в сетапе и в лупе можно делать что-то вроде showLedsOn595(<переменная или константа>) и это будет еще немного красивее.

puhloschiok
puhloschiok аватар
Offline
Зарегистрирован: 02.11.2017

sadman41 почти всё понял)

1. Удалил совершенно случайно. Конечно это не надо было убирать из кода

2. Где-то на подсознательном уровне у меня было понимание, что именно так и надо сделать, но логика дала сбой ночью :)

3. Добавлять в массив байты с указанием отключения всех светодиодов я как раз таки не хотел. Потому что в логике работы устройства такое не возможно. Всегда будет светиться от 1 до 12. Просто чтоб с толку не сбивало.

С функциями я пока только разбираюсь. Боюсь, то что вы описали, я просто не осилю. Но у меня есть понимание того, что хорошо бы это из общего лупа вынести отдельно.

sadman41
Offline
Зарегистрирован: 19.10.2016

puhloschiok пишет:

3. Добавлять в массив байты с указанием отключения всех светодиодов я как раз таки не хотел. Потому что в логике работы устройства такое не возможно. Всегда будет светиться от 1 до 12. Просто чтоб с толку не сбивало.

Два шифтаута в setup() опровергают фразу "такое не возможно". Поверьте мне - как только засунете вывод в функцию и добавите в массив '0' - код будет понятней. И через несколько недель не придется вспоминать, почему там делается -1.

puhloschiok
puhloschiok аватар
Offline
Зарегистрирован: 02.11.2017

В setup'е намеренно сделал полное выключение, чтобы протестировать все входящие значения, включая "1". В рабочем проекте этого не будет. Но доверюсь вашим рекомендациям, и всё-таки поправлю код именно таким образом :)

sadman41
Offline
Зарегистрирован: 19.10.2016

Кстати, я вспомнил, что есть вот такая штука: https://www.ti.com/lit/ds/symlink/tpic6b595.pdf

puhloschiok
puhloschiok аватар
Offline
Зарегистрирован: 02.11.2017

sadman41 намекаете, что она потянула бы 8 светодиодов, и можно было бы обойтись двумя такими, вместо трёх 74HC595?

SLKH
Offline
Зарегистрирован: 17.08.2015

1 корпус 74HC595, 1 корпус ULN2003, 2 цифровых pnp транзистора, 6 резисторов и всё это слегка продинамить.

sadman41
Offline
Зарегистрирован: 19.10.2016

Я TPIC нашел, когда пытался уйти от 595+2003, а тут наоборот что ли? Кстати, в гугле попадаются LED drivers и на 12 позиций, вроде даже с интерфейсом, как у 595, но на али и в чипдипе я их не обнаружил.

SLKH
Offline
Зарегистрирован: 17.08.2015

sadman41 пишет:

Я TPIC нашел, когда пытался уйти от 595+2003, а тут наоборот что ли? Кстати, в гугле попадаются LED drivers и на 12 позиций, вроде даже с интерфейсом, как у 595, но на али и в чипдипе я их не обнаружил.

TRIC, конечно, ладнее. Просто у мя их нет, а 595 и 2003 есть... 

 

А если бы ТС 1 раз измерил реальный ток через свои светодиоды при достаточной для него яркости, возможно, и одного 595 хватило бы.

 

sadman41
Offline
Зарегистрирован: 19.10.2016

SLKH пишет:

А если бы ТС 1 раз измерил реальный ток через свои светодиоды при достаточной для него яркости, возможно, и одного 595 хватило бы.

Верное замечание. У меня есть блок индикации от коммутатора D-Link - светодиодная матрица, коммутируемая через HC164 в мелких корпусах для поверхностного монтажа (не знаю, как по-научному зовутся). Работает, не греется. Но светодиоды там неяркие, зеленые на 5мм.

puhloschiok
puhloschiok аватар
Offline
Зарегистрирован: 02.11.2017

SLKH, sadman41, в действительности я пытался измерить реальный ток, но, в силу того, что в хозяйстве у меня дешёвый китайский мультиметр (которым ранее только напряжение и сопротивление измерялось в основном), оказалось, что он попросту эту важнейшую функцию не выполняет. В режиме измерения силы тока на дисплее всегда «1» высвечивается, а иногда вообще начинает работать как таймер! О___о Т.е. значение каждую секунду на единицу увеличивается. Вобщем глючный аппарат. Собираюсь обзавестись чем-то более адекватным, но ещё не успел. Обо всём этом я просто не писал, чтобы не отвлекать людей знающих ненужной информацией.

Вцелом я прекрасно понимаю, что если не одного (т.к. светодиодов всё-таки 12, а выходов у 595 всего восемь) так двух регистров типа 595 мне хватило бы. Но решил не рисковать во-первых, а во-вторых решилась интересная задача — передавать данные из массива, в чём sadman41 просто гениально мне помог, за что ещё раз ему спасибо. Только благодаря таким трудностям и новой информации получается хоть чуточку больше узнать и понять.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

puhloschiok, вероятно, Вы просто не умеете пользоваться тестером.

Вам нужно:

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

2. Измерить тестером напряжение на этом резисторе.

3. Вынуть резистор из схемы и тестером измерить его сопротивление.

4. По закону Ома посчитать ток.

 

Измерять именно в такой последовательности, т.к. любой прибор вносит в измерения определенные искажения. Соответственно, измерять нужно так, чтобы эти искажения были минимальны. Вы же пытались измерять так, что искажения оказались больше самой измеряемой величины.

puhloschiok
puhloschiok аватар
Offline
Зарегистрирован: 02.11.2017

andriano спасибо, что растолковали! Действительно, таким образом замерять ток мне не приходилось. Ранее пользовался стандартным методом, подключая тестер в разрыв цепи при подключенной нагрузке.

Тем не менее, я уже добился рабочей схемы нужным мне образом. Единственное возможное улучшение, которое мне видится: могло бы всё-таки и двух 595-х регистров хватить. Но яркость свечения при сопротивлении 330 Ом меня вполне устраивает, ну и с массивами разобрался. Может кому-то ещё будет полезен такой способ управления подобными светодиодными блоками.