Renesas RAマイコンを使ってみよう(6)～ADCを使ってみよう～

__Renesas RAマイコンを使ってみよう(5)～UARTとスイッチを使ってみよう～2__ の続きです。

https://qiita.com/usashirou/items/751462eca833ef5d64ed

今回は、ADCを使ってみましょう。
# ADCの追加
__FSP Configuratio__ から __ADC__ を追加します。
最初に使用する __P000__ のピンを見てみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/a80ac205-a5b0-37e6-1069-4af92c0ab01c.png)
__P000__ は __ADC0__ となっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/f25cb2d8-5971-001b-5dda-5e3e86d20509.png)
__New Stack⇒Analog⇒ADC(r_adc)__ を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/14355e37-687f-37fa-c0c7-472eccce67cf.png)
__g_adc0_ADC(r_adc)__ のプロバティを開きます。
__Mode__ を __SingleScan⇒Continuous Scan
Channel0、VoltageSensor__ のチェックを入れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/df886791-2f72-cc18-6069-31eb21eee904.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/bc9397fd-d553-e69c-db5a-175340647398.png)
ここまで設定した段階で __Generate Project Content__ をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/fe616e9f-ee32-f9ad-cb36-c59130e0f11f.png)
# プログラム作成
__Developer Assistance__ を開き __g_adc0 ADC__ から
__Call R_ADC_Open,R_ADC_ScanCfg,R_ADC_ScanStart__ を探し追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/a1ba2c78-1142-ab0d-1f68-434d1697b2ef.png)
次に __Call R_ADC_ScanStart__ を追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/89c009e0-711e-a4e6-c06e-6c0beea66b39.png)
次に __Call R_ADC_Read__ を追加します。
これでADCを読み取ることが出来ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/3a90a27a-868b-fde0-3198-c624ee5224ed.png)
読み込む __ADC__ は __ADC_CHANNEL_0__ になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/97e118c8-92a9-a46b-2886-881ee930b433.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/4f6c34f0-5178-06ea-4ae2-1ba8c50a387f.png)
読み込んだデータは __adcval__ とします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/d07ef612-56f7-05ad-a1fe-d257c09c0f57.png)
__adcval__ 及び出力内容を規定します。
出力の __adcout__ は __13__ だとオーバーフローするので __14__ にしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/2737d855-22a9-9f03-cbb4-a6ecf6b8102f.png)
今回は、__STM32CubeIDEを使ってみよう How To STM32CubeIDE 日本語版 (12) ADCを使ってみよう__ と同じく __sprintf__ を使用します。

https://qiita.com/usashirou/items/e6b5d0529524a140ebaf

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/848a489f-75b6-e12d-9c0b-4cf0d5ed14be.png)
オーバーフローの警告が出ています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/f8da9ebe-97d9-3271-ae42-2c03ea001620.png)
出力の様子
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/4681bc9b-3923-071d-11ab-873476180d73.png)
送信する値の桁数が減る事で元の改行部分が残り改行が2回分送られています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/93d95d0a-3161-5912-7073-89d6576f5b32.png)

```
uint16_t adcval;
uint8_t adcout[14];

void hal_entry(void)
{
    /* TODO: add your own code here */
    R_SCI_UART_Open(&g_uart0_ctrl, &g_uart0_cfg);
    R_ADC_Open(&g_adc0_ctrl, &g_adc0_cfg);
    R_ADC_ScanCfg(&g_adc0_ctrl, &g_adc0_channel_cfg);
    R_ADC_ScanStart(&g_adc0_ctrl);
    while(1){
    R_ADC_Read(&g_adc0_ctrl, ADC_CHANNEL_0, &adcval);
    sprintf((char*)adcout,"ADCVAL %u \n\r",(unsigned int)adcval);
    R_SCI_UART_Write(&g_uart0_ctrl,adcout,sizeof(adcout));
    R_BSP_SoftwareDelay (100, BSP_DELAY_UNITS_MILLISECONDS);
    }
```