Программирование

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Аватара пользователя
ser009
Сообщения: 595
Зарегистрирован: Сб окт 13, 2012 9:55 am
Благодарил (а): 4 раза
Поблагодарили: 43 раза

Re: Программирование

Сообщение ser009 » Чт ноя 29, 2012 3:53 pm

В данный момент разбираюсь с прошивкой от sochkasov

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

Код: Выделить всё


  /*********************************************************************************************************************
  * Кнопки для тестиролвания выходов
  **/
  server.println();
  server.println("<form METHOD=get action=\"http://192.168.8.120/command\">");
  server.println("<input type=hidden name=\"3\", value=\"ON\">");
  server.println("<input type=submit value=\"P3 On\">");
  server.println("</form>");
  
  server.println("<form METHOD=get action=\"http://192.168.8.120/command\">");
  server.println("<input type=hidden name=\"3\" value=\"OFF\">");
  server.println("<input type=submit value=\"P3 Off\">");
  server.println("</form>");
  server.println();
  
  server.println("<form METHOD=get action=\"http://192.168.8.120/command\">");
  server.println("<input type=hidden name=\"3\" value=\"LCLICK\">");
  server.println("<input type=submit value=\"P3 LCLICK\">");
  server.println("</form>");
  server.println();
}
Аватара пользователя
ser009
Сообщения: 595
Зарегистрирован: Сб окт 13, 2012 9:55 am
Благодарил (а): 4 раза
Поблагодарили: 43 раза

Re: Программирование

Сообщение ser009 » Чт ноя 29, 2012 4:41 pm

Натолкнулся вот на такой Web Server:
https://github.com/sergiomokshin/Arduino-WebServer
Аватара пользователя
ser009
Сообщения: 595
Зарегистрирован: Сб окт 13, 2012 9:55 am
Благодарил (а): 4 раза
Поблагодарили: 43 раза

Re: Программирование

Сообщение ser009 » Вс дек 02, 2012 6:17 am

Помогите дописать код для подключения датчика ворот и вывода температуры
Аватара пользователя
ser009
Сообщения: 595
Зарегистрирован: Сб окт 13, 2012 9:55 am
Благодарил (а): 4 раза
Поблагодарили: 43 раза

Re: Программирование

Сообщение ser009 » Вс дек 02, 2012 8:42 am

Вот так выглядит кусок кода для опроса состояния входа

Код: Выделить всё

* функция проверки входа
**/
int pirPin = 7; // присваеваем 7 ноге название pirPin
...
...
...
// Настройка портов на вывод
  pinMode (pirPin, INPUT);  // Настройка порта как вход
  digitalWrite(pirPin, LOW); // Установить на 7 ноге низкий уровень
... 
...
...
void CheckMotion() 
{
motionDetected = 0;
if(digitalRead(pirPin) == HIGH){
Serial.println("yes"); motionDetected = 1;}
else{/*Serial.println("no"); motionDetected = 0;*/}
}
Подскажите как сделать так чтобы данные не передавались постоянно в порт, а выходили только при изменении значение HIGH на LOW???
В порт постоянно передаются данные "no"
При нажатии передается "yes"
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Программирование

Сообщение sergejey » Пн дек 03, 2012 12:54 pm

В своём скетче я делал так... Определял переменную состояния
int old_pir=0;

далее в loop() делал опрос:

int currentPir=digitalRead(pirPin);
if (currentPir!=(int)old_pir) {
sprintf(buf, "GET /objects/?object=sensorMovementRemote1&op=m&m=statusChanged&status=%i HTTP/1.0", (int)currentPir);
sendHTTPRequest();
old_pir=(int)currentPir;
}

таким образом отсылался запрос только если состояние менялось

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
gans
Сообщения: 37
Зарегистрирован: Вс янв 06, 2013 2:57 pm
Благодарил (а): 15 раз
Поблагодарили: 3 раза

Re: Программирование

Сообщение gans » Вт янв 22, 2013 9:03 am

