Принять из браузера 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

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

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

 

#include <SPI.h>
#include <Ethernet.h>
#include <string.h>
//#include <SD.h>

byte mac[] = { 0x00, 0x1D, 0xBE, 0xEF, 0xFE, 0x4A }; 
byte ip[] = { 10, 0, 0, 4 };           
byte gateway[] = { 10, 0, 0, 138 };//gateway         
byte subnet[] = { 255, 0, 0, 0 }; //subnet
EthernetServer server(80);//server port

///////////////////////////////////////////////////////////////////////////////
byte sampledata=50;            //some sample data - outputs 2 (ascii = 50 DEC)

int ledPins[]= { 2,3,4,5,6,7,8,9 };  // LED pin
String readString = String(30); //string for fetching data from address
boolean LEDON1 = false; //LED status flag
boolean LEDON2 = false;
boolean LEDON3 = false; 
boolean LEDON4 = false; 


void setup()
{
Serial.begin(9600);  
Ethernet.begin(mac, ip, gateway, subnet);
//Set pin  to output
for(int i = 2; i < 9; i++)
{
pinMode(ledPins[i],OUTPUT);
}       
}

void loop(){
// Create a client connection
EthernetClient client = server.available();
  if (client) {
    while (client.connected()) {
   if (client.available()) {
    char c = client.read();
     //read char by char HTTP request
    if (readString.length() < 100) 
      {
        //store characters to string 
        readString += c; //replaces readString.append(c);
      }  
        //output chars to serial port
        Serial.print(c);
        //if HTTP request has ended
        if (c == '\n') {
          //dirty skip of "GET /favicon.ico HTTP/1.1"
          if (readString.indexOf("?") <0)
          {
            //skip everything
          }
          else
          //lets check if LED should be lighted
        if(readString.indexOf("LED1=1") >0)//replaces if(readString.contains("L=1"))
           {
             //led has to be turned ON
             digitalWrite(ledPins[2], HIGH);    // set the LED on
             LEDON1 = true;
           }
           
           if(readString.indexOf("LED1=0") >0){
             //led has to be turned OFF
             digitalWrite(ledPins[2], LOW);    // set the LED OFF
             LEDON1 = false;             
           }
           
            if(readString.indexOf("LED2=1") >0)//replaces if(readString.contains("L=1"))
           {
             //led has to be turned ON
             digitalWrite(ledPins[5], HIGH);    // set the LED on
             LEDON2 = true;
           }
           /*
           if(readString.indexOf("LED2=0") >0){
             //led has to be turned OFF
             digitalWrite(ledPins[5], LOW);    // set the LED OFF
             LEDON2 = false;             
           }
            if(readString.indexOf("LED3=1") >0)//replaces if(readString.contains("L=1"))
           {
             //led has to be turned ON
             digitalWrite(ledPins[6], HIGH);    // set the LED on
             LEDON3 = true;
           }
           
           if(readString.indexOf("LED3=0") >0){
             //led has to be turned OFF
             digitalWrite(ledPins[6], LOW);    // set the LED OFF
             LEDON3 = false;             
           }
            if(readString.indexOf("LED4=1") >0)//replaces if(readString.contains("L=1"))
           {
             //led has to be turned ON
             digitalWrite(ledPins[7], HIGH);    // set the LED on
             LEDON4 = true;
           }
           
           if(readString.indexOf("LED4=0") >0){
             //led has to be turned OFF
             digitalWrite(ledPins[7], LOW);    // set the LED OFF
             LEDON4 = false;             
           }
           */
           else{}
          // Формируем HTML
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
          client.println("<head> ");
          client.println("<meta http-equiv='Content-Type' content='text/html; charset=utf-8' /> ");          
          client.println("<title>:: Transformer.inc :: Умный дом ::</title>");
          client.println("<link rel='stylesheet' type='text/css' href='http://www.fdv.co.il/arduino/css/style.css'> ");
          client.println("</head> ");
          client.println("<body");
          //controlling led via radio elements
          client.println("<img src='http://www.fdv.co.il/shipuzim/image/transformer2.gif'>");
          client.println("<h3>Управление четырьмя нагрузками</h3>");
            client.println("<form method=get name=LED>");
            if (LEDON1)
            {
            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='http://www.fdv.co.il/shipuzim/on.gif' value=Применить></input>");
            client.println("<font size=’5′>Статус: ");
            client.println("<img src='http://www.fdv.co.il/shipuzim/image/on.png'><br />");
            }
         else{
            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>");
            client.println("<font size=’5′>Статус: ");
            client.println("<img src='http://www.fdv.co.il/shipuzim/image/off.png'><br />");
             }
            
           
                      
            client.println("</form></body></html>");
            //clearing string for next read
            readString="";
            //останавливаем web-client
            client.stop();
          }
        }
      }
    }
  }

      

 

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

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

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

int ledPins[]= { 2,3,4,5,6,7,8,9 };  // LED pin
...
void setup()
{
  //Set pin  to output
  for(int i = 2; i < 9; i++)
  ~~~~~~~~~~~~~~~~~~~~~~~~~~
  {
    pinMode(ledPins[i],OUTPUT);
  }       
}

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