Проблема с отображением веб-страницы w5100

Andrey-S
Offline
Зарегистрирован: 02.01.2015

Вечер добрый всем! Почти мой проект достиг апогея, как  вновь непонятная хрень возникает... Соединил УНО и w5100 ничего более не подключая.... Написал кодищще немаленький и загрузил в дуинку... Все прекрасно работает.... Дописал кодищще чуток и тут понеслаааась: то пост-запрос в гет превращается сам по себе.... То буква в кракозябру превратится нисфига... То кнопка "рефреш" (отправка запроса на сервер) вообще исчезнет... Вот кусок html кода:

client.println("HTTP/1.1 200 OK");
      client.println("Content-Type: text/html");
     
      client.println();
      client.println("<html>");
      client.println("<head>");
      client.println("<meta http-equiv='content-type' content='text/html; charset=utf-8'>");
      client.println("<title>Эксперимент</title>");
      client.println("</head>");
      client.println("<body>");
      client.println("<h3>Ардуинка HOUSE</h3>");
    client.println("<form method='post'>");
      client.print("Фактическая Температура основного водогрея =<b><big> ");
      client.print(tempC);
      client.println("</big></b>*C;");
      client.print("<p>Заданная Температура основного водогрея = ");
      client.println("<select name='t1'>");
      client.println("<option value='00'");
     if (a==00){
      client.println("selected");
    digitalWrite (relePin[4], HIGH);}
     else  digitalWrite (relePin[4], LOW);
      client.println(">00</option>");
   
      client.println("<option value='35'");
     if (a==35)
      client.println("selected");
      client.println(">35</option>");
      client.println("<option value='40'");
      if (a==40)
      client.println("selected");
      client.println(">40</option>");
        client.println("<option value='45'");
      if (a==45)
      client.println("selected");
      client.println(">45</option>");
      client.println("<option value='50'");
      if (a==50)
      client.println("selected");
      client.println(">50</option>");
      client.println("<option value='55'");
      if (a==55)
      client.println("selected");
      client.println(">55</option>");
       client.println("</select></p>");
       
       client.print("Фактическая Температура вспомогат водогрея =<b><big> ");
      client.print(tempC2);
      client.println("</big></b>*C;");
      client.print("<p>Заданная Температура вспомогат водогрея = ");
      client.println("<select name='t2'>");
     client.println("<option value='00'");
     if (b==00){
      client.println("selected");
    digitalWrite (relePin[5], HIGH);}
     else  digitalWrite (relePin[4], LOW);
      client.println(">00</option>");
      client.println("<option value='35'");
     if (b==35)
      client.println("selected");
      client.println(">35</option>");
      client.println("<option value='40'");
      if (b==40)
      client.println("selected");
      client.println(">40</option>");
        client.println("<option value='45'");
      if (b==45)
      client.println("selected");
      client.println(">45</option>");
      client.println("<option value='50'");
      if (b==50)
      client.println("selected");
      client.println(">50</option>");
      client.println("<option value='55'");
      if (b==55)
      client.println("selected");
      client.println(">55</option>");
       client.println("</select></p>");
        client.print("Состояние розетки основного водогрея=");  
     client.println(digitalRead(relePin[4])); 
    client.print("<p>Состояние розетки вспомогательного водогрея=");  
     client.println(digitalRead(relePin[5])); 
   client.print("</p>");     
      client.print("<div>Relay 3 <input type='checkbox' ");
      if (pinState[2] == 1)
        client.print("checked");
      client.println(" name='r2'></div>");
      client.print("<div>Relay 4 <input type='checkbox' ");
      if (pinState[3] == 1)
        client.print("checked");
      client.println(" name='r3'></div>");
      client.println("<input type='submit' value='Refresh'>");
      client.println("</form>");
      client.println("</body>");
      client.println("</html>");
      client.stop(); 

В чем может быть проблема? Памяти мало или в коде ошибка или еще что?

maksim
Offline
Зарегистрирован: 12.02.2012

http://playground.arduino.cc/Learning/Memory

Serial.println(F("This string will be stored in flash memory"));

 

Andrey-S
Offline
Зарегистрирован: 02.01.2015

Благодарю за направление... Я понял, вроде как флэш-памяти недостаточно у УНО для такого кода... А какой самый оптимальный вариант решения проблемы? Просто заменить УНО на ,к примеру, МЕГУ или же код переделать? Иле еще что-то необходимо?

Araris
Offline
Зарегистрирован: 09.11.2012

Флеш-памяти как раз достаточно, не путайте с ОЗУ.

"Неизменяемые строки и данные во время работы скетча можно хранить во флеш-памяти. Для этого необходимо использовать ключ PROGMEM"

