Arduino UnoR3 + LEDs + shift registers
Re: Arduino UnoR3 + LEDs + shift registers НЕ РАБОТАЕТ КАК О
да. проблема решилась можно я уточню: == это точное значение "равно", а = это обратное, т.е. "не равно"? да и еще: сейчас я подключила latch И clock выходы регистров не последовательно между собой, а всех к первому. код Ваш последний. сейчас синхронятся 1й и 3й и 2 и 4й регистры.
- Mr.Kubikus
- Сотрудник ПАКПАК
- Сообщения: 1020
- Зарегистрирован: 22 окт 2010, 23:57
Re: Arduino UnoR3 + LEDs + shift registers НЕ РАБОТАЕТ КАК О
Отлично.
По поводу == и =:
= используется при присвоении значений переменным. Например var1 = 10 - означает, что вы присваиваете значение 1- переменной var1.
== используется при сравнении значений в конструкциях типа if, while, for. Например, в конструкции if (var1 == 1) {func();} func() будет выполняться только когда значение переменной var1 равно 1.
Теперь перейдем к вашему последнему вопросу по поводу четырех последовательно включенных регистров.
Ваш код не работает потому, что в переменной leds, в которой хранится значение для отображения на светодиодах, можно хранить только 16 бит, а для управления четырьмя регистрами требуется 32 бита данных. Размер памяти для переменной указывается при объявлении переменной:
int - 16 бит со знаком
unsigned long - 32 бита без знака.
Чтобы все заработало используйте для объявления переменной leds следующее выражение:
Рекомендую прочитать на сайте arduino.cc раздел про переменные - http://arduino.cc/en/Reference/VariableDeclaration.
По поводу == и =:
= используется при присвоении значений переменным. Например var1 = 10 - означает, что вы присваиваете значение 1- переменной var1.
== используется при сравнении значений в конструкциях типа if, while, for. Например, в конструкции if (var1 == 1) {func();} func() будет выполняться только когда значение переменной var1 равно 1.
Теперь перейдем к вашему последнему вопросу по поводу четырех последовательно включенных регистров.
Ваш код не работает потому, что в переменной leds, в которой хранится значение для отображения на светодиодах, можно хранить только 16 бит, а для управления четырьмя регистрами требуется 32 бита данных. Размер памяти для переменной указывается при объявлении переменной:
int - 16 бит со знаком
unsigned long - 32 бита без знака.
Чтобы все заработало используйте для объявления переменной leds следующее выражение:
Код: Выделить всё
unsigned long leds = 0;
Re: Arduino UnoR3 + LEDs + shift registers НЕ РАБОТАЕТ КАК О
Григорий, теперь все работает. И звук и последовательность. Еще я думаю, что нужно бы кнопку приделать, чтобы отключать лампу, когда она не нужна. Но надеюсь, что смогу сделать это сама. Еще раз спасибо Вам большое. Как доделаю лампу - выложу
- Mr.Kubikus
- Сотрудник ПАКПАК
- Сообщения: 1020
- Зарегистрирован: 22 окт 2010, 23:57
Re: Arduino UnoR3 + LEDs + shift registers НЕ РАБОТАЕТ КАК О
Пожалуйста.
Думаю у вас все получится. Ждем фото вашего изделия и описание.
Думаю у вас все получится. Ждем фото вашего изделия и описание.
Re: Arduino UnoR3 + LEDs + shift registers НЕ РАБОТАЕТ КАК О
Григорий, у меня теперь вопрос по технической части. Для него нужно заводить новую тему или можно здесь? Вопрос вот в чем: в моей лампе применяется Ambient Light Sensor. Есть ли какая-то возможность вынести с этой платки фоторезистор (отнести на расстояние от самой платки сенсора)? Возможно для него есть еще дополнительные неиспользованные разъемы на плате самого сенсора? Я подумываю о том, чтобы выпаять стоящий там фоторезистор и заменить его на обычный фоторезистор, но на более длинных ножках, чтобы он располагался не вплотную к плате. Возможно есть другой более простой способ. Подскажите, пожалуйста, если это так. Заранее спасибо.
- Mr.Kubikus
- Сотрудник ПАКПАК
- Сообщения: 1020
- Зарегистрирован: 22 окт 2010, 23:57
Re: Arduino UnoR3 + LEDs + shift registers НЕ РАБОТАЕТ КАК О
Конечно вы можете выпаять фоторезистор из платы и подсоединить его к ней проводами нужной длины. Просто подпаяете провода к тем контактным площадкам, где был фоторезистор.