Принять из браузера 54 переменных, передать на 74HC595

Vlad_J
Offline
Зарегистрирован: 28.04.2013

Нужно:
В браузере отображает­ся форма 6 на 9 ячеек. В ячейки пользовате­лем вводятся числа 0-100 и нажимается­ кнопка отправки. В ардуино крутится 100-шаговый цикл. Значение, принятое из ячейки - это кол-во циклов, в которых сигнал на соответств­ующей ноге будет, на оставшихся­ циклах сигнала не будет. Т.е., если передан 0, то сигнал не выдаётся. Если 100 - сигнал есть постоянно. Если 50, то 50 циклов сигнал есть, 50 нет. 
В ячейках формы отображают­ся текущие значения переменных­. При запуске программы все значения 30. 
Желательно­ предусмотр­еть возможност­ь работы с профилями,­ подцветку ячеек в зависимост­и от значения и "мастер-ячейку" - значение которой присваивае­тся всем переменным или значение всех ячеек увеличивается на заданное значение.­.
У Ардуино использует­ся три ноги на выход плюс семь-восемь мультиплек­соров (ссылка ниже).

Вот похожие задачи:
http://arduino.ru/forum/programmirovanie/parsing-stroki-adresa-arduino-v-rezhime-veb-servera#comment-28322
http://fdv.co.il/lechenie_v_izraele/viewtopic.php?p=623

Вот мультиплек­соры:
http://arduino.ru/Tutorial/registr_74HC595

madmax96
Offline
Зарегистрирован: 22.09.2011

Vlad_J пишет:

Нужно:
В браузере отображает­ся форма 6 на 9 ячеек. В ячейки пользовате­лем вводятся числа 0-100 и нажимается­ кнопка отправки. В ардуино крутится 100-шаговый цикл. Значение, принятое из ячейки - это кол-во циклов, в которых сигнал на соответств­ующей ноге будет, на оставшихся­ циклах сигнала не будет. Т.е., если передан 0, то сигнал не выдаётся. Если 100 - сигнал есть постоянно. Если 50, то 50 циклов сигнал есть, 50 нет. 
В ячейках формы отображают­ся текущие значения переменных­. При запуске программы все значения 30. 
Желательно­ предусмотр­еть возможност­ь работы с профилями,­ подцветку ячеек в зависимост­и от значения и "мастер-ячейку" - значение которой присваивае­тся всем переменным или значение всех ячеек увеличивается на заданное значение.­.
У Ардуино использует­ся три ноги на выход плюс семь-восемь мультиплек­соров (ссылка ниже).

Вот похожие задачи:
http://arduino.ru/forum/programmirovanie/parsing-stroki-adresa-arduino-v-rezhime-veb-servera#comment-28322
http://fdv.co.il/lechenie_v_izraele/viewtopic.php?p=623

Вот мультиплек­соры:
http://arduino.ru/Tutorial/registr_74HC595

 

могу взяться. пишите на fmv.electronics@gmail.com

Vlad_J
Offline
Зарегистрирован: 28.04.2013

Что знал уже написал. Мне нужна стоимость и сроки. Или допвопросы, если есть.

Почта моя rqtan@rambler.ru

__Alexander
Offline
Зарегистрирован: 24.10.2012

Не грамотно написанное тз. Абсолютно. Что-такое "50 циклов есть 50 циклов нет"? Каких циклов? Машинных? 

Перечитайте сами себя, исправте и повторите.

 

И ваще, у меня что-то файервол на ссылку с лечением в израиле ругается... может вас лучше забанить?

Vlad_J
Offline
Зарегистрирован: 28.04.2013

Уж как умел, так и написал. Не знаю, чем машинный цикл отличается от какого-либо другого.

С лечением в Израиле тож ничего добавить не могу - вот пример содержимого с этой страницы:

 

