资料介绍
描述
在这个项目中,我们将在 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 我需要戴墨镜
- ADS7869电机控制前端,内置三个模数转换器(ADC)数据表
- MCP3008上的高灵敏度水传感器
- 使用MCP3008在Raspberry Pi上进行模拟输入
- 三角积分ADC转换器的详细资料和电路图 17次下载
- AT89S51单片机与ADC0809模数转换器的三种连接 18次下载
- 基于MCP3004/8带有带有SPI串行接口的2.7V,4通道/8通道转换器
- 基于MCP3426/7/8带有16 位多通道模数转换器
- 基于MCP3919下的3V 三通道模拟前端
- 如何将TLV1544模数转换器连接到TMS320C50处理器的详细资料概述 4次下载
- 如何将ADS8361模数转换器连接到TMS470处理器端口的方法详细概述 20次下载
- 如何将MSOP8EVM与模数转换器的EVM接口连接到MSP430系列处理器的方法 1次下载
- 如何将TLC4541模数转换器连接到TMS320C6711 DSP的方法详细概述 9次下载
- TMS320F28x DSP模数转换器(ADC)参考指南 3次下载
- 最小的24位模数转换器的使用 23次下载
- 数模和模数转换器
- 模数转换器的技术参数详解 912次阅读
- 模数转换器的工作原理、分类及应用 817次阅读
- RA6T2的16位模数转换器操作 [2] A/D转换器概述 (2) 224次阅读
- RA6T2的16位模数转换器操作 [1] 简介,A/D转换器概述 185次阅读
- 模数转换器电路图分享 4483次阅读
- ADC模数转换器的延时原理 766次阅读
- 模数转换器损坏该如何处理? 459次阅读
- 模数转换器按键读取的设置方法及使用 1939次阅读
- 模数转换器分类_模数转换器选型 5572次阅读
- 如何降低模数转换器的性能 3991次阅读
- 关于高速ADC模数转换器精度问题 9446次阅读
- 模数转换器的工作原理与分类特点详解 4452次阅读
- 小白必看:模数转换器应用典型电路设计详细解析 2.2w次阅读
- 模数转换器工作原理、类型及主要技术指标 2w次阅读
- 模数转换器的基本原理及不同类型ADC特点 3.3w次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多