发 帖  
原厂入驻New

正点原子潘多拉开发板免费试用连载+红外遥控播放音乐

2020-6-30 21:45:10  185 红外遥控器
分享
0
       在一个精致的塑料盒中,除了比较抢眼的潘多拉之外就是那个定制的红外遥控器了。在正点原子其他的套件中也都有它的存在。这个小巧的遥控器除了音乐播放需要的几个按键就是数字键,或者说是九宫格的键盘了,上面还有字母符号。来看下真是面容
   
    既然有了遥控器,实现隔空控制是没问题了。展开音乐播放的工程,可以看到很原子的风格。这里的音频功能实现依靠一颗ES8388编解码芯片。 该芯片内部集成了 24位高性能 DAC&ADC,可以播放最高 96K@24bit的音频信号。不仅如此,该芯片还 结合了立体声差分麦克风 放大器 、耳机 放大器 、 数字音效以及模拟混合和增益功能 ,减少 了应用时必需的外部组件,直接可以驱动耳机( 40mW)无需外加功放电路。该芯片采用 I2S与 MCU的 SAI接口连接( SAI支持 I2S),图中 SAI1_SD_B/SAI1_SD_A SAI1_FS_A/SAI1_SCK_A/SAI1_MCLK_A分别接在 MCU的: PE3/PE6/PE4/PE5/PE2上。IIC_SCL1和 IIC_SDA分别与 MCU的 PC0/PC1相连 。开发板很细心的将这部分的电源独立开来,在低功耗实现时能够关闭电源消耗。
  1. int main(void)
  2. {
  3.     HAL_Init();
  4.     Systemclock_Config();                //³õʼ»¯ÏµÍ³Ê±ÖÓΪ80M
  5.     delay_init(80);                         //³õʼ»¯ÑÓʱº¯Êý    80MϵͳʱÖÓ
  6.     uart_init(115200);                        //³õʼ»¯´®¿Ú£¬²¨ÌØÂÊΪ115200

  7.     LED_Init();                                        //³õʼ»¯LED
  8.     KEY_Init();                                        //³õʼ»¯°´¼ü
  9.     LCD_Init();                                        //³õʼ»¯LCD
  10.     W25QXX_Init();                                //³õʼ»¯W25Q128

  11.     my_mem_init(SRAM1);                        //³õʼ»¯ÄÚ²¿SRAM1ÄÚ´æ³Ø
  12.     my_mem_init(SRAM2);                        //³õʼ»¯ÄÚ²¿SRAM2ÄÚ´æ³Ø

  13.     ES8388_Init();                                //ES8388³õʼ»¯
  14.         ES8388_Set_Volume(22);                //µ÷½Ú¶ú»úÒôÁ¿

  15.     exfuns_init();                        //ΪfatfsÏà¹Ø±äÁ¿ÉêÇëÄÚ´æ
  16.     f_mount(fs[0], "0:", 1);    //¹ÒÔØSD¿¨
  17.     f_mount(fs[1], "1:", 1);    //¹ÒÔØSPI FLASH.

  18.     POINT_COLOR = RED;
  19.     display_alientek_LOGO(0, 0);

  20.     while(font_init())                         //¼ì²é×Ö¿â
  21.     {
  22.         LCD_ShowString(30, 100, 200, 16, 16, "Font Error!");
  23.         delay_ms(200);
  24.         LCD_Fill(30, 100, 240, 116, WHITE); //Çå³ýÏÔʾ
  25.         delay_ms(200);
  26.     }

  27.     POINT_COLOR = BLUE;
  28.     Show_Str(30, 90, 200, 24, (u8*)"Å˶àÀ­STM32L4 IOT¿ª·¢°å", 16);
  29.     Show_Str(30, 97, 200, 16, (u8*)"ÒôÀÖ²¥·ÅÆ÷ʵÑé", 16);
  30.     Show_Str(30, 114, 200, 16, (u8*)"ÕýµãÔ­×Ó@ALIENTEK", 16);
  31.     Show_Str(30, 131, 200, 16, (u8*)"2018Äê10ÔÂ27ÈÕ", 16);
  32.     Show_Str(30, 148, 200, 16, (u8*)"KEY0:NEXT   KEY2:PREV", 16);
  33.     Show_Str(30, 165, 200, 16, (u8*)"KEY_UP:PAUSE/PLAY", 16);
  34.         
  35.          Reception_Init();
  36.     while(1)
  37.     {
  38.         audio_play();
  39.     }
  40. }
复制代码
   当然,也不得不说,这样的工程也很方便,外设独立性很高,需要什么添加什么就好了。对整合一个综合性的工程减小了不少工作量。这里就添加红外接收的处理函数。主要看下键码

  1. switch(key)
  2.                         {
  3.                                 case 0:str="ERROR";break;                           
  4.                                 case 162:str="POWER";break;            
  5.                                 case 98:str="UP";break;            
  6.                                 case 2:str="PLAY";break;                 
  7.                                 case 226:str="ALIENTEK";break;                  
  8.                                 case 194:str="RIGHT";break;           
  9.                                 case 34:str="LEFT";break;                  
  10.                                 case 224:str="VOL-";break;                  
  11.                                 case 168:str="DOWN";break;                  
  12.                                 case 144:str="VOL+";break;                    
  13.                                 case 104:str="1";break;                  
  14.                                 case 152:str="2";break;           
  15.                                 case 176:str="3";break;            
  16.                                 case 48:str="4";break;                    
  17.                                 case 24:str="5";break;                    
  18.                                 case 122:str="6";break;                  
  19.                                 case 16:str="7";break;                                                                  
  20.                                 case 56:str="8";break;         
  21.                                 case 90:str="9";break;
  22.                                 case 66:str="0";break;
  23.                                 case 82:str="DELETE";break;                 
  24.                         }
复制代码
     这里和音乐播放的按键操作保持一致,只要播放/暂停,上一曲/下一曲即可。只需对194,34,2三个键码做相应动作即可。插入原代码的部分要尽量融合,如图      
   
   然后编译无错,就可以下载到开发板了,从逻辑上来说,应该是可以一部到位的。
   
  看到屏幕按照预期显示了,按下遥控器的按键可以正确执行对应的动作。这样就在巨人的肩膀上摘了个苹果。感谢社区试用活动和原子的馈赠。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

只有小组成员才能发言,加入小组>>

1541个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表