Всем доброго времени суток. У меня таже проблемма:
sochkasov писал(а):
Я пока не могу до конца разобраться с настройкой кода, выполняемого на сервере. И не могу понять некоторые вещи.
Например, если я делаю управление светом. В интерфейсе есть выключатель "ВКЛЮЧЕНИЕ СВЕТА".
В случае если контроллер подключен, то я нажимаю на эту кнопку, на контроллер посылается команда. На выходе контроллера получаем "1". Все правильно.
Но, я перегружаю контроллер. На заданном выходе я получаю "0". А в интерфейсе все равно отображается, что свет включен. Если я правильно понимаю для этого надо воспользоваться одним из 2-х способов, которые описаны тут http://smartliving.ru/Main/DevIpPower9223 . Но пока я не осилил привязку. Хотя состояние получаю.

Так вот, вопрос вот в чем. Не нужно сделать так, чтобы после каждого вызова команды на контроллере происходило примерно так:

1. Контроллер принял команду 5=ON
2. Делаем digitalWrite(5,HIGH);
3. Отсылаем на сервер что-то вроде /?P5=ON
В этом случае контроллер будет посылать подтверждение того, что он действительно включил "1" на 5 пине.
Залил на arduino прошивку от sochkasov, в веб-переменных состояние получаю но как правильно привязать к ним выключатель?

Помогите пожулуйста чайнику :D хочется разобраться, уж больно интересный проект.
Urbas81
Сообщения: 289
Зарегистрирован: Вс сен 16, 2012 9:39 am
Благодарил (а): 0
Поблагодарили: 1 раз

Re: Программирование

Сообщение Urbas81 » Сб янв 26, 2013 9:32 pm

Подскажите такой момент, как переменную, которая получается при выполнении страницы на php, завести в свойство переменной в объектах. Если конкрено: допустим вычисляется восход солнца получаем значение $t1
$t1=date_sunrise(time(), SUNFUNCS_RET_STRING, $lat, $long, $zenith, $offset); как можно дальше $t1 завести в систему, чтоб ней дальше можно было работать, например для управления освещением или индикации на страницах.
anemcov
Сообщения: 211
Зарегистрирован: Вт янв 08, 2013 11:50 pm
Откуда: Санкт-Петербург
Благодарил (а): 0
Поблагодарили: 6 раз

Re: Программирование

Сообщение anemcov » Сб янв 26, 2013 9:35 pm

Urbas81 писал(а):Подскажите такой момент, как переменную, которая получается при выполнении страницы на php, завести в свойство переменной в объектах. Если конкрено: допустим вычисляется восход солнца получаем значение $t1
$t1=date_sunrise(time(), SUNFUNCS_RET_STRING, $lat, $long, $zenith, $offset); как можно дальше $t1 завести в систему, чтоб ней дальше можно было работать, например для управления освещением или индикации на страницах.
например, у объекта ThisComputer создаем свойство sunrise.
Далее в скрипте просто вызываем

Код: Выделить всё

sg('ThisComputer.sunrise',$1);
Urbas81
Сообщения: 289
Зарегистрирован: Вс сен 16, 2012 9:39 am
Благодарил (а): 0
Поблагодарили: 1 раз

Re: Программирование

Сообщение Urbas81 » Сб янв 26, 2013 9:59 pm

anemcov писал(а):
Urbas81 писал(а):Подскажите такой момент, как переменную, которая получается при выполнении страницы на php, завести в свойство переменной в объектах. Если конкрено: допустим вычисляется восход солнца получаем значение $t1
$t1=date_sunrise(time(), SUNFUNCS_RET_STRING, $lat, $long, $zenith, $offset); как можно дальше $t1 завести в систему, чтоб ней дальше можно было работать, например для управления освещением или индикации на страницах.
например, у объекта ThisComputer создаем свойство sunrise.
Далее в скрипте просто вызываем

Код: Выделить всё

sg('ThisComputer.sunrise',$1);
но это если в скрипте писать, а у меня это отдельный файл sun.php который вызывается из меню, и в php это не проходит.
Urbas81
Сообщения: 289
Зарегистрирован: Вс сен 16, 2012 9:39 am
Благодарил (а): 0
Поблагодарили: 1 раз

Re: Программирование

Сообщение Urbas81 » Сб янв 26, 2013 10:16 pm

Продублировл функцию через сценарии, и оттуда через sg все получилось, спасибо за наводку, но интересно из внешнего файла это можно сделать?
Ответить