вопросы по программированию

volk0001
Offline
Зарегистрирован: 04.04.2014

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

void setup() {   
  pinMode(29, OUTPUT); // свет большая комната 1
  pinMode(28, OUTPUT); // свет большая комната 2
  pinMode(27, OUTPUT); // свет маленькая комната
  pinMode(26, OUTPUT); // свет корридор
  pinMode(25, OUTPUT); // свет уборная
  // реле на пине 24 зарезервированно под вытяжку
  pinMode(23, OUTPUT); // свет кухня
  pinMode(33, INPUT);  // выключатель большая комната 1
  pinMode(37, INPUT);  // выключатель большая комната 2
  pinMode(41, INPUT);  // выключатель маленькая комната
  pinMode(45, INPUT);  // выключатель корридор
  pinMode(49, INPUT);  // выключатель уборная
  pinMode(53, INPUT);  // выключатель кухня
  
  digitalWrite(33, HIGH); // подтягивающие резисторы
  digitalWrite(37, HIGH);
  digitalWrite(41, HIGH);
  digitalWrite(45, HIGH);
  digitalWrite(49, HIGH);
  digitalWrite(53, HIGH);
}
void loop() {
  digitalWrite(29, !digitalRead(33));
  digitalWrite(28, !digitalRead(37));
  digitalWrite(27, !digitalRead(41));
  digitalWrite(26, !digitalRead(45));
  digitalWrite(25, !digitalRead(49));
  digitalWrite(23, !digitalRead(53));
}

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

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

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

 
 
Looka
Offline
Зарегистрирован: 24.04.2012

Это нормально.

"Убежав из дома, Алиса увидела под старой яблоней большого белого кролика, одетого в куртку и жилет. Достав из кармана часы, кролик торопливо скрылся в подозрительно темной норе. Набравшись смелости, Алиса шагнула вслед за ним... и попала в чудесный сказочный мир, где сбываются самые несбыточные фантазии. Чтобы попасть обратно домой, Алисе придется совершить путешествие через весь этот странный и причудливый мир, в котором ее поджидают совершенно невероятные приключения и совершенно фантастические существа..."

И еще.
Читайте. Первоисточники. Например учебники. Или форум. Керниган и Ритчи Вам о чем нибудь говорит?

И еще кто те многие кто не рекомендует?

volk0001
Offline
Зарегистрирован: 04.04.2014

p.s. сама ардуина не греется, видимо шилд бракованный

p.p.s. при представленном выше скетче отчего-то горит светодиод "L", хотя триннадцатый порт нигде и не упоминается.

volk0001
Offline
Зарегистрирован: 04.04.2014

Looka пишет:
ЭКерниган и Ритчи Вам о чем нибудь говорит? И еще кто те многие кто не рекомендует?
увы, названные вами имена не вызывают в моей памяти ни малейшего отклика. собственно говоря, это первый частично написанный мною код)) касаемо подтягивающих резисторов -- да любую статью откройте, хотя бы на вашем форуме...

nestandart пишет:

В ардуино есть встроенные подтягивающие резисторы (pull-up) которые можно включить программно, но я не советую их использовать.

 

Looka
Offline
Зарегистрирован: 24.04.2012

Плохо.
Хорошие имена и книжка полезная. Хотя и не про ардуино.

А ув. nestandart там не пишет почему?

volk0001
Offline
Зарегистрирован: 04.04.2014

Looka пишет:
Плохо. Хорошие имена и книжка полезная. Хотя и не про ардуино. А ув. nestandart там не пишет почему?

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

касаемо ув. nestandart-a, просмотрел тему про кнопки, он пишет что подтягивающие резисторы, во-первых, тянут токмо "вверх", кроме того они не наглядны для новичков, и вообще, он не претендует на звание истины в последней инстанции.

но все же за повальными рекомендациями не использовать встренные резисторы должна стоять какая-то об'ективная причина?

triada13
Offline
Зарегистрирован: 04.01.2013

