分圧回路
ADCでアナログ電圧を読み取ります (picoruby-adc)。
GPIOで読み取れるのは1か0だけです。「0V→0.5V→1.0V→…」のように刻々と変化する電圧を読み取るには、 AD変換(ADC)を使います。
本来はジョイスティックやボリュームがあると良いのですが、手元になくても、抵抗2本の分圧回路で試せます。
部品
- 同じ値の抵抗2本(ここでは10kΩ)
回路
| 接続元 | 接続先 |
|---|---|
| 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の値で返します。ただし、推奨される入力範囲はもう少し狭く、 応答も完全な直線ではありません。厳密な測定ではなく、おおよその電圧として扱ってください。
このページの内容