在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何操作ADC去讀取電壓

電子發燒友開源社區 ? 來源:HarmonyOS官方合作社區 ? 作者:HarmonyOS官方合作社 ? 2022-03-02 17:51 ? 次閱讀

摘要

本文簡單介紹如何操作ADC去讀取電壓,并且實現開發板上3個ADC按鍵檢測的功能。

適合群體

適用于潤和Hi3861開發板,L0輕量系統驅動開發

1、實驗效果

查看開發板,可以看到除了復位按鍵之外,還有3個按鍵。而查看原理,我們可以看到這個3個按鍵其實都是接的GPIO5 引腳,而GPIO5引腳又可復用為ADC2引腳。

如何操作ADC去讀取電壓

故而,我們可以猜測出來我們可以使用ADC檢測電壓,判斷出來是哪個引腳被按下了。看下效果:

當我按下 按鍵1 的時候串口會打印:

如何操作ADC去讀取電壓

當我按下 按鍵2 的時候串口會打印:

如何操作ADC去讀取電壓

當我按下 USER按鍵 的時候串口會打印:

如何操作ADC去讀取電壓

其中 vlt_min 表示讀取到ADC值的最小值,vlt_max 表示讀取到ADC值的最大值。

由此我們可以看到,按鍵1被按下的時候,ADC值得范圍在 0.563 ~ 0.577,按鍵2按下后,ADC值在 0.963 ~ 0.970,USER按鍵按下后 ADC值 在 0.197 ~ 0.204。

如果沒有按鍵按下,則ADC值在 3.227 ~ 3.241,vlt_min:3.227, vlt_max:3.241

2、代碼實現

代碼實現其實很簡單:

(1)引腳初始化

這里由于GPIO5默認被復用為串口引腳,這里我們重新修改為普通GPIO引腳。初始化代碼如下:

