Arduino HC-06 (PWM + button)

Ранее в статье http://rcl-radio.ru/?p=68590 рассматривался пример управления тремя реле (на базе платформы Arduino) при помощи Android (Bluetooth HC-06), в этой статье будет рассмотрен пример управления двумя каналами ШИМ платы Arduino при помощи Android приложения.

Так же помимо 2 каналов ШИМ можно управлять 5-ю цифровыми выходами платы Arduino. Фактически для Android приложения не имеет значения какие выходы Arduino Вы задействуете. Android посредством Bluetooth модуля HC06  передает в Serial Port цифровые команды, Arduido получает эти команды, обрабатывает и изменяет состояние цифровых выходов. Какие именно выходы в Arduino будут использованы определены скетчем.

int buff[2],i,dig,arr[2],w=1;
 
void setup(){ Serial.begin(9600);Serial.setTimeout(50);
   pinMode(9, OUTPUT); // PWM1
   pinMode(10, OUTPUT);// PWM2
   pinMode(11, OUTPUT);// P3 
   pinMode(12, OUTPUT);// P2 
   pinMode(13, OUTPUT);// P1
   pinMode(8, OUTPUT);// P4 
   pinMode(7, OUTPUT);// P5
}
 
void loop() {
 /////// ПРИЕМ ДАННЫХ С SERIAL PORT /////////////////////////
  while (Serial.available()>0){ 
   for (i=0;i<1;i++) { 
     buff[0] = Serial.parseInt(); 
     buff[1] = Serial.parseInt();}    
   Serial.println(buff[0],DEC);w=1;}
 
 ///////////// РАЗДЕЛЕНИЕ ЧИСЛА НА КОД КОМАНДЫ И ЗНАЧЕНИЕ /////////////////// 
 if(buff[0]>10&&w==1){ w=0;
  if(buff[0]>=10000){dig=buff[0];arr[0]=dig/1000;arr[1]=dig%1000;}
  if(buff[0]<10000&&buff[0]>=1000){dig=buff[0];arr[0]=dig/100;arr[1]=dig%100;} 
  if(buff[0]<1000){dig=buff[0];arr[0]=dig/10;arr[1]=dig%10;}   
    Serial.println(arr[0]);
    Serial.println(arr[1]);
    Serial.println(" ");
 } 
   switch(arr[0]){
     case 10: pin();break;
     case 11: analogWrite(9,arr[1]);break;
     case 12: analogWrite(10,arr[1]);break;
 }
}
 
void pin(){
  if(arr[1]==1){digitalWrite(13,HIGH);} 
  if(arr[1]==0){digitalWrite(13,LOW);}  
  if(arr[1]==3){digitalWrite(12,HIGH);} 
  if(arr[1]==2){digitalWrite(12,LOW);}  
  if(arr[1]==5){digitalWrite(11,HIGH);} 
  if(arr[1]==4){digitalWrite(11,LOW);}
  if(arr[1]==7){digitalWrite(8,HIGH);} 
  if(arr[1]==6){digitalWrite(8,LOW);}
  if(arr[1]==9){digitalWrite(7,HIGH);} 
  if(arr[1]==8){digitalWrite(7,LOW);}
  }

Цифровые команды очень простые и имеют следующий вид:

  • 100 …108 — 10 это код команды для управления цифровыми выходами, значение от 0 до 8 определяют логическое состояние цифровых выходов, например 0 переключает выход D13 в состояние лог. нуля, 1 в состояние лог. 1.
  • 11000…11255 — команды для первого ШИМ канала, значения от 0 до 255 определяют скважность импульсов ШИМ сигнала.
  • 12000…12255 — ШИМ второго канала.

В мониторе порта можно наблюдать коды команд при изменении параметров в Android приложении.

Как видно на скриншоте, в Serial Port через Bluetooth была отправлена команда 12153, далее определяется код команды 12 (ШИМ 2) и значение параметра 153. Далее в скетче это значение вставляется в функцию:

analogWrite(10,153); //  D10 ШИМ 2

Цифровые выходы ШИМ D9 D10, выходы для управления реле D13 D12 D11 D8 D7, все они могут быть измерены в скетче.

Для использования примера Вам понадобится плата Arduino Nano (Uno), Bluetooth модуль HC-06 (описание и подключение) и Android приложение — arduino_2PWM_5button.apk

Форум (исходники) — http://forum.rcl-radio.ru/viewtopic.php?pid=602#p602

http://forum.rcl-radio.ru/viewtopic.php?pid=625#p625

Добавить комментарий

Войти с помощью: