| Ваш IP: 3.236.112.98 | Online(38) - гости: 28, боты: 10 | Загрузка сервера: 0.75 ::::::::::::

Arduino HC-06 (PWM + button)

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

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

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

Случайные статьи

  • Регулятор громкости на полевом транзисторе

    Регулятор громкости на полевом транзисторе

    На рисунке показана схема простого регулятора громкости на полевом транзисторе. Регулировка громкости осуществляется подачей отрицательного напряжения от 0 до -3 В на затвор полевого транзистора. Напряжение 0 В на затворе транзистора соответствует минимальному уровню громкости, а напряжение -3 В — максимальной громкости. Источник — https://freecircuitdiagram.com/4656-voltage-controlled-attenuator-volume-control-using-fet/Подробнее...
  • Трансформаторный источник питания с гасящим конденсатором 3 В/0,5 А

    Простой ИП с гасящим конденсатором и доступным для изготовления трансформатором с небольшим числом витков, обеспечивающим гальваническую развязку от сети, а значит, электробезопасность. Трансформатор становится простым в изготовлении, если напряжение на его первичной обмотке ограничить значением около 30 В. Для этого достаточно 600…650 витков сравнительно толстого, удобного при намотке провода. Излишек …Подробнее...
  • Термопары

    Термопары

    Термопара (термоэлектрический преобразователь) — устройство, применяемое для измерения температуры в промышленности, научных исследованиях, медицине, в системах автоматики. Принцип действия основан на эффекте Зеебека или, иначе, термоэлектрическом эффекте. Между соединёнными проводниками имеется контактная разность потенциалов; если стыки связанных в кольцо проводников находятся при одинаковой температуре, сумма таких разностей потенциалов равна нулю. …Подробнее...
  • Сигнализатор перегорания предохранителя

    Сигнализатор перегорания предохранителя

    Сигнализатор перегорания предохранителя предназначен для контроля исправности плавкого предохранителя и наличия напряжения электроосветительной сети. Подключают его параллельно сетевому предохранителю. Если предохранитель исправен, то светодиод HL1 горит постоянно, если перегорел, то светодиод начинает мигать. При отсутствии сетевого напряжения он, естественно, погаснет. На элементах DD1.1 и DD1.2 собран генератор импульсов с частотой …Подробнее...
  • RIAA предусилитель на TDA2320A

    RIAA предусилитель на TDA2320A

    ИМС TDA2320A содержит в своем корпусе два низкочастотных ОУ, с очень низким током потребления, порядка 0,8 мА и работающих в широком диапазоне питающих напряжений от 3 до 36 В. ИМС TDA2320A предназначена для широкого применения в аудиотехнике (усилители воспроизведения, предварительные усилители, эквалайзеры, активные фильтры и т.д.). ИМС TDA2320A может работать …Подробнее...