Ардуино + USB + Win. Вопрос от новичка.
Модератор: immortal
-
- Сообщения: 969
- Зарегистрирован: Пт дек 06, 2013 11:30 am
- Откуда: Москва
- Благодарил (а): 71 раз
- Поблагодарили: 95 раз
Re: Ардуино + USB + Win. Вопрос от новичка.
Разобрался.
Написал правильно safe_exec('"C:/_majordomo/apps/arduino_gw/arduino_gw.exe" 5 '.$this->getProperty("brightness").';');
А использовал shell_exec
Написал правильно safe_exec('"C:/_majordomo/apps/arduino_gw/arduino_gw.exe" 5 '.$this->getProperty("brightness").';');
А использовал shell_exec
-
- Сообщения: 969
- Зарегистрирован: Пт дек 06, 2013 11:30 am
- Откуда: Москва
- Благодарил (а): 71 раз
- Поблагодарили: 95 раз
Re: Ардуино + USB + Win. Вопрос от новичка.
Получилось так:
При отправке команды 5 10; - ардуинка включает свет, подключенный на пин 5 ардуинки, на полную
5 0; - выключает;
все промежуточные значения - диммирование
Диммер в панели управления (метод Refresh)
Код на Ардуине
При отправке команды 5 10; - ардуинка включает свет, подключенный на пин 5 ардуинки, на полную
5 0; - выключает;
все промежуточные значения - диммирование
Диммер в панели управления (метод Refresh)
Код: Выделить всё
$value=$this->getProperty("brightness");
safe_exec('"C:/_majordomo/apps/arduino_gw/arduino_gw.exe" 5 '.$this->getProperty("brightness").';'); // отправить на 5 пин значение $value, ; является знаком окончания команды
//say ($value);
$this->setProperty(updatedTime, time());
if ($value>0) {
$this->setProperty('status',1);
$this->setProperty('statusText',"Включено");
} else {
$this->setProperty('status',0);
$this->setProperty('statusText',"Выключено");
}
Код на Ардуине
Код: Выделить всё
//PAV Majordomo->Arduino commands execution sketch.
// recieved command shall be as follows - pinNo BrightnessValue; example(without ""): "5 10;" - finally it tells Arduino to send 255 to pin 5
// pins for the LEDs:
const int DeemPin1 = 5;
const int DeemPin2 = 6;
const int DeemPin3 = 7;
void setup() {
// initialize serial:
Serial.begin(9600);
// make the pins outputs:
pinMode(DeemPin1, OUTPUT);
pinMode(DeemPin2, OUTPUT);
pinMode(DeemPin2, OUTPUT);
}
void loop() {
// if there's any serial available, read it:
while (Serial.available() > 0) {
// look for the next valid integer in the incoming serial stream:
int pin = Serial.parseInt();
// do it again:
int stat = Serial.parseInt();
// look for the newline. That's the end of your sentence:
if (Serial.read() == ';') {
// multiply recieved $value (0-10) by 25,5 to get min 0 and max 255
stat=stat*25,5;
analogWrite(pin, stat);
}
}
}
Re: Ардуино + USB + Win. Вопрос от новичка.
http://devhead.ru/read/peredacha-stroki ... z-com-portPAV писал(а):Как в ардуине считать строку, разбить ее на части и использовать для управления. Пишу сам, н оесли кто уже сделал, поделитесь.
выполнить команду 1 или 0 получается, как сделать чтобы строку типа pin11 status1 ардуинка выполняла?
http://www.arduino.ru/forum/programmiro ... r-compchar
-
- Сообщения: 133
- Зарегистрирован: Чт ноя 26, 2015 3:52 pm
- Благодарил (а): 32 раза
- Поблагодарили: 1 раз
Re: Ардуино + USB + Win. Вопрос от новичка.
Помогите! У меня не работает... После заливки скетча у меня постоянно мигает светодиод. Arduino_gw показывает нули, но в какой то моментNoFear писал(а):код кнопки:Корявый скетчик:Код: Выделить всё
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);
Всё работает! Принимает, отсылает.. осталось только прикрутить блэкджек и шл..Код: Выделить всё
int LedPin = 13; int Baton = 3; byte inByte = 0; byte sch = 0; boolean lastBaton = LOW; boolean led = LOW; void setup () { pinMode (LedPin, OUTPUT); pinMode (Baton, INPUT); Serial.begin(9600); } boolean BatPosition(boolean last) { boolean current = digitalRead(Baton); if (last != current) { delay(20); current = digitalRead(Baton); Serial.println(last); } else sch = 0; return current; } void loop () { while(Serial.available() == 0) { boolean f = BatPosition(lastBaton); if(f == HIGH && lastBaton ==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 = lastBaton; } digitalWrite(LedPin,led); } inByte = Serial.read()-'0'; if (inByte == 1) led = HIGH; else led = LOW; digitalWrite(LedPin,led); }
проскальзывает это- "GET /objects/?object=Vikluchatel&op=m&m=SvetodiodRefresh&"
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Ардуино + USB + Win. Вопрос от новичка.
А что не работает то? К порту подключился, команды шлет....Мазур писал(а): Помогите! У меня не работает... После заливки скетча у меня постоянно мигает светодиод. Arduino_gw показывает нули, но в какой то момент
проскальзывает это- "GET /objects/?object=Vikluchatel&op=m&m=SvetodiodRefresh&"
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".

