Страница 4 из 6
Re: Ардуино + USB + Win. Вопрос от новичка.
Добавлено: Вт дек 24, 2013 11:24 am
PAV
Разобрался.
Написал правильно safe_exec('"C:/_majordomo/apps/arduino_gw/arduino_gw.exe" 5 '.$this->getProperty("brightness").';');
А использовал shell_exec
Re: Ардуино + USB + Win. Вопрос от новичка.
Добавлено: Вт дек 24, 2013 1:27 pm
PAV
Получилось так:
При отправке команды 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. Вопрос от новичка.
Добавлено: Пт янв 17, 2014 5:55 am
Alter
PAV писал(а):Как в ардуине считать строку, разбить ее на части и использовать для управления. Пишу сам, н оесли кто уже сделал, поделитесь.
выполнить команду 1 или 0 получается, как сделать чтобы строку типа pin11 status1 ардуинка выполняла?
http://devhead.ru/read/peredacha-stroki ... z-com-port
http://www.arduino.ru/forum/programmiro ... r-compchar
Re: Ардуино + USB + Win. Вопрос от новичка.
Добавлено: Вт июн 07, 2016 3:55 pm
Мазур
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);
}
Всё работает! Принимает, отсылает.. осталось только прикрутить блэкджек и шл..
Помогите! У меня не работает... После заливки скетча у меня постоянно мигает светодиод. Arduino_gw показывает нули, но в какой то момент
проскальзывает это- "GET /objects/?object=Vikluchatel&op=m&m=SvetodiodRefresh&"
Re: Ардуино + USB + Win. Вопрос от новичка.
Добавлено: Ср июн 08, 2016 10:10 am
nick7zmail
Мазур писал(а):
Помогите! У меня не работает... После заливки скетча у меня постоянно мигает светодиод. Arduino_gw показывает нули, но в какой то момент
проскальзывает это- "GET /objects/?object=Vikluchatel&op=m&m=SvetodiodRefresh&"
А что не работает то? К порту подключился, команды шлет....
Re: Ардуино + USB + Win. Вопрос от новичка.
Добавлено: Ср июн 08, 2016 10:57 am
Мазур
Ну я предполагал, что это будет выглядеть так:
Приписываем код для кнопки в МД.
После заливки скетча в ардуину, светодиод ждет того, что я на главной странице включу светодиод. (сейчас он постоянно мигает)
При нажатии на кнопку включения света, МД запускает Arduino_GW и все...
Алиса при том молчит. (
Re: Ардуино + USB + Win. Вопрос от новичка.
Добавлено: Ср июн 08, 2016 11:14 am
nick7zmail
Мазур писал(а):Ну я предполагал, что это будет выглядеть так:
Приписываем код для кнопки в МД.
После заливки скетча в ардуину, светодиод ждет того, что я на главной странице включу светодиод. (сейчас он постоянно мигает)
При нажатии на кнопку включения света, МД запускает Arduino_GW и все...
Алиса при том молчит. (
Давай по порядку...
1) диод должен висеть на пине 13, батон (почему батон?? кнопка вроде button или как то так))) на пине 3.
2) пин 3 должен быть подцеплен к земле через резистор 10кОм (см. правильное подключение кнопки) ... иначе будут рандомные включения/выключения из-за статических наводок в окр. среде.
3) светодиод, судя по коду кнопки, только включается с сервера. На выключение еще одну кнопку создать над.
4) по кнопке на пине 3 светодиод должен включаться и выключаться, при этом передавая статус в МД (те моменты, когда вы видите GET /objects/?object=Vikluchatel&op=m&m=SvetodiodRefresh&) скорее всего вы просто не подключили, либо не заземлили пин 3, и диод включается "рандомно" от статических наводок.
Re: Ардуино + USB + Win. Вопрос от новичка.
Добавлено: Ср июн 08, 2016 2:47 pm
Мазур
nick7zmail писал(а):
Давай по порядку...
1) диод должен висеть на пине 13, батон (почему батон?? кнопка вроде button или как то так))) на пине 3.
2) пин 3 должен быть подцеплен к земле через резистор 10кОм (см. правильное подключение кнопки) ... иначе будут рандомные включения/выключения из-за статических наводок в окр. среде.
3) светодиод, судя по коду кнопки, только включается с сервера. На выключение еще одну кнопку создать над.
4) по кнопке на пине 3 светодиод должен включаться и выключаться, при этом передавая статус в МД (те моменты, когда вы видите GET /objects/?object=Vikluchatel&op=m&m=SvetodiodRefresh&) скорее всего вы просто не подключили, либо не заземлили пин 3, и диод включается "рандомно" от статических наводок.
Так точно! ) Скетч поправил. Диод висит на 13 пине. Кнопка на 3м, земля через резистор 10кОм. Светодиод мигает ((( Сам... + светодиод на адруине тоже. Кнопку отключал от Ардуины, результат не поменялся. Странно, почему мигает?
В МД, выключатель с кодом. (ползунок ВКЛ<=>ВЫКЛ)
Re: Ардуино + USB + Win. Вопрос от новичка.
Добавлено: Ср июн 08, 2016 2:50 pm
nick7zmail
Мигает с каким то промежутком? Если к мд не подключать, тоже мигает?
Отправлено с моего Xperia Z через Tapatalk
Re: Ардуино + USB + Win. Вопрос от новичка.
Добавлено: Ср июн 08, 2016 3:23 pm
Мазур
Мигает с промежутком примерно в пол секунды. Но с МД видимо не связан. Попробовал к другому компьютеру подключать где нет ничего... Тоже мигает. Мна кажется проблема в скетче... Где то тут:
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);
}