Arduino + web + usb
- Войдите на сайт для отправки комментариев
Чт, 09/06/2016 - 17:02
Здравствуйте! Помогите пожалуйста с проблемой. Мне нужно что бы при поступлении в ардуину сигнала статуса, он отображался в терминале.
Вот скетч:
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);
и будет ли он работать, я так и не понял...
Строка
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-страничкой, или бинарными данными, или набором чанков - короче, вариантов там есть).
Работаю на умным домом на базе 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 уже не нужна. Я её удалю из скетча. Но мне нужно что бы сервер МД знал состояние выключателя, включен он или нет.