自作武器を作ろうず

<!--リトルカブにC90のエンジン積んで,ペットボトルロケットでロケットランチャーを作り,ChromebookでETロボコン出て,Arduinoでロケット花火ランチャー搭載ラジコン戦車作る沖縄の大学生のブログです-->


【Arduino】DIPロータリースイッチの値を10進数の0~16に変換する

スポンサードなんとか

はじめに
  こんなダサいお手本のようなクソコードはかいてはいけまんせん。この記事書いたやつ相当頭わるそうですよね。誰だよ書いたやつ。
teppodone.hatenadiary.jp



で,本題なんですが買ったスイッチはこれ。
akizukidenshi.com


   0~9,A~F で合計 16 の値を取ることができるロータリースイッチを買ったのですが,シリアルモニタに"0010"って表示させることには成功したものの,肝心の「value = 2」って感じでデータとして扱うまでに一苦労しました。忘れないうちに書いときます。





手順1,シリアルモニタにロータリースイッチの状態を表示させる。

  これは簡単にできました。DIPロータリースイッチの使い方 [Arduino]様の記事*1そっくりそのまま真似したら出来ましたので本稿では割愛します。



手順2,ロータリースイッチのONとOFFの羅列を,10進数(0~15)に変換する

正しいコードはコチラです。

/* * * * * * * * * * *
 * description : DIPロータリースイッチの値を10進数に変換するコード。
 * author: teppodone (http://teppodone.hatenadiary.jp)
 * note: https://www.petitmonte.com/robot/howto_rotary_switch.html 様と全く同じ回路(ピン番号も同じ)を組んでいることを想定しています。

 これをコピペしてコンパイルして,スイッチかちかち回すとシリアルモニタに今の状態が表示されるはずです多分。
*/
void setup() {
Serial.begin(9600);
  pinMode(11,INPUT);
  pinMode(2,INPUT);
  pinMode(4,INPUT);
  pinMode(8,INPUT);
}

void loop() {
  
 //☆ここ
  long switchState = digitalRead(8) * 8+digitalRead(4) * 4+digitalRead(2) * 2 + digitalRead(11);
  Serial.print(switchState);


  switch(switchState){
  case 0:
  Serial.println("ぜろ");
  break;

  case 1:
  Serial.println("いち");
  break;

  case 2:
  Serial.println("に");
  break;

  default:
  Serial.println("たくさん");
  break;
  }

  delay(1000);
}

f:id:teppodone:20171118124529p:plain

  ☆のとこが前回の記事(【Arduino】DIPロータリースイッチの値を10進数の0~16に変換する - 自作武器を作ろうず)違います。



言われてみればそりゃそうだ。
  ONとOFFの2進数が4つなんだから,良くよく考えたら桁の小さい順に2^0倍,2^1倍,2^2倍,2^3倍して足し合わせればいいだけの話でした…

  いやはや「”0010”みたいな文字列を作ってからそれを10進に変換する(【Arduino】DIPロータリースイッチの値を10進数の0~16に変換する - 自作武器を作ろうず)」って方法しかないと思い込んでたもので本当に恥ずかしい。誰だよプログラムチョットデキルなんで抜かしたやつ。



すぺしゃるさんくす:沖川さん
  今回上記のコードをコメントにて教えていただいた方です。
本当に有難うございます,,,










余談
  ってか,この「0と1の二値を使って電圧Vを見るときは,下から順番に,V=2^0+2^(n-1)+2^(n-ナントカ)…」だったかな??こんな感じのノリで計算するんですよーーって流れどっかで見たことあるな…???









あっ,あーーーーーーーーーーーーーーーーーーーーーっ!!!

  おまえ○工大の院試の過去問のA/Dコンバータかなんかの問題で似たようなことやったやんけ!!!!!!


  九州○業大学 知能機械工学科 知能制御工学コース の院試の過去問に逐次変換型?のA/D変換の問題出てきたやんけ!!!!!!!






  …こんなんだから落ちるんすよ九州工○大学に。