电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电子资料>使用MCP3008模数转换器将Pi2连接到三个模拟组件

使用MCP3008模数转换器将Pi2连接到三个模拟组件

2022-12-23 | zip | 0.07 MB | 次下载 | 免费

资料介绍

描述

在这个项目中,我们将在 Raspberry Pi 2 组件上使用适用于 Windows 10 IoT Core 的 Adafruit Starter Pack来制作说话光传感器这将展示如何使用 MCP3008 模数转换器 (ADC) 芯片将 Pi2 连接到三个模拟组件。两个可变电阻器电位器)和一个 CdS 光电管。

硬件设置

按照下面的 Fritzing 图将 Raspberry Pi2 连接到面包板和其他组件。  

注意:设置电路时,请确保 MCP3008 芯片的方向正确。该芯片有一个半月形标记,一侧有一个点。其方向应如下图所示。

选修的

如果您有一对带 1/8" 插孔的耳机或一组带 1/8" 插孔的有源扬声器,您可以将它们连接到 Pi2 音频输出插孔以听到语音系统的提示。

代码

主页.cs

您可以从https://github.com/ms-iot/adafruitsample下载代码启动项目  ,我们将引导您完成添加与 Web 服务对话并在地图上获取您的 pin 所需的代码。什么地图?

打开“Lesson_204\StartSolution\Lesson_204.sln  并打开 mainpage.xaml.cs 文件。 

我们已经填写了一些方法作为您在此解决方案中的起点。如果你想跳到前面,你可以在以下位置找到所有代码已完成的解决方案:“Lesson_204\FullSolution\Lesson_204.sln”

 

在 MainPage 类的顶部添加以下行。

 
          ReferenceVoltage =  ;

        
          LowPotentiometerADCChannel =  ;
          HighPotentiometerADCChannel =  ;
         CDSADCChannel =  ;

        
          JustRightLightString =  ;
          LowLightString =  ;
          HighLightString =  ;

        
         eState { unknown, JustRight, TooBright, TooDark};
        eState CurrentState = eState.unknown;

        
        MCP3008 mcp3008 =  MCP3008(ReferenceVoltage);

        
         SpeechSynthesizer 合成器;

        
        定时器定时器;

 

现在将这些行添加到 MainPage 构造函数以设置 Windows 语音合成器和 ADC 芯片。

// 创建一个的SpeechSynthesizer供以后使用。
 合成器=语音合成器();

 // 初始化ADC芯片以供使用
 mcp3008.初始化();

 

现在将这些行添加到 OnNavigatedTo 方法。这将设置一个计时器回调,它将在不同的线程上每秒调用一次我们的代码。

如果您不想在地图上添加图钉,请删除MakePinWebAPICall();  

 override void OnNavigatedTo(NavigationEventArgs navArgs)
        {
            Debug.WriteLine(  );

            MakePinWebAPICall();
            // 我们将每秒
            timer =  Timer(timerCallback, this, 0, 1000);
        }

 

现在我们调用了计时器回调,让我们填写它。

 异步 timerCallback(对象状态)
        {
            调试。 (  );
            (mcp3008 == )
            {
                调试。 (  );
                ;
            }

            
            eState newState = eState.JustRight;

            
             lowPotReadVal = mcp3008.ReadADC(LowPotentiometerADCChannel);
             highPotReadVal = mcp3008.ReadADC(HighPotentiometerADCChannel);
             cdsReadVal = mcp3008.ReadADC(CDSADCChannel);

            
             lowPotVoltage = mcp3008.ADCToVoltage(lowPotReadVal);
             highPotVoltage = mcp3008.ADCToVoltage(highPotReadVal);
            cdsVoltage = mcp3008.ADCToVoltage(cdsReadVal);

            
            调试。 (String.Format(  ,
                 lowPotReadVal, highPotReadVal, cdsReadVal));
            调试。 (String.Format(  ,
                 lowPotVoltage, highPotVoltage, cdsVoltage));

            
             (cdsVoltage < lowPotVoltage)
            {
                newState = eState.TooDark;
            }

            
            (cdsVoltage > highPotVoltage)
            {
                newState = eState.TooBright;
            }

            
            等待 CheckForStateChange(newState);
        }

 

我们已经为您填写了大部分 CheckForStateChange 代码,但您想要添加对 TextToSpeech 帮助程序方法的调用。