Максим указывает на F() - макрос работающий со строками во флеш-памяти.

"Arduino IDE introduced the F() syntax for storing strings in flash memory rather than RAM."

Вот Вам еще направление )) : http://www.arduino.cc/en/Reference/PROGMEM

а также http://mk90.org/wiki/index.php/PROGMEM

Andrey-S
Offline
Зарегистрирован: 02.01.2015

Спасибо! Постараюсь сегодня вникнуть в это дело... Тяжело, когда ни твое образование, ни твоя работа никак не связаны с программированием)) Начну ка я, пожалуй, с изучения какая память для чего нужна и где используется))

maksim
Offline
Зарегистрирован: 12.02.2012

Короче, все что вам нужно сделать, это добавить во все статичные строки F().

client.println(F("HTTP/1.1 200 OK"));
client.println(F("Content-Type: text/html"));
......

 

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

maksim пишет:

Короче, все что вам нужно сделать, это добавить во все статичные строки F().

client.println(F("HTTP/1.1 200 OK"));
client.println(F("Content-Type: text/html"));
......

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

Andrey-S
Offline
Зарегистрирован: 02.01.2015

maksim пишет:

Короче, все что вам нужно сделать, это добавить во все статичные строки F().

client.println(F("HTTP/1.1 200 OK"));
client.println(F("Content-Type: text/html"));
......

 

Большое спасибо за короткий и ясный ответ! Все получилось и теперь мои водогрейчики радуют меня базовым набором функционала на веб-странице:) P.S. Газ дома есть, ды газовый проект под настенный котел передлать 55к загнули)))

Andrey-S
Offline
Зарегистрирован: 02.01.2015

А коли понеслась такая пляска, то подскажите мне, пожалуйста, следующий момент: как я понял из постов выше, PROGMEM требует подключение библиотеки и выводит переменную во флэш-память для экономии и без того бедной sram-памяти (она же ОЗУ вроде как)... А макрос F() делает тоже самое, но только не с переменными, а со статичными величинами без подключения всяких библиотек...  И есть еще EEPROM память, в которой хранится любая долгосрочная инфа и тоже требуется подключение библиотеки... Как флэшка вообщем. Я все правильно понял???

Araris
Offline
Зарегистрирован: 09.11.2012

Да, правильно.

Вот, наглядный пример нашел (http://www.gammon.com.au/forum/?id=12615) :

"Let's print a constant by adding this line:
Serial.println ("Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmo");
Output is now:
Free memory = 1630
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmo

So the free RAM has gone down by 72 bytes, which happens to be be how long that string is (allowing one byte for the 0x00 terminator at the end).
Why? Because the string was copied from PROGMEM, where it must be when the Arduino is turned off, into RAM.

The first thing we can do is use the F() macro, which cunningly expands out to print directly from PROGMEM, thus saving RAM. So we change the line above to read:

Serial.println (F("Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmo"));

Output:
Free memory = 1702
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmo

Back to 1702 bytes of free memory."

Andrey-S
Offline
Зарегистрирован: 02.01.2015

Благодарю за пример! Вот только в школе училка по английскому была стерва и мы с ней не дружили совсем... Как профессионал она нулевая была и заинтересовывать своими предметом не умела вовсе (Лондон ис зэ кэпитал оф грейт британ))). Поэтому по окончании школы мои знания английского языка слегка отличались от нуля... Но компьютерный мир все же заставил меня выучить слов 200-300, но их явно не достаточно для прочтения этой статьи))) А переводчики вообще не радуют своим переводом сложных текстов... Но я попытаааюсь разобраться в написанном! Спасибо!

Araris
Offline
Зарегистрирован: 09.11.2012

Только "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmo" не переводите ! )))

Andrey-S
Offline
Зарегистрирован: 02.01.2015

Araris пишет:

Только "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmo" не переводите ! )))

Ну я ни в одном фильме не видел послушания героев, если есть фраза "только дверь не открывай/на чердак не заглядывай и т.п."))))  Один фиг ничего не понял)

melvladimir
Offline
Зарегистрирован: 08.03.2013

ИМХО, лучше перейти на Mega2560. Там и ОЗУ ощутимо больше и памяти для загрузки программы и портов багатенно, а стоит не так уж и дорого. Хотя можно и поизвращаться, для большего развития :)

Andrey12
Andrey12 аватар
Offline
Зарегистрирован: 26.12.2014

Andrey-S пишет:

Благодарю за направление... Я понял, вроде как флэш-памяти недостаточно у УНО для такого кода... А какой самый оптимальный вариант решения проблемы? Просто заменить УНО на ,к примеру, МЕГУ или же код переделать? Иле еще что-то необходимо?

