Больше дискретных выходов
- Войдите на сайт для отправки комментариев
Вс, 31/03/2013 - 21:49
Здравствуйте Уважаемые! Я хочу организовать свой АВР. Мне нужно 2 аналоговых входа, 6 дискретных входов и 14 дискретных выходов. Это возможно подключить к одной Arduino UNO? Может нужны какие то модули расширения?
Вот кстати, можно тут приглядеть.
Спасибо.
Добрый день!
Подскажите пожалуйста, я хочу подключить сдвиговый регистр 74HC595, по ссылке выше, но у меня пины там заняты sd модулем
http://www.dfrobot.com/wiki/index.php/SD_Module_%28SKU:_DFR0071%29
Можно ли сдвиговый регистр 74HC595 подключать на произвольные пины к UNO?
И вообще в инете встречаются примеры когда подключение происходит на pin 8-10
Пример http://bildr.org/2011/02/74hc595/
Можно.
Дабы не делать новую тему, есди ни кто не против, продолжу здесь. Как смог написал скетч.
int refrig = 11; // холодильник int offpower = 12; // реленапряжения int kotel = 13; // котел int val=0; void setup() { pinMode(kotel, OUTPUT); // это выход - котел pinMode(refrig, OUTPUT); // это выход - холодильник pinMode(offpower, INPUT); // а это вход - реле напряжения } void loop() { val = digitalRead(offpower); // узнаём состояние питания if(val==HIGH) // питание пропало { digitalWrite(kotel, LOW); // выключаем котел digitalWrite(refrig, LOW); //выключаем холодильник delay(1000); // задержка 1 сек digitalWrite(kotel, HIGH); // включаем котел delay(5400000); //время работы котла 90 мин digitalWrite(kotel, LOW); // выключаем котел delay(1000); // задержка 1 сек digitalWrite(refrig, HIGH); //включаем холодильник delay(1800000); // время работы холодильника 30 мин } else // питание есть { digitalWrite(kotel, HIGH); // включаем котел digitalWrite(refrig, HIGH); //включаем холодильник } delay(100); }Подскажите пожалуйста! Как можно заставить Ардуино при появлении питании сразу закончить программу, а не ждать ее завершения
Подскажите пожалуйста! Как можно заставить Ардуино при появлении питании сразу закончить программу, а не ждать ее завершения
Так и хочется ответить: не включать Ардуину.
Ибо непонятно, что же там должно завершаться "при появлении питания", если без питания вообще-то ничего не может начаться?
Попробуйте более корректно сформулировать свой вопрос...
Пытаюсь сделать АВР. У меня есть ИБП, который обеспечит питанием нагрузку 500 ВТ в течении 10 часов.
Задача.
1. При выключении питания (вырубили свет) АВР должен запитывать поочередно то котел то холодильник.
2. Одновременно с первой задачей, обеспечить освещением 4 помещения. При наличии движения в этих помещениях.
3. После появления питания все должно вернутся в обычный режим.
Про питание я имел ввиду не питание Ардуинки. В моем случае если offpower будет LOW, значит появилось питание (сетевое)
Исполнение программы на микроконтроллере завершить нельзя. Либо вы организуете в ней бесконечный цикл, либо раз за разом будет происходить переполнение программного счетчика и передача управления на адрес 0, что равноценно старту программы.
Так что придется вам смириться с тем, что микропрограмма исполняется постоянно. Хотите добиться того, чтобы
"3. После появления питания все должно вернутся в обычный режим."
поставьте соответствующее условие. Это делается примерно так же, как исполнение пунктов 1 и 2 в случае исчезновения питания. С этим вам, видимо, уже удалось справиться?
Пока нет.
Соответствующее условие? Знать бы как.
Я подумал что может возможно вынести отсчет времени куда то? По тому как если идет отсчет времени в моем скетче, то больше ничего не делается.
Соответствующее условие? Знать бы как.
Для реализации подобного не требуется ардуино - достаточно двух реле:
одно включено обмоткой во внешнюю сеть 220V, разомкнутой парой контактов держит отключенным бесперебойник(соответсвенно - при пропадании питания бесперебойник подключается к внутридомовой сети, а внешняя сеть отключается.)
второе отключает котёл при включении холодильника.
Соответствующее условие? Знать бы как.
Для реализации подобного не требуется ардуино - достаточно двух реле:
Это только начало. Хочется дальше увеличивать потенциал своего дома.
Это только начало. Хочется дальше увеличивать потенциал своего дома.
Какой был потенциал - такой и останется.
холодильник сутки можно не включать, котёл вообще не отключать, освещение не включать лишнее.
Это только начало. Хочется дальше увеличивать потенциал своего дома.
Какой был потенциал - такой и останется.
холодильник сутки можно не включать, котёл вообще не отключать, освещение не включать лишнее.
Ваша правда. Но все таки хочу начать с малого, что бы делать свой дом удобным.
Помогите разобраться. К Uno подключен сдвиговый регистр 74HC595.
К ножке Q2 сдвигового регистра 74HC595 подключен светодиод, хочу понять как заставить его к примеру моргать. В приведенном коде, он не моргает.
#define DS 11 //Пин подключен к DS входу 74HC595 #define SHCP 12 //Пин подключен к SH_CP входу 74HC595 #define STCP 10 //Пин подключен к ST_CP входу 74HC595 void setup() { pinMode(DS,OUTPUT); pinMode(SHCP,OUTPUT); pinMode(STCP,OUTPUT); //digitalWrite(SHCP,LOW); //digitalWrite(STCP,LOW); } void loop() { //for (int k=0;k<256;k++) { // shiftOut(DS,SHCP,LSBFIRST,k); // digitalWrite(STCP,HIGH); // delay(1); // digitalWrite(STCP,LOW); // delay(100); // } shiftOut(DS,SHCP,LSBFIRST, 01000000); digitalWrite(STCP,HIGH); delay(1000); digitalWrite(STCP,LOW); shiftOut(DS,SHCP,LSBFIRST,0); digitalWrite(STCP,HIGH); delay(1000); digitalWrite(STCP,LOW); delay(1000); }Разобрался сам
#define DS 11 //Пин подключен к DS входу 74HC595 #define SHCP 12 //Пин подключен к SH_CP входу 74HC595 #define STCP 10 //Пин подключен к ST_CP входу 74HC595 void setup() { pinMode(DS, OUTPUT); pinMode(SHCP, OUTPUT); pinMode(STCP, OUTPUT); } void loop() { digitalWrite(STCP, LOW); shiftOut(DS, SHCP, LSBFIRST, 0b01000000); digitalWrite(STCP, HIGH); delay(1000); digitalWrite(STCP, LOW); shiftOut(DS, SHCP, LSBFIRST, 0); digitalWrite(STCP, HIGH); delay(1000); }Пытаюсь сделать АВР. У меня есть ИБП, который обеспечит питанием нагрузку 500 ВТ в течении 10 часов.
Задача.
1. При выключении питания (вырубили свет) АВР должен запитывать поочередно то котел то холодильник.
2. Одновременно с первой задачей, обеспечить освещением 4 помещения. При наличии движения в этих помещениях.
3. После появления питания все должно вернутся в обычный режим.
Про питание я имел ввиду не питание Ардуинки. В моем случае если offpower будет LOW, значит появилось питание (сетевое)
в основном цикле управлять осещением и отслеживать появление и пропадание питания.
если питание пропало - установка прерывания по таймеру на 30 мин и переключение нагрузки в обработчике. При появлении питания сбрасыватиь обработчик прерывания в основном цикле
прерывание по таймеру в Arduino не тривиальная задача http://www.arduino.ru/Tutorial/Arduino_Interrupts_part2 .
Без него примерно так.
bool refrON=false; bool powerState=HIGH; unsigned long time; void powerLost(){ refrON=false; time = millis(); changeCurrent(); } void powerOn(){ digitalWrite(kotel, LOW); // выключаем котел digitalWrite(refrig, LOW); //выключаем холод } changeCurrent(){ if(refrON){ digitalWrite(kotel, HIGH); // включаем котел digitalWrite(refrig, LOW); //выключаем холодильник } else{ digitalWrite(kotel, LOW); // выключаем котел digitalWrite(refrig, HIGH); //включаем холодильник } refrON=!refrON; } void setup(){ } void loop() { if(digitalRead(offpower) !=powerState){ // state changed {powerState=!powerState; if(powerState==HIGH)//power lost powerOff(); else powerOn();} else if (powerState==HIGH && millis()-time>30*60000) changeCurrent(); //здесь управление освещением }у меня устройства нет, так что код "ориентировочный"
//здесь управление освещением
//включаем свет в туалете.
//выключаем холодильник.
зы
цирк и кони.
прерывание по таймеру в Arduino не тривиальная задача http://www.arduino.ru/Tutorial/Arduino_Interrupts_part2 .
Без него примерно так.
у меня устройства нет, так что код ориентировочный
Спасибо! На днях попробую и напишу здесь.
Используйте библиотеку SimpeTimer для асинхронных событий: ОЧЕНЬ просто и очень функцинально.
В вашемм случае позволит обойтись без прерываний и постоянно мониторить события (например, наличие 220v).