はじめに
RaspberryPiにはADC(Analog-to-digital converter)がありませんでしたが、picoには4chありました。
GP26(31pin)、GP27(32pin)、GP28(34pin)と内部温度センサです。
今回はGP26(31pin)にポテンショメータを接続して、電圧を表示したいと思います。
使用パーツ
秋月さんで販売しているポテンショメータを使用しました
https://akizukidenshi.com/catalog/g/gP-15813/
配線
ポテンショメータの裏から見て、
左側:VDDをpicoの36pin(3.3V out)へ接続
中央:Voutをpicoの31pin(ADC0)へ接続
右側:GNDをpicoの33pin(AGND)へ接続
ソース
#include <stdio.h>
#include <pico/stdlib.h>
#include "hardware/adc.h" // ADC使用
void main(void)
{
unsigned int adcValue;
stdio_init_all();
adc_init();
adc_gpio_init(26);
adc_select_input(0); // ADC0を使用
while(1){
adcValue = adc_read(); // ADC取得
printf("adcValue:%d\n", adcValue);
sleep_ms(500);
}
}
#CMakeLists.txtの書き方(printfを表示できるようにする)
cmake_minimum_required(VERSION 3.12)
include(pico_sdk_import.cmake)
project(adc)
pico_sdk_init()
add_executable(adc_test
adc_test.c
)
target_link_libraries(
adc_test
pico_stdlib
hardware_adc
)
# create map/bin/hex file etc.
pico_add_extra_outputs(adc_test)
# enable usb output, disable uart output
pico_enable_stdio_usb(adc_test 1)
pico_enable_stdio_uart(adc_test 0)
printfの表示方法
adc_test.uf2をpicoにdrag-and-dropします。
Ubuntuのターミナルを開き、「sudo gtkterm」と入力します。
パスワードを聞かれるので、パスワードを入力します。
「Configration→port」を選択します。
初期値のポートが「/dev/ttyS0」になっていますので、変更します。
私の環境では「/dev/ttyACM0」でした。
その他の設定はデフォルトのままです。
GTKTermの設定が終わると、500ms毎に、
adcValue:xxxx
と表示されると思います。
この時、ポテンショメータを動かし電圧が変化することが確認できます。
GTKtermのインストール方法
sudo apt install gtkterm