電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>使用MCP3008模數(shù)轉(zhuǎn)換器將Pi2連接到三個(gè)模擬組件

使用MCP3008模數(shù)轉(zhuǎn)換器將Pi2連接到三個(gè)模擬組件

2022-12-23 | zip | 0.07 MB | 次下載 | 免費(fèi)

資料介紹

描述

在這個(gè)項(xiàng)目中,我們將在 Raspberry Pi 2 組件上使用適用于 Windows 10 IoT Core 的 Adafruit Starter Pack來(lái)制作說(shuō)話光傳感器。這將展示如何使用 MCP3008 模數(shù)轉(zhuǎn)換器 (ADC) 芯片將 Pi2 連接到三個(gè)模擬組件。兩個(gè)可變電阻器電位器)和一個(gè) CdS 光電管。

硬件設(shè)置

按照下面的 Fritzing 圖將 Raspberry Pi2 連接到面包板和其他組件。 ?

注意:設(shè)置電路時(shí),請(qǐng)確保 MCP3008 芯片的方向正確。該芯片有一個(gè)半月形標(biāo)記,一側(cè)有一個(gè)點(diǎn)。其方向應(yīng)如下圖所示。

選修的

如果您有一對(duì)帶 1/8" 插孔的耳機(jī)或一組帶 1/8" 插孔的有源揚(yáng)聲器,您可以將它們連接到 Pi2 音頻輸出插孔以聽(tīng)到語(yǔ)音系統(tǒng)的提示。

代碼

主頁(yè).cs

您可以從https://github.com/ms-iot/adafruitsample下載代碼啟動(dòng)項(xiàng)目??,我們將引導(dǎo)您完成添加與 Web 服務(wù)對(duì)話并在地圖上獲取您的 pin 所需的代碼。什么地圖?

打開(kāi)“Lesson_204\StartSolution\Lesson_204.sln ?并打開(kāi) mainpage.xaml.cs 文件。?

我們已經(jīng)填寫(xiě)了一些方法作為您在此解決方案中的起點(diǎn)。如果你想跳到前面,你可以在以下位置找到所有代碼已完成的解決方案:“Lesson_204\FullSolution\Lesson_204.sln”

?

在 MainPage 類(lèi)的頂部添加以下行。

 
          ReferenceVoltage =  ;

        
          LowPotentiometerADCChannel =  ;
          HighPotentiometerADCChannel =  ;
         CDSADCChannel =  ;

        
          JustRightLightString =  ;
          LowLightString =  ;
          HighLightString =  ;

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

        
        MCP3008 mcp3008 =  MCP3008(ReferenceVoltage);

        
         SpeechSynthesizer 合成器;

        
        定時(shí)器定時(shí)器;

?

現(xiàn)在將這些行添加到 MainPage 構(gòu)造函數(shù)以設(shè)置 Windows 語(yǔ)音合成器和 ADC 芯片。

// 創(chuàng)建一個(gè)的SpeechSynthesizer供以后使用。
 合成器=語(yǔ)音合成器();

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

?

現(xiàn)在將這些行添加到 OnNavigatedTo 方法。這將設(shè)置一個(gè)計(jì)時(shí)器回調(diào),它將在不同的線程上每秒調(diào)用一次我們的代碼。

如果您不想在地圖上添加圖釘,請(qǐng)刪除MakePinWebAPICall();??

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

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

?

現(xiàn)在我們調(diào)用了計(jì)時(shí)器回調(diào),讓我們填寫(xiě)它。

 異步 timerCallback(對(duì)象狀態(tài))
        {
            調(diào)試。 (  );
            (mcp3008 == )
            {
                調(diào)試。 (  );
                ;
            }

            
            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);

            
            調(diào)試。 (String.Format(  ,
                 lowPotReadVal, highPotReadVal, cdsReadVal));
            調(diào)試。 (String.Format(  ,
                 lowPotVoltage, highPotVoltage, cdsVoltage));

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

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

            
            等待 CheckForStateChange(newState);
        }

?

我們已經(jīng)為您填寫(xiě)了大部分 CheckForStateChange 代碼,但您想要添加對(duì) TextToSpeech 幫助程序方法的調(diào)用。


等待

?

現(xiàn)在是語(yǔ)音 API 的有趣部分,讓它說(shuō)話!修改 TextToSpeech 方法并添加這些行。