(hi_void)hi_gpio_init();    hi_io_set_func(HI_IO_NAME_GPIO_5, HI_IO_FUNC_GPIO_5_GPIO); /* uart1 rx */
  ret = hi_gpio_set_dir(HI_GPIO_IDX_5, HI_GPIO_DIR_IN);  if (ret != HI_ERR_SUCCESS) {    printf("===== ERROR ======gpio -> hi_gpio_set_dir1 ret:%d
", ret);    return;  }

向右滑動查看完整代碼

(2)讀取ADC值

讀取ADC值的代碼頁相對簡單,這里,我是重復讀取64次,減少誤判。

memset_s(g_adc_buf, sizeof(g_adc_buf), 0x0, sizeof(g_adc_buf));
  for (i = 0; i < ADC_TEST_LENGTH; i++) {    ret = hi_adc_read((hi_adc_channel_index)HI_ADC_CHANNEL_2, &data, HI_ADC_EQU_MODEL_1, HI_ADC_CUR_BAIS_DEFAULT, 0);    if (ret != HI_ERR_SUCCESS) {      printf("ADC Read Fail
");      return;    }    g_adc_buf[i] = data;  }

向右滑動查看完整代碼

(3)對讀出來的ADC值進行判斷處理

S1對應的是按鍵1 、 S2對應的是按鍵2 、 S3對應的是 USER按鍵

for (i = 0; i < data_len; i++) {    vlt = g_adc_buf[i];    float voltage = (float)vlt * 1.8 * 4 / 4096.0; /* vlt * 1.8 * 4 / 4096.0: Convert code into voltage */    vlt_max = (voltage > vlt_max) ? voltage : vlt_max;    vlt_min = (voltage < vlt_min) ? voltage : vlt_min;  }  //printf("vlt_min:%.3f, vlt_max:%.3f 
", vlt_min, vlt_max);
  vlt_val = (vlt_min + vlt_max)/2.0;
  if((vlt_val > 0.4) && (vlt_val < 0.6))  {    if(key_flg == 0)    {      key_flg = 1;      key_status = KEY_EVENT_S1;    }  }  if((vlt_val > 0.8) && (vlt_val < 1.1))  {    if(key_flg == 0)    {      key_flg = 1;      key_status = KEY_EVENT_S2;    }  }
  if((vlt_val > 0.01) && (vlt_val < 0.3))  {    if(key_flg == 0)    {      key_flg = 1;      key_status = KEY_EVENT_S3;    }  }
  if(vlt_val > 3.0)  {    key_flg = 0;    key_status = KEY_EVENT_NONE;  }

向右滑動查看完整代碼

(4)使用

編寫好上面代碼后,就可以直接在while循環中判斷按鍵值了。

while(1)  {    //讀取ADC值    app_demo_adc_test();
    switch(get_key_event())    {      case KEY_EVENT_NONE:      {              }      break;
      case KEY_EVENT_S1:      {        printf("KEY_EVENT_S1 
");      }      break;
      case KEY_EVENT_S2:      {        printf("KEY_EVENT_S2 
");      }      break;
      case KEY_EVENT_S3:      {        printf("KEY_EVENT_S3 
");      }      break;
    }
    usleep(30000);  }

向右滑動查看完整代碼

原文標題:OpenHarmony輕量系統開發【6】驅動之ADC按鍵

文章出處:【微信公眾號:HarmonyOS官方合作社區】歡迎添加關注!文章轉載請注明出處。

審核編輯:湯梓紅


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • adc
    adc
    +關注

    關注

    99

    文章

    6571

    瀏覽量

    546767
  • 驅動
    +關注

    關注

    12

    文章

    1867

    瀏覽量

    85956
  • 電壓
    +關注

    關注

    45

    文章

    5654

    瀏覽量

    116679

原文標題:OpenHarmony輕量系統開發【6】驅動之ADC按鍵

文章出處:【微信號:HarmonyOS_Community,微信公眾號:電子發燒友開源社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何在MSP430G2中使用ADC使用Energia IDE讀取模擬電壓

    在本教程中,我們將學習如何在MSP430G2中使用ADC使用Energia IDE讀取模擬電壓。我們將一個小電位計連接到MSP板,并向模擬引腳提供變化的電壓
    的頭像 發表于 11-16 17:24 ?2417次閱讀
    如何在MSP430G2中使用<b class='flag-5'>ADC</b>使用Energia IDE<b class='flag-5'>讀取</b>模擬<b class='flag-5'>電壓</b>

    ESP8285 ADC可以讀取的最大電壓是多少?

    我想將溫度傳感器連接到ADC(TOUT)引腳。ADC可以讀取的最大電壓是多少?是1V嗎?如果是,向ADC施加2V
    發表于 07-08 06:55

    如何使用ADC讀取DAC輸出引腳的電壓值?

    如何使用STM32CubeMX配置STM32L431RCT6的ADC外設?如何使用ADC讀取DAC輸出引腳的電壓值?
    發表于 07-01 06:01

    中斷方式單通道ADC讀取電壓

    單端/差分ADC和三個內部通道。學習內容:1.輪詢方式單通道ADC讀取電壓2.中斷方式單通道ADC讀取
    發表于 08-11 07:22

    如何使用ADC采集電壓

    如何使用ADC采集電壓呢?有哪些操作流程?
    發表于 09-24 06:27

    新手求助怎樣讀取ADC的值

    GPIO的操作步驟有哪些?獨立看門狗的操作步驟有哪些?怎樣讀取ADC的值?
    發表于 09-24 06:57

    怎樣讀取基于stm32f030的ADC

    ADC設置的一般步驟有哪些?怎樣讀取ADC的值?如何對ADC的值進行分析?
    發表于 10-15 08:02

    怎樣計算STM32的ADC參考電壓與參照電壓

    STM32的ADC電壓輸入范圍是多少?怎樣計算STM32的ADC參考電壓與參照電壓呢?
    發表于 10-21 06:51

    如何利用基于STM32F407的單通道ADC讀取電壓

    ADC的功能有哪些?如何利用基于STM32F407的單通道ADC讀取電壓呢?
    發表于 01-25 06:44

    OpenHarmony輕量系統開發【6】驅動之ADC按鍵

    摘要:本文簡單介紹如何操作ADC讀取電壓,并且實現開發板上3個ADC按鍵檢測的功能適合群體:適
    發表于 01-25 10:25

    STM32單片機基礎21——使用ADC讀取電壓

    title: 【STM32Cube-21】使用ADC讀取電壓值tags: STM32CubeMX ADCcategories: STM32CubeMXabbrlink: 862377868date
    發表于 11-19 09:51 ?35次下載
    STM32單片機基礎21——使用<b class='flag-5'>ADC</b><b class='flag-5'>讀取</b><b class='flag-5'>電壓</b>值

    51單片機讀取JY61陀螺儀的數據操作方法

    51單片機讀取JY61陀螺儀的數據操作方法
    發表于 11-23 16:20 ?13次下載
    51單片機<b class='flag-5'>去</b><b class='flag-5'>讀取</b>JY61陀螺儀的數據<b class='flag-5'>操作</b>方法

    利用51單片機讀取JY901的陀螺儀和磁力計數據操作

    利用51單片機讀取JY901的陀螺儀和磁力計數據操作
    發表于 11-23 16:20 ?19次下載
    利用51單片機<b class='flag-5'>去</b><b class='flag-5'>讀取</b>JY901的陀螺儀和磁力計數據<b class='flag-5'>操作</b>

    【GD32】GD32讀取ADC數據

    讀取ADC值4.將ADC值轉換成電壓值我這里采用PA5進行ADC的channel_5通道1.初始IO引腳/*初始化時鐘*/rcu_perip
    發表于 12-02 15:06 ?28次下載
    【GD32】GD32<b class='flag-5'>讀取</b><b class='flag-5'>ADC</b>數據

    APM32F030C8T6_ADC_ADC Vref參考電壓數值讀取出錯

    APM32F030C8T6_ADC_ADC Vref參考電壓數值讀取出錯
    發表于 11-09 21:04 ?2次下載
    APM32F030C8T6_<b class='flag-5'>ADC_ADC</b> Vref參考<b class='flag-5'>電壓</b>數值<b class='flag-5'>讀取</b>出錯
    主站蜘蛛池模板: 九九51精品国产免费看 | 日本免费一区视频 | av72成人 | 日本免费不卡在线一区二区三区 | 久久久久久夜精品精品免费 | 在线视频免费视频网站 | 国内亚州视频在线观看 | 欧美黄又粗暴一进一出抽搐 | 中文天堂最新版资源新版天堂资源 | 亚洲jjzzjjzz在线观看 | 午夜久久福利 | 国产精品va一区二区三区 | 伊人久久大香线蕉影院95 | 黄到让你下面湿的视频 | 国产精品一区二区三区四区 | 亚洲第一成网站 | 一级做a爱片久久毛片 | 日日噜噜夜夜狠狠tv视频免费 | 日韩一级免费毛片 | 婷婷久久综合九色综合98 | 午夜影院0606 | 久久黄网站 | 国产大乳喷奶水在线看 | 免费日韩毛片 | 日韩一级视频 | 人人添人人澡人人澡人人人爽 | 四虎在线观看一区二区 | 日本免费一区视频 | 天堂电影免费在线观看 | 永久在线观看 | 四虎永久地址4hu紧急入口 | 激情婷婷综合久久久久 | 亚洲一区二区综合 | 三级黄色短视频 | 中文字幕天天躁夜夜狠狠综合 | 四虎影院视频在线观看 | 永久免费看 | 中国美女一级黄色片 | 午夜视频在线 | 国产天美 | 一级做a爱片在线播放 |