Я подумал подумал и перешел на мегу.
Потому как если много шилдов подключать у уно памяти нехватает, и приходится экономить чуть ли не побайтно.

Может когда проект сделаю и будет время, посижу пооптимизирую до уно.

Andrey-S
Offline
Зарегистрирован: 02.01.2015

У меня основной проект сидит на меге, а опыты ставлю на уно... Вот и вкрячился))) Но благодаря добрым людям этого форума проблема разрешилась) Купил дом и придумал себе хобби-ардуино)

Andrey12
Andrey12 аватар
Offline
Зарегистрирован: 26.12.2014

Andrey-S пишет:

У меня основной проект сидит на меге, а опыты ставлю на уно... Вот и вкрячился))) Но благодаря добрым людям этого форума проблема разрешилась) Купил дом и придумал себе хобби-ардуино)

Да тут можно не только свой код оптимизировать можно, еще и библиотеки подправить иногда получается. Сложные я править не берусь, а вот простенькие можно немного "облегчить" :-)

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

Andrey-S
Offline
Зарегистрирован: 02.01.2015

Ну уже неплохо! У меня пока на работе твердотопливный котел (дровяной) сидит на ардуинке, а дома 2 столитровых водогрея облепленных 5ю датчиками ds18b20,2мя сервокранами китайскими и датчиком протечки)) Вот только с кнопки пока дома все работает, но на этой неделе добавлю эзернет-шилд и следом уже приобретенный GSM-шилд)

maksim
Offline
Зарегистрирован: 12.02.2012

Andrey-S пишет:

а дома 2 столитровых водогрея облепленных 5ю датчиками ds18b20,2мя сервокранами китайскими и датчиком протечки))

http://www.youtube.com/watch?v=KpPiVHoiQm0

Происходит при совпадении двух факторов:
1. Тен греет без остановки, например, дуина зависла или симистор пробило.
2. Неисправен или заглушен аварийный клапан сброса давления.

 

Andrey-S
Offline
Зарегистрирован: 02.01.2015

Вот это круто))) Это ведь мало того, что внутренняя защита отказала, но еще походу предохранительный клапан был нерабочий (если он вообще был)... У меня все банальнее: стоят стандартные обратные клапана (с перепускником на 7атм) и я не убирал стандартную автоматику, а просто прибавил ее на всю а регулировка водогреев происходит путем отключения розетки... Поэтому если электроника даст сбой,  сработает стандартная защита). Ну и они в подвале у меня еще) Кстати да  http://www.youtube.com/watch?v=wLf-WGQyueY

Donalddrala
Offline
Зарегистрирован: 29.11.2016

3d-m.ru 8(800) 505-42-56 москва 3д принтеры

----
Выбрать 3d сканер Thor3d в каталоге с ценами в Москве

Donalddrala
Offline
Зарегистрирован: 29.11.2016

3d-m.ru 8(800) 505-42-56 москва 3д принтеры

----
Выбрать 3d сканер Thor3d в каталоге с ценами в Москве

JosephprasE
Offline
Зарегистрирован: 30.11.2016

ювелирные украшения +7 (495) 625-19-45

-----
Украшения интернет магазин

JosephprasE
Offline
Зарегистрирован: 30.11.2016

ювелирные украшения +7 (495) 625-19-45

-----
Украшения интернет магазин

Kevinuniop
Offline
Зарегистрирован: 30.11.2016

одизайн обои интернет магазин

----
фотообои женщина алляулю

Kevinuniop
Offline
Зарегистрирован: 30.11.2016

одизайн обои интернет магазин

----
фотообои женщина алляулю

Michaelphisa
Offline
Зарегистрирован: 30.11.2016

про солидности и главного значения вашей бизнеса, всякой либо коммерческой оборота посредь остальных в публичных источниках интернета значимо может заявить лишь хорошо развернутый источник, который также несет функционирование продвижение всей необходимой сведений про ваших услугах пользователям. Содержание источника должно стать демократичными, доступны, передвижение подходящим в эксплуатации и иметь акцентирующую оформление- считаются базисные принципы завлечения потребителя. составить создание, разработку также развитие веб-страницы личной магазина пользователь можете через нашу онлайн- компанию http://stavropol.fedek.ru, которая на течении долгих лет продуктивно действует у области функционирования, производстве логотипа холдинга, конструировании и подготовке промо ресурса, корпоративных ресурсов, реестре состава ресурса, ну а еще обеспечивает следующую помощь у обслуживании персонального сайта в удовлетворительными оплатой всяческих технических заданий заказчика. Мы поручаемся своим пользователям индивидуальный отношение на различный заказу, неповторимость проделанной услуг на первоклассном степени практичного применения, качественную построение любой каверзности, свежий формат и умеренные стоимость именно за отменный произведение. работайте из нашей через наш сайта либо по указанного номеру затем унаследуйте в ходе нескольких дней полностью совершенный к использованию работоспособность вашего фирмы в электронном функционировании.

