GS05-43-MatsumuraYu / kadai

0 stars 0 forks source link

Analog_Multiplexer.ino の修正 #3

Open SakaiYuki opened 7 years ago

SakaiYuki commented 7 years ago

Analog_Multiplexer.ino のもとになったライブラリを アナログマルチプレクサ CD74HC4052 http://akizukidenshi.com/catalog/g/gI-10443/ 向けに修正

SakaiYuki commented 7 years ago

残念ながら git push する権限がなかったようなので、ここに修正を書きます。

commit 90c9e46a29b7029016d8e3c73f048f1802052511
Author: Yuki Sakai <yuki.sakai@iridge.jp>
Date:   Wed Nov 23 16:15:26 2016 +0900

    Switch channel in loop.

diff --git a/Analog_Multiplexer.ino b/Analog_Multiplexer.ino
index aea7578..4216d6c 100644
--- a/Analog_Multiplexer.ino
+++ b/Analog_Multiplexer.ino
@@ -48,6 +48,14 @@ void setupWiFi() {
   Serial.println(WiFi.localIP());
 }

+/*
+ * 74HC4052 を使用して、 4 つのアナログ入力を制御します。
+ * http://d.hatena.ne.jp/hiko4415/20120627/1340806901
+ */
+
+// 固定値を設定(アナログ入力チャネル数)
+int MAX_CNT = 4;
+
 // ポート番号を指定
 int s0 = 2;
 int s1 = 3;
@@ -62,6 +70,8 @@ int cal2 = 0;

 int count = 0;

+int val = 0;
+
 void setup() {
   Serial.begin(115200);
   delay(10);
@@ -86,14 +96,14 @@ void loop() {
   int val = analogRead(A0);
   Serial.println(String(val));

-  for (count = 0; count <= 7; count++) {
-    cal0 = bitRead(count, 0);
-    cal1 = bitRead(count, 1);
-    cal2 = bitRead(count, 2);
-
-    digitalWrite(s0, cal0);
-    digitalWrite(s1, cal1);
-    digitalWrite(s2, cal2);
+  count++;
+  if (count == MAX_CNT) count = 0;
+
+  cal0 = bitRead(count, 0);
+  cal1 = bitRead(count, 1);
+
+  digitalWrite(s0, cal0);
+  digitalWrite(s1, cal1);

   DataElement elem = DataElement();
   elem.setValue("v", val);
GS05-43-MatsumuraYu commented 7 years ago

ところどころ、@@ -86,14 +96,14 @@というのがあるけど、これは無視していいのか迷ったけど、文字化けと考えて、とりあえず、想像で書いてみました。 https://github.com/GS05-43-MatsumuraYu/kadai/blob/master/Analog_Multiplexer_update.ino

ひとまず、圧力センサーの値は取得できています。 onpush 5 1 onpush 1 4 onpush 4 14 onpush 14 31 onpush 31 888 onpush 888 4 onpush 4 0 onpush 0 2 onpush 2

SakaiYuki commented 7 years ago

ところどころ、@@ -86,14 +96,14 @@というのがあるけど

git diff の出力だよー

修正点の趣旨は、

  1. 8 チャネル用の 4501 向けのコードだったので、 4 チャネルの 4502 用に MAX_CNT を変更
  2. ループの中で 1 回だけ analogRead をしているので、ループの度にチャネルが切り替わるように修正
  3. 定期的にチャネルを切り替えて値を取得するさせる(もとのコードが約 7 秒おきになっているので、その部分はそのまま)
SakaiYuki commented 7 years ago

loop の中でシリアルに文字列を出力しているのは、

https://github.com/GS05-43-MatsumuraYu/kadai/blob/master/Analog_Multiplexer_update.ino#L76

https://github.com/GS05-43-MatsumuraYu/kadai/blob/master/Analog_Multiplexer_update.ino#L30

https://github.com/GS05-43-MatsumuraYu/kadai/blob/master/Analog_Multiplexer_update.ino#L31

の3箇所で、1回のループで以下の3行が出力されていて、ループ毎に値が変わっているのが確認できましたな。

1
onpush
1
GS05-43-MatsumuraYu commented 7 years ago

おぉ、ということは、とりあえずセンサー1個の場合だと、OKってことかなぁ? 次のステップはセンサー2個にする?配線方法をスカイプでやる(土日にでも)?

SakaiYuki commented 7 years ago

配線方法をスカイプでやる(土日にでも)?

OK!

ちなみに、何番のセンサーなのかも milkcocoa に合わせて送信すると思うけど、その値も出力しとくと、デバッグが楽だと思います!

GS05-43-MatsumuraYu commented 7 years ago

ちなみに、何番のセンサーなのかも milkcocoa に合わせて送信すると思うけど、その値も出力しとくと、デバッグ が楽だと思います! 了解。sensor1とか出るようにしときます。土曜の10:00~とかでもOK?

SakaiYuki commented 7 years ago

土曜の10:00~とかでもOK?

ちょと時間取りづらいので、写真とか、 もしくは Excel とか使ってブレッドボードを座標表現するとかで、 github ベースでやりとりできないかな…?

GS05-43-MatsumuraYu commented 7 years ago

おっー別に土曜の10:00~でなくてもいいよ。いつならスカイプできそう?

SakaiYuki commented 7 years ago

弔事につき、今日からしばらく名古屋に帰ります…

夜すこし時間取れるかも…といった程度になってしまいます。すまん

GS05-43-MatsumuraYu commented 7 years ago

おぉー、それなら全然無理しなくていいよ、ほんなら来週やねー。 こちらは今週来週も土日ともパソコンの前で作業してますんで、もし時間空いて気が向いたら連絡くれればオッケーです!

SakaiYuki commented 7 years ago

明日は時間あります!

晩御飯つくらねばならないので夕方に帰りますが、家事一通り終えてからの午前そして昼間は、活動可能ですよ!

特別な工具や部品が不要なら、普通のカフェ・貸しスペースでもオッケーなので、中間点の北千住や西船橋とかでも良いかも。

しかし、今後のデバッグのために便利なツールとか準備しようと思うと、やっぱり秋葉原 (nanolab) になるんだよね…

SakaiYuki commented 7 years ago

L84, L85 で DigitalWrite を使っていますが、

https://www.arduino.cc/en/Reference/DigitalWrite

DigitalWrite を使うには、 pinMode で OUTPUT にしておく必要がある