как отредактировать?
- Войдите на сайт для отправки комментариев
Ср, 06/04/2016 - 09:49
всем персональное здрасте
int dataPin=12; int clockPin=11; int latchPin=13; void setup(){ pinMode(dataPin,OUTPUT); pinMode(clockPin,OUTPUT); pinMode(latchPin.OUTPUT); } void loop(){ vhod(); obrabotka(); vihod(); } void vhod(){ //тут будет получать данные пока с этим ясно } void obrabotka(){ /* тут надо код который орабатывает переменную 0 111111 и в зависимости от того какой сигнал получен на входе такой сигнал должен быть и на выходе регистра */ } void void vihod(){ digitalWrite(latchPin,LOW); shiftOut(dataPin,clockPin,MSBFIRST, 0b11111111); //вот интересует слопо 0b11111111 digitalWrite(latcPin,HIGH); }
ситуация такова есть 8 термометров и 8 лампочек соответственно каждому термометру
в зависимости от того превышает ли температура допустимое значение лампочка горит или выключена
возник вопрос как передать данные в функцию shiftOut() вернее как отредактировать переменную 0b11111111 ?
ах да забыл сказать что работаем со сдвиговым регистром
Термометры какие?
вернее как отредактировать переменную 0b11111111 ?
0b11111111 - это не переменная, а непосредственно двоичное число.
возник вопрос как передать данные в функцию shiftOut()
Объявить переменную, присвоить ей значение, подставить переменную в функцию shiftOut() вместо двоичного числа.
Тут есть пример
Что еще в схеме есть? Неужели из более полутора десятков пинов не найдется 8 свободных? Обязательно вешать сдвиговый регистр?
а еще один сдвиговый регистр на входы и тогда всего 6 выходов будут контролировать весь процесс самогоноварения
безусловно пример замечательный но возможных вариантов подключения на 8-ми пинах это 8 в 8-й степени(больше 16 млн) у ардуинки памяти не хватит что бы все их запомнить
а вот такая команда из 0bXXXXXXXX дает возможность с помощю одной функции контролировать все значения каждого пина
вот и надо както провернуть это дело
термометры обычные какие есть в магазине дело не в них а в переменной
как ее переменить при изменении входных значений?
как ее переменить при изменении входных значений?
Входные значения - это какие? Что именно и в каком виде поступают в ардуину?
входящие данные это значения аналового пардон аналогово входа преобразовываются в градусы целсия и хранятся в переменных т1,т2,т3,т4,т5,т6,т7,т8
максимальное допустимое значение 90 градусов каждому при значениях ниже 90 лампочка выключена при достижении значения 90 любой переменной влючается красная лампочка на ножке соответствующей термометру термометр и лампочка на одной бочке
входящие данные это значения аналового пардон аналогово входа
Блин, терморезисторы чтоли там стоят? Как партизан, чесслово. Догадайся мол сама...
Если задача только в том, чтобы зажигать 8 лампочек при превышении температуры на 8 каналах, то рекомендую сделать проще без регистров.
Вариант 1. Ардуина нано - у нее как раз 8 аналоговых входа (А0-А7) - цепляете на них терморезисторы, "лампочки" на любые из D2-D13. Еще 4 пина на запас остаются. Но на уно такой вариант не пройдет - на ней нет А6-А7.
Вариант 2. Использовать DS18B20 - на все 8 штук вообще один пин тратится. Еще +7 пинов освободилось. Плюс, по сравнению с резисторами, они цифровые (нет влияния кабелей) и откалиброваны с завода.
Но наше дело предложить, ваше дело - отказаться.
входящие данные это значения аналового пардон аналогово входа
Блин, терморезисторы чтоли там стоят? Как партизан, чесслово. Догадайся мол сама...
Если задача только в том, чтобы зажигать 8 лампочек при превышении температуры на 8 каналах, то рекомендую сделать проще без регистров.
Вариант 1. Ардуина нано - у нее как раз 8 аналоговых входа (А0-А7) - цепляете на них терморезисторы, "лампочки" на любые из D2-D13. Еще 4 пина на запас остаются. Но на уно такой вариант не пройдет - на ней нет А6-А7.
Вариант 2. Использовать DS18B20 - на все 8 штук вообще один пин тратится. Еще +7 пинов освободилось. Плюс, по сравнению с резисторами, они цифровые (нет влияния кабелей) и откалиброваны с завода.
Но наше дело предложить, ваше дело - отказаться.
за подсказку спасибо нужно именно через регистр
может еще скажешь как используя строчечную переменную "11111111" (или другую каккую с набором единиц и нулей) получить двоичную переменную которую можно передать в функцию shiftOut()для работы?
может еще скажешь как используя строчечную переменную "11111111" (или другую каккую с набором единиц и нулей) получить двоичную переменную которую можно передать в функцию shiftOut()для работы?
Ну так разбери ее посимвольно, сравни каждый символ с '0' или '1' и собери соответственно побитово новую переменную.
Только зачем такие сложности со строкой с нулями и единицами? Откуда эта строка вообще взялась? Курсовая какая-то или диплом чтоли? Только там могут быть такие дебильные задания "сделать вот так и никак иначе".
Еще могу предположить, что это какой-то левый заказ, оплата за который прямо пропорциональна объему кода и количеству корпусов микросхем на плате (или тот же диплом, где и кода надо побольше и одна ардуина в схеме сиротливо смотреться будет).