как отредактировать?

dongan
Offline
Зарегистрирован: 04.04.2016

всем персональное здрасте

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 ?

dongan
Offline
Зарегистрирован: 04.04.2016

ах да забыл сказать что работаем со сдвиговым регистром

vk007
Offline
Зарегистрирован: 16.06.2015

Термометры какие?

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

dongan пишет:

вернее как отредактировать переменную 0b11111111 ?

0b11111111 - это не переменная, а непосредственно двоичное число.

dongan пишет:

возник вопрос как передать данные в функцию shiftOut()

Объявить переменную, присвоить ей значение, подставить переменную в функцию shiftOut() вместо двоичного числа.

Тут есть пример

vk007
Offline
Зарегистрирован: 16.06.2015

Что еще в схеме есть? Неужели из более полутора десятков пинов не найдется 8 свободных? Обязательно вешать сдвиговый регистр?

dongan
Offline
Зарегистрирован: 04.04.2016

а еще один сдвиговый регистр на входы и тогда всего 6 выходов будут контролировать весь процесс самогоноварения

dongan
Offline
Зарегистрирован: 04.04.2016

безусловно пример замечательный но возможных вариантов подключения на 8-ми пинах это 8 в 8-й степени(больше 16 млн) у ардуинки памяти не хватит что бы все их запомнить

а вот такая команда из 0bXXXXXXXX дает возможность с помощю одной функции контролировать все значения каждого пина

вот и надо както провернуть это дело

dongan
Offline
Зарегистрирован: 04.04.2016

термометры обычные какие есть в магазине дело не в них а в переменной

как ее переменить при изменении входных значений?

vk007
Offline
Зарегистрирован: 16.06.2015

dongan пишет:

как ее переменить при изменении входных значений?

Входные значения - это какие? Что именно и в каком виде поступают в ардуину?

dongan
Offline
Зарегистрирован: 04.04.2016

входящие данные это значения аналового пардон аналогово входа преобразовываются в градусы целсия и хранятся в переменных т1,т2,т3,т4,т5,т6,т7,т8

максимальное допустимое значение 90 градусов каждому  при значениях ниже 90 лампочка выключена при достижении значения 90  любой переменной влючается красная лампочка на ножке соответствующей термометру термометр и лампочка на одной бочке

vk007
Offline
Зарегистрирован: 16.06.2015

dongan пишет:

входящие данные это значения аналового пардон аналогово входа

Блин, терморезисторы чтоли там стоят? Как партизан, чесслово. Догадайся мол сама...

Если задача только в том, чтобы зажигать 8 лампочек при превышении температуры на 8 каналах, то рекомендую сделать проще без регистров.

Вариант 1. Ардуина нано - у нее как раз 8 аналоговых входа (А0-А7) - цепляете на них терморезисторы, "лампочки" на любые из D2-D13. Еще 4 пина на запас остаются. Но на уно такой вариант не пройдет - на ней нет А6-А7.

Вариант 2. Использовать DS18B20 - на все 8 штук вообще один пин тратится. Еще +7 пинов освободилось. Плюс, по сравнению с резисторами, они цифровые (нет влияния кабелей) и откалиброваны с завода.

Но наше дело предложить, ваше дело - отказаться.

dongan
Offline
Зарегистрирован: 04.04.2016

vk007 пишет:

dongan пишет:

входящие данные это значения аналового пардон аналогово входа

Блин, терморезисторы чтоли там стоят? Как партизан, чесслово. Догадайся мол сама...

Если задача только в том, чтобы зажигать 8 лампочек при превышении температуры на 8 каналах, то рекомендую сделать проще без регистров.

Вариант 1. Ардуина нано - у нее как раз 8 аналоговых входа (А0-А7) - цепляете на них терморезисторы, "лампочки" на любые из D2-D13. Еще 4 пина на запас остаются. Но на уно такой вариант не пройдет - на ней нет А6-А7.

Вариант 2. Использовать DS18B20 - на все 8 штук вообще один пин тратится. Еще +7 пинов освободилось. Плюс, по сравнению с резисторами, они цифровые (нет влияния кабелей) и откалиброваны с завода.

Но наше дело предложить, ваше дело - отказаться.

за подсказку спасибо нужно именно через регистр

может еще скажешь как используя строчечную переменную "11111111" (или другую каккую с набором единиц и нулей) получить двоичную переменную которую можно передать в функцию shiftOut()для работы?

vk007
Offline
Зарегистрирован: 16.06.2015

dongan пишет:

может еще скажешь как используя строчечную переменную "11111111" (или другую каккую с набором единиц и нулей) получить двоичную переменную которую можно передать в функцию shiftOut()для работы?

Ну так разбери ее посимвольно, сравни каждый символ с '0' или '1' и собери соответственно побитово новую переменную.

Только зачем такие сложности со строкой с нулями и единицами? Откуда эта строка вообще взялась? Курсовая какая-то или диплом чтоли? Только там могут быть такие дебильные задания "сделать вот так и никак иначе".

vk007
Offline
Зарегистрирован: 16.06.2015

Еще могу предположить, что это какой-то левый заказ, оплата за который прямо пропорциональна объему кода и количеству корпусов микросхем на плате (или тот же диплом, где и кода надо побольше и одна ардуина в схеме сиротливо смотреться будет).