001#include <SPI.h>
002#include <Ethernet.h>
003#include <string.h>
004//#include <SD.h>
005 
006byte mac[] = { 0x00, 0x1D, 0xBE, 0xEF, 0xFE, 0x4A };
007byte ip[] = { 10, 0, 0, 4 };          
008byte gateway[] = { 10, 0, 0, 138 };//gateway        
009byte subnet[] = { 255, 0, 0, 0 }; //subnet
010EthernetServer server(80);//server port
011 
012///////////////////////////////////////////////////////////////////////////////
013byte sampledata=50;            //some sample data - outputs 2 (ascii = 50 DEC)
014 
015int ledPins[]= { 2,3,4,5,6,7,8,9 };  // LED pin
016String readString = String(30); //string for fetching data from address
017boolean LEDON1 = false; //LED status flag
018boolean LEDON2 = false;
019boolean LEDON3 = false;
020boolean LEDON4 = false;
021 
022 
023void setup()
024{
025Serial.begin(9600); 
026Ethernet.begin(mac, ip, gateway, subnet);
027//Set pin  to output
028for(int i = 2; i < 9; i++)
029{
030pinMode(ledPins[i],OUTPUT);
031}      
032}
033 
034void loop(){
035// Create a client connection
036EthernetClient client = server.available();
037  if (client) {
038    while (client.connected()) {
039   if (client.available()) {
040    char c = client.read();
041     //read char by char HTTP request
042    if (readString.length() < 100)
043      {
044        //store characters to string
045        readString += c; //replaces readString.append(c);
046      
047        //output chars to serial port
048        Serial.print(c);
049        //if HTTP request has ended
050        if (c == '\n') {
051          //dirty skip of "GET /favicon.ico HTTP/1.1"
052          if (readString.indexOf("?") <0)
053          {
054            //skip everything
055          }
056          else
057          //lets check if LED should be lighted
058        if(readString.indexOf("LED1=1") >0)//replaces if(readString.contains("L=1"))
059           {
060             //led has to be turned ON
061             digitalWrite(ledPins[2], HIGH);    // set the LED on
062             LEDON1 = true;
063           }
064            
065           if(readString.indexOf("LED1=0") >0){
066             //led has to be turned OFF
067             digitalWrite(ledPins[2], LOW);    // set the LED OFF
068             LEDON1 = false;            
069           }
070            
071            if(readString.indexOf("LED2=1") >0)//replaces if(readString.contains("L=1"))
072           {
073             //led has to be turned ON
074             digitalWrite(ledPins[5], HIGH);    // set the LED on
075             LEDON2 = true;
076           }
077           /*
078           if(readString.indexOf("LED2=0") >0){
079             //led has to be turned OFF
080             digitalWrite(ledPins[5], LOW);    // set the LED OFF
081             LEDON2 = false;            
082           }
083            if(readString.indexOf("LED3=1") >0)//replaces if(readString.contains("L=1"))
084           {
085             //led has to be turned ON
086             digitalWrite(ledPins[6], HIGH);    // set the LED on
087             LEDON3 = true;
088           }
089            
090           if(readString.indexOf("LED3=0") >0){
091             //led has to be turned OFF
092             digitalWrite(ledPins[6], LOW);    // set the LED OFF
093             LEDON3 = false;            
094           }
095            if(readString.indexOf("LED4=1") >0)//replaces if(readString.contains("L=1"))
096           {
097             //led has to be turned ON
098             digitalWrite(ledPins[7], HIGH);    // set the LED on
099             LEDON4 = true;
100           }
101            
102           if(readString.indexOf("LED4=0") >0){
103             //led has to be turned OFF
104             digitalWrite(ledPins[7], LOW);    // set the LED OFF
105             LEDON4 = false;            
106           }
107           */
108           else{}
109          // Формируем HTML
110          client.println("HTTP/1.1 200 OK");
111          client.println("Content-Type: text/html");
112          client.println();
113          client.println("<head> ");
114          client.println("<meta http-equiv='Content-Type' content='text/html; charset=utf-8' /> ");         
115          client.println("<title>:: Transformer.inc :: Умный дом ::</title>");
116          client.println("<link rel='stylesheet' type='text/css' href='<a href="http://www.fdv.co.il/arduino/css/style.css" rel="nofollow">http://www.fdv.co.il/arduino/css/style.css</a>'> ");
117          client.println("</head> ");
118          client.println("<body");
119          //controlling led via radio elements
120          client.println("<img src='<a href="http://www.fdv.co.il/shipuzim/image/transformer2.gif" rel="nofollow">http://www.fdv.co.il/shipuzim/image/transformer2.gif</a>'>");
121          client.println("<h3>Управление четырьмя нагрузками</h3>");
122            client.println("<form method=get name=LED>");
123            if (LEDON1)
124            {
125            client.println("<input type=radio name=LED1 value=1 CHECKED>Включить</input><br /> <input type=radio name=LED1 value=0>Выключить</input><br /><input type=submit src='<a href="http://www.fdv.co.il/shipuzim/on.gif" rel="nofollow">http://www.fdv.co.il/shipuzim/on.gif</a>' value=Применить></input>");
126            client.println("<font size=’5′>Статус: ");
127            client.println("<img src='<a href="http://www.fdv.co.il/shipuzim/image/on.png" rel="nofollow">http://www.fdv.co.il/shipuzim/image/on.png</a>'><br />");
128            }
129         else{
130            client.println("<input type=radio name=LED1 value=1>Включить</input><br /><input type=radio name=LED1 value=0 CHECKED>Выключить</input><br /><input type=submit value=Применить></input>");
131            client.println("<font size=’5′>Статус: ");
132            client.println("<img src='<a href="http://www.fdv.co.il/shipuzim/image/off.png" rel="nofollow">http://www.fdv.co.il/shipuzim/image/off.png</a>'><br />");
133             }
134             
135            
136                       
137            client.println("</form></body></html>");
138            //clearing string for next read
139            readString="";
140            //останавливаем web-client
141            client.stop();
142          }
143        }
144      }
145    }
146  }

      

 

Побаньте, если душа потешится. Да и клиентов поприбавится - порядок все любят)

madmax96
Offline
Зарегистрирован: 22.09.2011

я отписался на имейл

Vlad_J
Offline
Зарегистрирован: 28.04.2013

Принял. Ответил.

 

Vlad_J
Offline
Зарегистрирован: 28.04.2013

Можно ещё пару примеров ваших работ на почту или сюда?

madmax96
Offline
Зарегистрирован: 22.09.2011

на почту скину

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Вот это проверьте, некорректный код:

01int ledPins[]= { 2,3,4,5,6,7,8,9 };  // LED pin
02...
03void setup()
04{
05  //Set pin  to output
06  for(int i = 2; i < 9; i++)
07  ~~~~~~~~~~~~~~~~~~~~~~~~~~
08  {
09    pinMode(ledPins[i],OUTPUT);
10  }      
11}

Длина массива.