>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
-
- Сообщения: 133
- Зарегистрирован: Чт ноя 26, 2015 3:52 pm
- Благодарил (а): 32 раза
- Поблагодарили: 1 раз
Re: Ардуино + USB + Win. Вопрос от новичка.
Ну я предполагал, что это будет выглядеть так:
Приписываем код для кнопки в МД.
После заливки скетча в ардуину, светодиод ждет того, что я на главной странице включу светодиод. (сейчас он постоянно мигает)
При нажатии на кнопку включения света, МД запускает Arduino_GW и все...
Алиса при том молчит. (
Приписываем код для кнопки в МД.
После заливки скетча в ардуину, светодиод ждет того, что я на главной странице включу светодиод. (сейчас он постоянно мигает)
При нажатии на кнопку включения света, МД запускает Arduino_GW и все...
Алиса при том молчит. (
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Ардуино + USB + Win. Вопрос от новичка.
Давай по порядку...Мазур писал(а):Ну я предполагал, что это будет выглядеть так:
Приписываем код для кнопки в МД.
После заливки скетча в ардуину, светодиод ждет того, что я на главной странице включу светодиод. (сейчас он постоянно мигает)
При нажатии на кнопку включения света, МД запускает Arduino_GW и все...
Алиса при том молчит. (
1) диод должен висеть на пине 13, батон (почему батон?? кнопка вроде button или как то так))) на пине 3.
2) пин 3 должен быть подцеплен к земле через резистор 10кОм (см. правильное подключение кнопки) ... иначе будут рандомные включения/выключения из-за статических наводок в окр. среде.
3) светодиод, судя по коду кнопки, только включается с сервера. На выключение еще одну кнопку создать над.
4) по кнопке на пине 3 светодиод должен включаться и выключаться, при этом передавая статус в МД (те моменты, когда вы видите GET /objects/?object=Vikluchatel&op=m&m=SvetodiodRefresh&) скорее всего вы просто не подключили, либо не заземлили пин 3, и диод включается "рандомно" от статических наводок.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".

>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
-
- Сообщения: 133
- Зарегистрирован: Чт ноя 26, 2015 3:52 pm
- Благодарил (а): 32 раза
- Поблагодарили: 1 раз
Re: Ардуино + USB + Win. Вопрос от новичка.
Так точно! ) Скетч поправил. Диод висит на 13 пине. Кнопка на 3м, земля через резистор 10кОм. Светодиод мигает ((( Сам... + светодиод на адруине тоже. Кнопку отключал от Ардуины, результат не поменялся. Странно, почему мигает?nick7zmail писал(а): Давай по порядку...
1) диод должен висеть на пине 13, батон (почему батон?? кнопка вроде button или как то так))) на пине 3.
2) пин 3 должен быть подцеплен к земле через резистор 10кОм (см. правильное подключение кнопки) ... иначе будут рандомные включения/выключения из-за статических наводок в окр. среде.
3) светодиод, судя по коду кнопки, только включается с сервера. На выключение еще одну кнопку создать над.
4) по кнопке на пине 3 светодиод должен включаться и выключаться, при этом передавая статус в МД (те моменты, когда вы видите GET /objects/?object=Vikluchatel&op=m&m=SvetodiodRefresh&) скорее всего вы просто не подключили, либо не заземлили пин 3, и диод включается "рандомно" от статических наводок.
В МД, выключатель с кодом. (ползунок ВКЛ<=>ВЫКЛ)
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Ардуино + USB + Win. Вопрос от новичка.
Мигает с каким то промежутком? Если к мд не подключать, тоже мигает?
Отправлено с моего Xperia Z через Tapatalk
Отправлено с моего Xperia Z через Tapatalk
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".

>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
-
- Сообщения: 133
- Зарегистрирован: Чт ноя 26, 2015 3:52 pm
- Благодарил (а): 32 раза
- Поблагодарили: 1 раз
Re: Ардуино + USB + Win. Вопрос от новичка.
Мигает с промежутком примерно в пол секунды. Но с МД видимо не связан. Попробовал к другому компьютеру подключать где нет ничего... Тоже мигает. Мна кажется проблема в скетче... Где то тут:
void loop ()
{
while(Serial.available() == 0)
{
boolean f = BatPosition(lastBaton);
if(f == HIGH && lastBaton ==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 = lastBaton;
}
digitalWrite(LedPin,led);
}
void loop ()
{
while(Serial.available() == 0)
{
boolean f = BatPosition(lastBaton);
if(f == HIGH && lastBaton ==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 = lastBaton;
}
digitalWrite(LedPin,led);
}