Arduino + web + usb

Mazur
Offline
Зарегистрирован: 13.01.2016

Здравствуйте! Помогите пожалуйста с проблемой. Мне нужно что бы при поступлении в ардуину сигнала статуса, он отображался в терминале. 

Вот скетч: 

int LedPin = 13;
int Button = 3;
byte inByte = 0;
byte sch = 0;
boolean lastButton = LOW;
boolean led = LOW;

void setup ()
{
pinMode (LedPin, OUTPUT);
pinMode (Button, INPUT);
Serial.begin(9600);

}

boolean ButPosition(boolean last)
 {
   boolean current = digitalRead(Button);
   if (last != current)
   {
     delay(20);
     current = digitalRead(Button);
        Serial.println(last);
   }
   else sch = 0;
   return current;
 }

void loop ()
{
while(Serial.available() == 0)
 {
  boolean f = BatPosition(lastButton);
   if(f == HIGH && lastButton ==LOW)
   {
      if (sch == 0 && led == LOW)
        {
          sch = 1;
          led = HIGH;
          Serial.println("GET /objects/?object=Vikluchatel&op=m&m=SvetodiodRefresh&");
        }
        else if (sch == 0 && led == HIGH)
        {
          sch = 1;
          led = LOW;
          Serial.println("GET /objects/?object=Vikluchatel&op=m&m=SvetodiodRefresh&");
        } 
       f = lastButton; 
   }
   digitalWrite(LedPin,led);
 }
inByte = Serial.read()-'0';
if (inByte == 1) led = HIGH;
else led = LOW;
 digitalWrite(LedPin,led);
} 

Кнопку я уберу, она как выяснилось мне не понадобится. А куда вставить 

Serial.println("GET /objects/?object=Vikluchatel&op=set&p=stat&v=" led);

и будет ли он работать, я так и не понял... 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Строка

Serial.println("GET /objects/?object=Vikluchatel&op=set&p=stat&v=" + led);

Просто выплюнет строчку "GET /objects/?object=Vikluchatel&op=set&p=stat&v=чего-то там ещё" по USART, и эту строчку можно поймать любой терминальной программой, например, встроенным в IDE монитором порта.

Вы что хотите сделать? Объясните плз поподробней, а то непонятно. Строго говоря, та строка, которую вы пишете в Serial - это часть заголовка HTTP-запроса, который неполон. Такой запрос посылается HTTP-серверу, который анализирует его и выдаёт ответ, состоящий из заголовков HTTP и тела ответа (которое, в свою очередь, может отсутствовать или быть представлено HTML-страничкой, или бинарными данными, или набором чанков - короче, вариантов там есть).

Mazur
Offline
Зарегистрирован: 13.01.2016

Работаю на умным домом на базе majordomo. Сейчас задача управлять выключателями Livolo без радио. Выглядит это так: к ПК подключена Arduina через шнур, к ардуине подключены выключатели, датчики и т.п. К выключателю припаял провода для управления им из сети и провод для считывания состояния на всякий случай. 

В системе управления MD создана кнопка с кодом:

exec("mode com3: BAUD=9600 PARITY=N data=8 stop=1 xon=off"); 

$fp =shell_exec("C:/_majordomo/apps/arduino_gw/arduino_gw.exe 1"); 

fwrite($fp);

fclose($fp);

say("Светодиод включен с сервера",5); 

При кажатии на кнопку на сервере МД запускает программу Arduino_GW (монитор порта) в который посылает код на включение или выключение света (импульс). Этого хватает чтобы включть или выключить выключатель. Кнопка подключенная к Ардуине на пин 3 уже не нужна. Я её удалю из скетча. Но мне нужно что бы сервер МД знал состояние выключателя, включен он или нет.