Ранее в статье 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