Причина одна - визуальный контроль. С програмными резисторами можно и позабыть подключить, а внешние сразу видно.

volk0001
Offline
Зарегистрирован: 04.04.2014

triada13 пишет:

Причина одна - визуальный контроль. С програмными резисторами можно и позабыть подключить, а внешние сразу видно.

в принципе, причина веская, но в случае с реле они быстро напоминают о забывчивости, звук почти как от дверного звонка))

 

возвращаюсь к своим предыдущим вопросам, во-первых, как об'единить несколько готовых скетчей в один? особливо ежели один из скетчек постоен на if-ах, а второй как у меня.

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

p.s. ежели вас не затруднит, посоветуйте еще адекватный эмулятор под линукс (ну или нормально запускающийся под вайном), а то ардуина уже сегодня должна занять свое место в щитке, а вторую для экспериментов покупать жаба душит.

alexey_and
Offline
Зарегистрирован: 03.03.2013

вы б хотя бы выложили программы, которые собираетесь объединять, а то не понятно о чем речь

эмулятора нормального лично я не видел, а так сложно купить вторую плату за 300-500р? на фоне проложенного километра витухи эта сумма как-то теряется.  и какой смысл от нее в щитке, если у вас программы еще нет? или можно такую фишку на нее навесить http://www.kvminfo.ru/catalog/514.html

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Парни, красавци, давно так не ржал. Причём с самого начала темы - прям с говнокода ))))))))))))

volk0001 мне напоминает себя,  такой же лентяюга как и я (без обид). Один хрен изучать придётся, никуда не денешься. volk0001, у Вас слишком много вопросов, чтоб их вот так щелчком решили форумчане и не одного, почти, примера.

Коды смешивайте в кучу так: всё что вне тела setup и loop, записываете  вне тела setup и loop. Всё что в теле setup? запишите в тело setup. не не, дальше почти как подумали только можно упростить, чтоб не запутаться. Можно спрятать разные коды по разным, вновьобьявленным функциям а в теле loop просто к ним обращаться. Пример:



.......
.......
........                        //тут всё что не там

void setup()
{
......
.......                          // тоже самое
}

void loop()
{                                 //основной цикл
mygovnocode_1();
mygovnocode_2();
mygovnocode_3();
}

void mygovnocode_1()
{
...................               //операторы первого гавнокода
}
void mygovnocode_2()
{
......................        
}

void mygovnocode_3()
{
...................               //операторы третьего гавнокода
}

 

inspiritus
Offline
Зарегистрирован: 17.12.2012

Хм.. Арда греется... А Вы релюшки напрямую к арде подключали?

.. А еще помимо "керниганаСричем" есть "труп страуса" ;)

volk0001
Offline
Зарегистрирован: 04.04.2014

alexey_and пишет:
 какой смысл от нее в щитке, если у вас программы еще нет? 

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

hugoboss317 пишет:

Коды смешивайте в кучу так: всё что вне тела setup и loop, записываете  вне тела setup и loop. Всё что в теле setup? запишите в тело setup. не не, дальше почти как подумали только можно упростить, чтоб не запутаться. Можно спрятать разные коды по разным, вновьобьявленным функциям а в теле loop просто к ним обращаться. 

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

inspiritus пишет:

Хм.. Арда греется... А Вы релюшки напрямую к арде подключали?

.. А еще помимо "керниганаСричем" есть "труп страуса" ;)

 

как выяснилось, грелась не ардуина, а бракованный езернет шилд. а что, есть какие-то нюансы подключения вот таких китайских релюшек?

 

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Да Вы код выкладивайте, и спрашивайте что хотите с ним сделать.

 

volk0001
Offline
Зарегистрирован: 04.04.2014

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

alexey_and
Offline
Зарегистрирован: 03.03.2013

volk0001 пишет:

бракованный езернет шилд.

у меня мой греется так, что палец может максимум сек 10 терпеть, а функции свои выполняет исправно

думаю может приклеить на него радиатор, тем более некоторые фирмы так и делают