Android音频通信

编程入门 行业动态 更新时间:2024-10-18 01:28:28

Android<a href=https://www.elefans.com/category/jswz/34/1768490.html style=音频通信"/>

Android音频通信

转至:Android音频通信--简单演示程序


 简单的Android音频通信演示程序,Android手机的耳机接头左声道接在ZC-ADK P3的1号脚,即C3INC上。通过按键选择播放不同的音频文件,通过电压比较中断统计音频信号的方波次数,进而分辨不同的控制信号,控制LED2、LED3的亮灭。
       这个Android音频通信演示程序原理很简单,实现起来较容易,可以方便的移植到红外遥控器上。但是此方法通信速度很慢,只做演示用,后期会采用效率更高的编码方式。


音频接口示意图
       利用GoldWave生成不同频率音频文件,有5Hz-500Hz不等,使用时需将其复制到Android手机的sdcard/AudioDemo下。
       Android手机播放音频文件代码:
                    path = "/sdcard/AudioDemo/LED2ON5Hz.wav";  //指定播放文件路径                    
                   try {
                          mMediaPlayer = new MediaPlayer();
                          mMediaPlayer.setDataSource(path);
                         mMediaPlayer.prepare();
                         mMediaPlayer.start();
                    } catch (Exception e) {
                        Log.e(TAG, "error: " + e.getMessage(), e);
                    }

       PIC单片机电压比较器的初始化代码:
void Compare_On(void) 
{        
        CVRCONbits.CVRSS=0;//Us=AVDD-AVSS;
        CVRCONbits.CVRR=1;//CV RSRC 范围应从0 到0.625 CVRSRC ,步长为CVRSRC /24
        CVRCONbits.CVROE=0;//CV REF电压从CVREF 引脚断开
        CVRCONbits.CVREN=1;//CV REF电路上电
        CVRCONbits.CVR=2;//当CVRR =  1 时:CVREF = (CVR<3:0>/ 24)*(CVRSRC )
        
        CM3CONbits.EVPOL=3;//比较器反相输入连接到CxINC引脚比较器输出的任何变化导致发生触发/ 事件/ 中断(当CEVT = 0 时)
        CM3CONbits.CCH=1;//比较器反相输入连接到CxINC引脚
        CM3CONbits.CREF=1;//同相输入连接到内部CVref+输入参考电压
        CM3CONbits.CEN=1;//比较器使能
        CM3CONbits.CEVT=0;//发生由EVPOL<1:0> 定义的比较器事件;该位清零之前禁止后续触发和中断
        
        _CMIF=0;//中断标志清空
        _CMIE=1;        //中断使能
}
       PIC单片机电压比较器的中断函数代码:
void __attribute__((__interrupt__,no_auto_psv)) _CompInterrupt(void)
{
        T1CONbits.TON = 1 ;//turn on the timer
        CM3CONbits.CEVT=0;//发生由EVPOL<1:0> 定义的比较器事件;该位清零之前禁止后续触发和中断
        _CMIF=0;//中断标志清空
        TMR1  = 0;//清空Timer1计时器,即在最后一次电压比较中断后开始计时
        CompareState++;                
}  
      PIC单片机计时器T1初始化代码:
void T1_Init(void) 
{
        PR1 = 31250;//每0.5s中断一次 31250*256*62.5ns
        TMR1  = 0;//clear timer1 value
        _T1IF = 0;//clear interrupt flag
        _T1IP = 1;//choose a priority
        _T1IE = 1;//enable the interrupt
        T1CON = 0x0030;//TCKPS<1:0>=11 256分频
}      
        PIC单片机计时器T1中断代码:
void __attribute__((__interrupt__,no_auto_psv)) _T1Interrupt(void)
{
        _T1IF = 0;//clear interrupt flag
        T1State = 1;//
        T1CONbits.TON = 0;//关闭计时器1
}   

根据统计到的电压比较中断次数,进行LED控制
                if(T1State == 1)//根据统计的Compare中断次数,控制LED亮灭
                {
                        if((CompareState<12)&(CompareState>8))
                        {
                                LED2_On();
                        }                                                
                        else if((CompareState<120)&(CompareState>80))
                        {
                                LED2_Off();
                        }                
                        else if((CompareState<220)&(CompareState>180))
                        {
                                LED3_On();
                        }        
                        else if((CompareState<1020)&(CompareState>800))
                        {
                                LED3_Off();
                        }        
                        CompareState=0;
                        T1State = 0;                        
                }

更多推荐

Android音频通信

本文发布于:2023-06-28 04:04:34,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/921487.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:音频   通信   Android

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!