SSブログ

Digispark の P5 を ADC で入力ピンとして使う 前編 [Arduino]

Digispark の互換機は P5 がリセットピンになっています。
(どうやら本家はFUSE設定ではじめから入出力ピンとして使えるらしい?)

FUSEの変更(hfuse:5F→DF or 5D→DD) という方法が王道とは思いますが、リセットピンのままでもADC入力としては使えるという情報をどこかで見かけたので試してみました。

ただ電圧下げすぎるとリセットがかかってしまいます。
(Vcc 5VのとHIGH⇒LOW(VIL)は2.25Vくらい)

Digisparkで複数のタクトスイッチを扱う:放課後マイコンクラブ:SSブログ
https://hello-world.blog.ss-blog.jp/2022-05-29

抵抗分圧でやるのもいいですが、、同時押しには対応できないし。

ロータリーコードスイッチ 10ポジション 0~9 正論理 S-2110A_ 制御部品・駆動部品 秋月電子通商-電子部品・ネット通販
https://akizukidenshi.com/catalog/g/g110399/
s-2110a.jpg
こういうのでやろうと思って。
DIPスイッチみたいに設定用のスイッチに使うのががよさそう。
こういう用途ならチャタリングとか考えなくていいし。

ラダー抵抗でのD/A変換のような感じでいけるかと思いきや、スイッチはHIGH/LOWではなく、ON/OFFなのでできなさそう。

ということで、手探りで回路を作ってみた。

ds_p5_circ.png
http://www.falstad.com/circuit/circuitjs.html?ctz=CQAgjCAMB0l3BWcMBMcUHYMGZIA4UA2ATmIxBTxCQBZtqBTAWjDACgAnEJmqsQyCF7gBUZHDYBncGBThK4DIXlVBggGYBDADaSGbAG6LlKBMp5VTytUMFIbMBJyF8FrObNVCME6e5GCYEoBYho6elIycigoNMYUsaEgWrr6frLgxB7BYFlJKRFcwvyBGSViYPCQzsV5-rlygjHwzv4xccLtYjQ+EgDu8Z6DotUDtXKdidUADi4gxMpBygsg9GpsY65Uwiuj8Vb7UxtzQ8Ujx0sJcZcNUBc5dTnBezdPi+ebIeN3AzduwbtjhYQsCDuwgA

rotary_sw_circ.png
rot_res_calc.png
rot_res_calc_tbl.png
漸減かつ2%の直線とわりと近似している。

rot_res_prototype.jpg
//  +5V ---[1k]---+-----+--[sw]--[47k]--+--- GND
//                |     +--[sw]--[22k]--+
//              <P5>    +--[sw]--[10k]--+
//                      +--[sw]--[4k7]--+

const uint8_t   LEDsPn[4] = { 0, 1, 2, 4 };     // pin number
const uint16_t  Vth[16]   = { 1012, 990, 969, 945, 921, 903, 885, 860,
                               836, 821, 806, 789, 773, 760, 747,   0 };
                               
void setup() {
  for(uint8_t i=0; i<4; i++)  pinMode( LEDsPn[i], OUTPUT );
}

void loop() {
  uint8_t   n, i;
  uint16_t  Va = analogRead( A0 );              // Digispark : P5, ADC0
  for(n=0; Va<Vth[n]; n++);                     // Compare with each threshold and get the value
  for(i=0; i<4; i++)  digitalWrite( LEDsPn[i], (n>>i)&1 );
}

1~2%の電位差を読み取る必要があるのだけれど、5%誤差のカーボン抵抗でつくった試作回路&スケッチでちゃんと4ビットを識別できた。
ちゃんとやるなら金属皮膜抵抗をつかったほうがよさそう。

タグ:抵抗 Digispark ADC
nice!(0)  コメント(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。