R2P2ESP32

分圧回路

ADCでアナログ電圧を読み取ります (picoruby-adc)。

GPIOで読み取れるのは1か0だけです。「0V→0.5V→1.0V→…」のように刻々と変化する電圧を読み取るには、 AD変換(ADC)を使います。

本来はジョイスティックやボリュームがあると良いのですが、手元になくても、抵抗2本の分圧回路で試せます。

部品

  • 同じ値の抵抗2本(ここでは10kΩ)

回路

配線図: 3V3とGNDの間に10kΩの抵抗2本を直列に接続し、中点をGPIO13に接続
接続元 接続先
3V3 抵抗1
抵抗1と抵抗2の中点 GPIO13
抵抗2 GND

同じ値の抵抗なら、中点の電圧は電源電圧の半分、約1.65Vになります。

プログラム

require 'adc'

input = ADC.new(13)

loop do
  puts "Input: #{input.read_raw}"
  sleep 1
end

read_rawでADCの生の値を読み取ります。

実行

プログラムをadc.rbとして保存し、デバイスの/homeに配置します (ファイル転送を参照)。その後、シェルから実行します。

$> ./adc.rb
Input: 2012
Input: 2015
Input: 2011

(実際の値はボードによって異なります。)

ESP32のADCはおおまかに0〜3.3Vを0〜4095の値で返します。ただし、推奨される入力範囲はもう少し狭く、 応答も完全な直線ではありません。厳密な測定ではなく、おおよその電圧として扱ってください。