異步 
 {
     SpeechSynthesisStream 合成流;

     
     
     synthesisStream = 等待合成器。 ;

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

?

MCP3008.cs

這是將包裝 ADC 功能的類(lèi)。

首先,我們將在構(gòu)建新對(duì)象時(shí)存儲(chǔ)參考電壓值。

公共 
{
    調(diào)試。 ;

    
    參考電壓 = 參考電壓;
}

?

然后我們將填寫(xiě) Initialize 方法以設(shè)置與 SPI 總線控制器的通信。


{
    
     settings =  SpiConnectionSettings(SPI_CHIP_SELECT_LINE);
    
    設(shè)置下的額定速度。ClockFrequency =  ;                              
    settings.Mode = SpiMode.Mode0;

    

    
    aqs = SpiDevice.GetDeviceSelector();

    
     dis =  DeviceInformation.FindAllAsync(aqs);

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

    (mcp3008 == )
    {
        調(diào)試.WriteLine(
            ,
            dis[  ].Id);
        ;
    }

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

?

現(xiàn)在我們將填寫(xiě) ReadADC 方法以實(shí)際從 MCP3008 芯片讀取一個(gè)值。

  ReadADC(byte whichChannel)
{
    字節(jié)命令 = whichChannel;
    命令 |= MCP3008_SingleEnded;
    命令 <<=  ;

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

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

    mcp3008.TransferFullDuplex(commandBuf, readBuf);

     sample = readBuf[  ] + ((readBuf[  ] &  ) <<  );
     s2 = 樣本 &  ;
    調(diào)試斷言(示例== s2);
    樣品;
}

?

最后添加一個(gè)輔助方法,用于將返回的 ADC 值(以單位為單位)轉(zhuǎn)換為電壓。

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

?

校準(zhǔn)

運(yùn)行代碼并將面包板放在正常照明的區(qū)域。?

查看輸出窗口,了解 ADC 芯片從兩個(gè)電位器和光電池讀取的電壓。

第一個(gè)數(shù)字是從低調(diào)整罐讀取的值,第二個(gè)是高調(diào)整罐,第三個(gè)是當(dāng)前在光電池上讀取的值。

 ::
 。_ _  , 。 ,  
  

?

轉(zhuǎn)動(dòng)低邊界電位器,觀察第一個(gè)數(shù)字的值變化。調(diào)整電位器直到電壓略低于第三個(gè)數(shù)字的值(至少 0.2 伏)。

現(xiàn)在轉(zhuǎn)動(dòng)高邊界鍋,看第二個(gè)數(shù)字的值。您希望它比第三個(gè)數(shù)字的值高一點(diǎn)(同樣至少 0.2 伏)。

現(xiàn)在已經(jīng)配置了一個(gè)邊界區(qū)域,其中的值“恰到好處”。

手術(shù)

以這種方式設(shè)置盆,如果你用手遮住光電管,輸出應(yīng)該說(shuō)“我需要一盞燈”,如果你連接了可選的耳機(jī)/揚(yáng)聲器,你應(yīng)該聽(tīng)到 Pi2 語(yǔ)音。

取下你的陰影會(huì)使它變成“啊,剛剛好”(和語(yǔ)音)。

將一盞燈照在傳感器上會(huì)變成“我需要戴墨鏡”(再次講話)。

 ::timerCallback
、 
 。 ,  .  , 。 
 ::TextToSpeech 啊,剛剛好

 ::timerCallback
、 
 。 ,  .  ,  
 ::TextToSpeech 我需要一盞燈

 ::timerCallback
、 
 。 ,  .  , 。 
 ::TextToSpeech 我需要戴墨鏡

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1GBT1094.11-2022電力變壓器第11部分:干式變壓器
  2. 14.12 MB   |  3次下載  |  免費(fèi)
  3. 2PT500齒輪傳動(dòng)動(dòng)力學(xué)綜合測(cè)試實(shí)驗(yàn)臺(tái)
  4. 0.16 MB   |  3次下載  |  免費(fèi)
  5. 3FT-7800R對(duì)講機(jī)維修手冊(cè)附原理圖
  6. 3.35 MB   |  2次下載  |  免費(fèi)
  7. 4串口工具UartAssist5.0.exe
  8. 0.60 MB   |  2次下載  |  免費(fèi)
  9. 5爬電距離和電氣間隙計(jì)算
  10. 0.75 MB   |  2次下載  |  1 積分
  11. 6UC3584DW次級(jí)側(cè)后置穩(wěn)壓器EVM板原理圖
  12. 38.97KB   |  2次下載  |  免費(fèi)
  13. 7UCC38C42 25瓦自諧振復(fù)位正激變換器
  14. 320.6KB   |  1次下載  |  免費(fèi)
  15. 8使用15個(gè)時(shí)鐘周期的ADS7841和ADS7844
  16. 188.55KB   |  1次下載  |  免費(fèi)

本月

  1. 1ACDC變換器的原理圖免費(fèi)下載
  2. 0.26 MB   |  65次下載  |  免費(fèi)
  3. 2無(wú)刷電機(jī)控制方案設(shè)計(jì)合作
  4. 1.05 MB   |  22次下載  |  免費(fèi)
  5. 3美的超薄電磁爐TM-S1-09B主板原理圖
  6. 0.08 MB   |  20次下載  |  免費(fèi)
  7. 4純電動(dòng)汽?的主要部件及?作原理
  8. 5.76 MB   |  12次下載  |  5 積分
  9. 5GP328和GP88S對(duì)講機(jī)的維修實(shí)列資料合集免費(fèi)下載
  10. 0.03 MB   |  10次下載  |  10 積分
  11. 6舒爾SLX4無(wú)線話筒接收機(jī)原理圖:二次變頻超外差部分
  12. 0.27 MB   |  8次下載  |  免費(fèi)
  13. 7i.MX Linux開(kāi)發(fā)實(shí)戰(zhàn)指南—基于野火i.MX系列開(kāi)發(fā)板
  14. 17.86 MB   |  7次下載  |  免費(fèi)
  15. 8Type-C VL160數(shù)據(jù)手冊(cè)
  16. 0.92 MB   |  7次下載  |  3 積分

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935115次下載  |  10 積分
  3. 2開(kāi)源硬件-PMP21529.1-4 開(kāi)關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
  4. 1.48MB  |  420061次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233084次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費(fèi)下載
  8. 340992  |  191363次下載  |  10 積分
  9. 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  10. 158M  |  183329次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81581次下載  |  10 積分
  13. 7Keil工具M(jìn)DK-Arm免費(fèi)下載
  14. 0.02 MB  |  73805次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65985次下載  |  10 積分