Michaelphisa
Offline
Зарегистрирован: 30.11.2016

про солидности и главного значения вашей бизнеса, всякой либо коммерческой оборота посредь остальных в публичных источниках интернета значимо может заявить лишь хорошо развернутый источник, который также несет функционирование продвижение всей необходимой сведений про ваших услугах пользователям. Содержание источника должно стать демократичными, доступны, передвижение подходящим в эксплуатации и иметь акцентирующую оформление- считаются базисные принципы завлечения потребителя. составить создание, разработку также развитие веб-страницы личной магазина пользователь можете через нашу онлайн- компанию http://stavropol.fedek.ru, которая на течении долгих лет продуктивно действует у области функционирования, производстве логотипа холдинга, конструировании и подготовке промо ресурса, корпоративных ресурсов, реестре состава ресурса, ну а еще обеспечивает следующую помощь у обслуживании персонального сайта в удовлетворительными оплатой всяческих технических заданий заказчика. Мы поручаемся своим пользователям индивидуальный отношение на различный заказу, неповторимость проделанной услуг на первоклассном степени практичного применения, качественную построение любой каверзности, свежий формат и умеренные стоимость именно за отменный произведение. работайте из нашей через наш сайта либо по указанного номеру затем унаследуйте в ходе нескольких дней полностью совершенный к использованию работоспособность вашего фирмы в электронном функционировании.

Logik
Offline
Зарегистрирован: 05.08.2014

Убедительный аргумент за проточники. 

EugeneCubre
Offline
Зарегистрирован: 15.12.2016

Жара! Давай еще!))

----
http://popki-jopki.com/

EugeneCubre
Offline
Зарегистрирован: 15.12.2016

Жара! Давай еще!))

----
http://popki-jopki.com/

Geraldhon
Offline
Зарегистрирован: 18.12.2016

безуспречно и авторитетно задействовать занятие для учеников реподаватель сможет лишь полностью располагая данные по заданой материале, и для того собственно чтобы семинар стала доходчивой, урок следует состоять захватывающим. Если у преподавателя всего лишь никак не хватает часа - не надо терять надежду, из учебным сайтом плотность потока электромагнитного излучения пользователь имеет возможность приготовить урок либо лекцию из наилучшим оценкой, не переживая про правильности подачи уведомлений. Учительский источник - является своего типом книгохранилищем, в которой пополняются совсем все доклады по необходимым вопросу и содержанию на всякий класс. Здесь пользователь получает возможность быстро загрузить или взять концепцию из планов- программы по урокам, также осмотреть методичные материалы в виде word печати или презентаций. во время последовательной выкладывания собственно на ресурс готового материала внимательно обследуется собственно на верность специалистами по установленного дисциплине, до того ж на сайте каждый день восстановляем последние научные работы на ресурс, комплектуя разнообразность портала. учебный портал для учителей снаюжает подготовленные тестовые контрольные, планы именно для уроков, аннотации, записи также много иной надобной источник. администрация подумали о посещении собственно для каждого, потому загрузить документ из данного сайта имеет возможность каждый http://home-task.com/ преподаватель, что пользователь имеет возможность сделать уже сейчас.

Geraldhon
Offline
Зарегистрирован: 18.12.2016

безуспречно и авторитетно задействовать занятие для учеников реподаватель сможет лишь полностью располагая данные по заданой материале, и для того собственно чтобы семинар стала доходчивой, урок следует состоять захватывающим. Если у преподавателя всего лишь никак не хватает часа - не надо терять надежду, из учебным сайтом плотность потока электромагнитного излучения пользователь имеет возможность приготовить урок либо лекцию из наилучшим оценкой, не переживая про правильности подачи уведомлений. Учительский источник - является своего типом книгохранилищем, в которой пополняются совсем все доклады по необходимым вопросу и содержанию на всякий класс. Здесь пользователь получает возможность быстро загрузить или взять концепцию из планов- программы по урокам, также осмотреть методичные материалы в виде word печати или презентаций. во время последовательной выкладывания собственно на ресурс готового материала внимательно обследуется собственно на верность специалистами по установленного дисциплине, до того ж на сайте каждый день восстановляем последние научные работы на ресурс, комплектуя разнообразность портала. учебный портал для учителей снаюжает подготовленные тестовые контрольные, планы именно для уроков, аннотации, записи также много иной надобной источник. администрация подумали о посещении собственно для каждого, потому загрузить документ из данного сайта имеет возможность каждый http://home-task.com/ преподаватель, что пользователь имеет возможность сделать уже сейчас.