等待

 

现在是语音 API 的有趣部分,让它说话!修改 TextToSpeech 方法并添加这些行。

异步 
 {
     SpeechSynthesisStream 合成流;

     
     
     synthesisStream = 等待合成器。 ;

     
     media.AutoPlay =  ;
     媒体。 ;
     媒体。 ;
}

 

MCP3008.cs

这是将包装 ADC 功能的类。

首先,我们将在构建新对象时存储参考电压值。

公共 
{
    调试。 ;

    
    参考电压 = 参考电压;
}

 

然后我们将填写 Initialize 方法以设置与 SPI 总线控制器的通信


{
    
     settings =  SpiConnectionSettings(SPI_CHIP_SELECT_LINE);
    
    设置下的额定速度。ClockFrequency =  ;                              
    settings.Mode = SpiMode.Mode0;

    

    
    aqs = SpiDevice.GetDeviceSelector();

    
     dis =  DeviceInformation.FindAllAsync(aqs);

     
    mcp3008 =  SpiDevice.FromIdAsync(dis[  ].Id, settings);     

    (mcp3008 == )
    {
        调试.WriteLine(
            ,
            dis[  ].Id);
        ;
    }

}
(例外 e)
{
    Debug.WriteLine(  + e.Message +  + e.StackTrace);
    ;
}

 

现在我们将填写 ReadADC 方法以实际从 MCP3008 芯片读取一个值。

  ReadADC(byte whichChannel)
{
    字节命令 = whichChannel;
    命令 |= MCP3008_SingleEnded;
    命令 <<=  ;

    byte[] commandBuf = new byte[] {  , 命令,  };

    byte[] readBuf = new byte[] {  ,  ,  };

    mcp3008.TransferFullDuplex(commandBuf, readBuf);

     sample = readBuf[  ] + ((readBuf[  ] &  ) <<  );
     s2 = 样本 &  ;
    调试断言(示例== s2);
    样品;
}

 

最后添加一个辅助方法,用于将返回的 ADC 值(以单位为单位)转换为电压。

   
  {
     ( )adc * ReferenceVoltage / ( )Max;
 }

 

校准

运行代码并将面包板放在正常照明的区域。 

查看输出窗口,了解 ADC 芯片从两个电位器和光电池读取的电压。

第一个数字是从低调整罐读取的值,第二个是高调整罐,第三个是当前在光电池上读取的值。

 ::
 。_ _  ,  ,  
  

 

转动低边界电位器,观察第一个数字的值变化。调整电位器直到电压略低于第三个数字的值(至少 0.2 伏)。

现在转动高边界锅,看第二个数字的值。您希望它比第三个数字的值高一点(同样至少 0.2 伏)。

现在已经配置了一个边界区域,其中的值“恰到好处”。

手术

以这种方式设置盆,如果你用手遮住光电管,输出应该说“我需要一盏灯”,如果你连接了可选的耳机/扬声器,你应该听到 Pi2 语音。

取下你的阴影会使它变成“啊,刚刚好”(和语音)。

将一盏灯照在传感器上会变成“我需要戴墨镜”(再次讲话)。

 ::timerCallback
 
  ,  .  ,  
 ::TextToSpeech 啊,刚刚好

 ::timerCallback
 
  ,  .  ,  
 ::TextToSpeech 我需要一盏灯

 ::timerCallback
 
  ,  .  ,  
 ::TextToSpeech 我需要戴墨镜

 


下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1山景DSP芯片AP8248A2数据手册
  2. 1.06 MB  |  532次下载  |  免费
  3. 2RK3399完整板原理图(支持平板,盒子VR)
  4. 3.28 MB  |  339次下载  |  免费
  5. 3TC358743XBG评估板参考手册
  6. 1.36 MB  |  330次下载  |  免费
  7. 4DFM软件使用教程
  8. 0.84 MB  |  295次下载  |  免费
  9. 5元宇宙深度解析—未来的未来-风口还是泡沫
  10. 6.40 MB  |  227次下载  |  免费
  11. 6迪文DGUS开发指南
  12. 31.67 MB  |  194次下载  |  免费
  13. 7元宇宙底层硬件系列报告
  14. 13.42 MB  |  182次下载  |  免费
  15. 8FP5207XR-G1中文应用手册
  16. 1.09 MB  |  178次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33566次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6656次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537798次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420027次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191187次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费