«Встроенные — распознавание речи. Заметки по разработке TWen-ASR-ONE» Глава 4 ШИМ-затемнение TWen-ASR-ONE

искусственный интеллект Примечания
«Встроенные — распознавание речи. Заметки по разработке TWen-ASR-ONE» Глава 4 ШИМ-затемнение TWen-ASR-ONE

4.1 Введение в ШИМ

Широтно-импульсная модуляция (ШИМ), аббревиатура от «широтно-импульсной модуляции» на английском языке, называемая широтно-импульсной модуляцией, представляет собой очень эффективную технологию, использующую цифровой выход микропроцессора для управления аналоговыми цепями. Проще говоря, это контроль ширины импульса, а это значит, что в одном цикле время, когда управляющий сигнал находится на высоком уровне, занимает процент от всего цикла сигнала, то есть настраивается скважность.

В Интернете много информации о ШИМ, поэтому я не буду здесь вдаваться в подробности.

4.2 Реализация ШИМ-диммирования

Вот модификация предыдущего примера, здесь осталось управлять RGB-подсветкой.

在这里插入图片描述

Возьмем, к примеру, синий свет.

Графический код выглядит следующим образом:

在这里插入图片描述

Коды символов следующие:

#include "asr.h"
#include "setup.h"

uint32_t snid;
void ASR_CODE();

//{ID:250,keyword:"命令词",ASR:"最大音量",ASRTO:"音量调整到最大"}
//{ID:251,keyword:"命令词",ASR:"中等音量",ASRTO:"音量调整到中等"}
//{ID:252,keyword:"命令词",ASR:"最小音量",ASRTO:"音量调整到最小"}
/*描述该功能...
*/
void ASR_CODE(){
  if((snid) == 4){
    digitalWrite(13,1);
  }
  if((snid) == 6){
    digitalWrite(13,0);
  }
  if((snid) == 8){
    digitalWrite(13,0);
    setPinFun(12,SECOND_FUNCTION);
    pwm_set_duty(PWM3,500,1000);
  }
  if((snid) == 10){
    digitalWrite(13,0);
    setPinFun(12,SECOND_FUNCTION);
    pwm_set_duty(PWM3,10,1000);
  }
}

void setup()
{
  //{speak:小蝶-清新女声,vol:10,speed:10}
  //{playid:10001,voice:欢迎使用智能管家,用智能管家唤醒我。}
  //{playid:10002,voice:我退下了,用智能管家唤醒我}
  //{ID:2,keyword:"唤醒词",ASR:"智能管家",ASRTO:"我在"}
  //{ID:4,keyword:"命令词",ASR:"打开红灯",ASRTO:"好的,马上打开红灯"}
  //{ID:6,keyword:"命令词",ASR:"关闭红灯",ASRTO:"好的,马上关闭红灯"}
  //{ID:8,keyword:"命令词",ASR:"蓝灯中等亮度",ASRTO:"蓝灯中等亮度"}
  //{ID:10,keyword:"命令词",ASR:"蓝灯最小亮度",ASRTO:"蓝灯最小亮度"}
  PWM_enble(PWM3,1000,1000,1);
  setPinFun(12,FIRST_FUNCTION);
}

Разработка PWM очень проста.Tianwen Block IDE предоставляет следующие модули: инициализация и настройка рабочего цикла.

在这里插入图片描述

Но здесь следует отметить, что режим вывода GPIO необходимо изменить. Согласно справочнику.

在这里插入图片描述

Режим PWM3 по умолчанию — обычный GPIO, который необходимо установить во второй режим (PWM).

Далее, как и в предыдущей главе, компилируем и скачиваем. Окончательный эффект выглядит следующим образом:

Я: умная домработница

TWen-ASR-ONE: Я

Я: голубой свет средней яркости

TWen-ASR-ONE: синий свет средней яркости

在这里插入图片描述

Я: минимальная яркость синего света

TWen-ASR-ONE: минимальная яркость синего света

在这里插入图片描述