Ардуино + USB + Win. Вопрос от новичка.

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

PAV
Сообщения: 969
Зарегистрирован: Пт дек 06, 2013 11:30 am
Откуда: Москва
Благодарил (а): 71 раз
Поблагодарили: 95 раз

Re: Ардуино + USB + Win. Вопрос от новичка.

Сообщение PAV » Вт дек 24, 2013 11:24 am

Разобрался.
Написал правильно safe_exec('"C:/_majordomo/apps/arduino_gw/arduino_gw.exe" 5 '.$this->getProperty("brightness").';');
А использовал shell_exec
PAV
Сообщения: 969
Зарегистрирован: Пт дек 06, 2013 11:30 am
Откуда: Москва
Благодарил (а): 71 раз
Поблагодарили: 95 раз

Re: Ардуино + USB + Win. Вопрос от новичка.

Сообщение PAV » Вт дек 24, 2013 1:27 pm

Получилось так:
При отправке команды 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);
    
    }
     }
}
Alter
Сообщения: 21
Зарегистрирован: Ср июл 04, 2012 3:37 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Ардуино + USB + Win. Вопрос от новичка.

Сообщение Alter » Пт янв 17, 2014 5:55 am

PAV писал(а):Как в ардуине считать строку, разбить ее на части и использовать для управления. Пишу сам, н оесли кто уже сделал, поделитесь.
выполнить команду 1 или 0 получается, как сделать чтобы строку типа pin11 status1 ардуинка выполняла?
http://devhead.ru/read/peredacha-stroki ... z-com-port
http://www.arduino.ru/forum/programmiro ... r-compchar
Мазур
Сообщения: 133
Зарегистрирован: Чт ноя 26, 2015 3:52 pm
Благодарил (а): 32 раза
Поблагодарили: 1 раз

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&"
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Ардуино + USB + Win. Вопрос от новичка.

Сообщение nick7zmail » Ср июн 08, 2016 10:10 am

Мазур писал(а): Помогите! У меня не работает... После заливки скетча у меня постоянно мигает светодиод. Arduino_gw показывает нули, но в какой то момент
проскальзывает это- "GET /objects/?object=Vikluchatel&op=m&m=SvetodiodRefresh&"
А что не работает то? К порту подключился, команды шлет....
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Мазур
Сообщения: 133
Зарегистрирован: Чт ноя 26, 2015 3:52 pm
Благодарил (а): 32 раза
Поблагодарили: 1 раз

Re: Ардуино + USB + Win. Вопрос от новичка.

Сообщение Мазур » Ср июн 08, 2016 10:57 am

Ну я предполагал, что это будет выглядеть так:
Приписываем код для кнопки в МД.
После заливки скетча в ардуину, светодиод ждет того, что я на главной странице включу светодиод. (сейчас он постоянно мигает)
При нажатии на кнопку включения света, МД запускает Arduino_GW и все...
Алиса при том молчит. (
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Ардуино + USB + Win. Вопрос от новичка.

Сообщение nick7zmail » Ср июн 08, 2016 11:14 am

Мазур писал(а):Ну я предполагал, что это будет выглядеть так:
Приписываем код для кнопки в МД.
После заливки скетча в ардуину, светодиод ждет того, что я на главной странице включу светодиод. (сейчас он постоянно мигает)
При нажатии на кнопку включения света, МД запускает 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
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Мазур
Сообщения: 133
Зарегистрирован: Чт ноя 26, 2015 3:52 pm
Благодарил (а): 32 раза
Поблагодарили: 1 раз

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кОм. Светодиод мигает ((( Сам... + светодиод на адруине тоже. Кнопку отключал от Ардуины, результат не поменялся. Странно, почему мигает?
В МД, выключатель с кодом. (ползунок ВКЛ<=>ВЫКЛ)
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Ардуино + USB + Win. Вопрос от новичка.

Сообщение nick7zmail » Ср июн 08, 2016 2:50 pm

Мигает с каким то промежутком? Если к мд не подключать, тоже мигает?

Отправлено с моего Xperia Z через Tapatalk
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Мазур
Сообщения: 133
Зарегистрирован: Чт ноя 26, 2015 3:52 pm
Благодарил (а): 32 раза
Поблагодарили: 1 раз

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);
}
Ответить