センサーの金属先端に触れると、LEDが点灯、外れるとLEDが消灯
### arduino ソースコード
省略 ※Hall magnetic field sensorと同様
### 配線
省略 ※Hall magnetic field sensorと同様

タッチセンサーとは
>表面に指で触れると生じる静電容量の変化を、「センサー」が感知する
上手く使えば、タクトスイッチのように何かを起動させたりすることができそうです。
ソフトウェアエンジニアの技術ブログ:Software engineer tech blog
随机应变 ABCD: Always Be Coding and … : хороший
センサーの金属先端に触れると、LEDが点灯、外れるとLEDが消灯
### arduino ソースコード
省略 ※Hall magnetic field sensorと同様
### 配線
省略 ※Hall magnetic field sensorと同様

タッチセンサーとは
>表面に指で触れると生じる静電容量の変化を、「センサー」が感知する
上手く使えば、タクトスイッチのように何かを起動させたりすることができそうです。
Hall magnetic field sensor
マグネットを検出した時にLEDが点灯する
本実験の為にマグネットを購入しました。
int LedPin = 10;
int SensorPin = 9;
int inputVal;
void setup() {
pinMode(LedPin, OUTPUT);
pinMode(SensorPin, INPUT);
}
void loop() {
inputVal = digitalRead(SensorPin);
if (inputVal == HIGH) {
digitalWrite(LedPin, HIGH);
} else {
digitalWrite(LedPin, LOW);
}
}


>ホール効果とは、電流の流れているものに対し、電流に垂直に磁場をかけると、電流と磁場の両方に直交する方向に起電力が現れる現象。
なるほど、何故マグネットで電圧を変えられるのか不明でしたが、磁場を読み込んでいるわけだ。
磁場の仕組みは面白い。
ピークセンサー距離 2.5mm
出力デバイス フォトトランジスタ
チャンネル数 1
実装タイプ スルーホール実装
パッケージタイプ PCB
高さ 7mm
長さ 10.2mm
動作温度 Max + 85°C
動作温度 Min – 25°C
int Led = 6;
int input_pin = 8;
int val;
void setup() {
pinMode(Led, OUTPUT);
pinMode(input_pin, INPUT);
}
void loop() {
val = digitalRead(input_pin);
if (val == HIGH) {
digitalWrite(Led, HIGH);
} else {
digitalWrite(Led, LOW);
}
}


リモコン信号は赤外線通信でしたね。

#include < OneWire.h >
int inPin=10;
OneWire ds(inPin);
void setup() {
Serial.begin(9600);
}
void loop() {
int HighByte, LowByte, TReading, SignBit, Tc_100, Whole, Fract;
byte i;
byte present = 0;
byte data[12];
byte addr[8];
if(!ds.search(addr)){
ds.reset_search();
return;
}
ds.reset();
ds.select(addr);
ds.write(0x44,1);
delay(1000);
present = ds.reset();
ds.select(addr);
ds.write(0xBE);
for(i=0; i<9; i++){
data[i] = ds.read();
}
Serial.print("Temprerature:");
LowByte = data[0];
HighByte = data[1];
TReading = (HighByte << 8) + LowByte;
SignBit = TReading & 0x8000;
if(SignBit){
TReading = (TReading ^ 0xffff) + 1;
}
Tc_100 = (6 * TReading) + TReading / 4;
Whole = Tc_100 / 100;
Fract = Tc_100 % 100;
if(SignBit){
Serial.print("-");
}
Serial.print(Whole);
Serial.print(".");
if(Fract < 10){
Serial.print("0");
}
Serial.print(Fract);
Serial.print(" C\n");
}

頭で分かっていても、実際に手を動かしてみることが大事
とりあえずモータが届いたので、ミニ四駆のモータ電源をarduinoから供給できるようジャンプワイヤーを無理やりミニ四駆に接着します。

単三電池だと上手く動くが、arduinoだと動かないのは何故だろう??
Arduinoのデジタルピンの電流は40mAなので、どうやらモーターで必要な200mAに足りていないらしい。
※tech specのDC current per I/O Pinってところが出力電流らしい。

電流を増幅するにはトランジスタを使うみたいね。
ん? また部品買うのか? 全然進まねー、もうやだああああああああああああああああああああ
### 考察
ミニ四駆をマイコンで制御する場合、モーターのオンオフや回転数ぐらいしか制御できない
右折、左折をコントロールするには前輪タイヤにステアリング機能を付けないといけない
※ミニ四駆では前輪、後輪共に直線
ステアリングは、arduinoの電圧を変えると、向きが左右に動くようにしなければならない
モータを制御できるということは、他の駆動系(電車、飛行機、ドローンなど)も理論上はarduinoで動かせるが、ステアリング同様に、その仕組みを作るらなければならず、機能を理解して資材をゼロから用意してハードルが高い
一通り部品を用意していざ動かしてみても、問題が発生し、それが部品に起因している場合は、また資材を買わなければならず、時間がかかる
ステアリング付きのミニ四駆にカメラを装着すれば、理論上は自動運転も不可能ではない筈
### 対策
自分で想像して作るよりも、完成物を分解して作った方が時間の節約になる
しかし、ミニ四駆って、自分が子供だった頃と殆ど変わってないけど、この仕組みをこの低単価で提供しているTAMIYAは偉大な会社なんだと理解しました。
Arduinoでミニ四駆を制御したい、ということで、秋葉原のスーパーラジコンでミニ四駆を久し振りに購入してきました。

あれ?
ミニ四駆って、モーターが入ってないのね。。
あと、arduinoを単三電池の電源で動かすにはDCプラグか1ポートモバイルバッテリーが必要なのね。
またかよ、部品がなくて足踏みするの嫌になるわ。
とりあえずミニ四駆だけ途中まで作ります。
const int sPin = A0;
void setup() {
Serial.begin(9600);
}
void loop() {
int sValue = analogRead(sPin);
Serial.println(sValue);
delay(750);
}
シリアルモニター
184
274
1023
0
1023
0
1023
0
1023
0
1023
0
1023
0
1023
0
1023
0
1023
0
1023
0
1023
0
1023
0
1023
69
930
うーむ、ちょっと期待している値ではないな。
まずドレミ
#define BEATTIME 200
#define SPEAKER 13
void setup() {
}
void loop() {
tone(SPEAKER, 262, BEATTIME); // ド
delay(BEATTIME);
tone(SPEAKER, 294, BEATTIME); // レ
delay(BEATTIME);
tone(SPEAKER, 330, BEATTIME); // ミ
delay(BEATTIME);
tone(SPEAKER, 349, BEATTIME); // ファ
delay(BEATTIME);
tone(SPEAKER, 392, BEATTIME); // ソ
delay(BEATTIME);
tone(SPEAKER, 440, BEATTIME); // ラ
delay(BEATTIME);
tone(SPEAKER, 494, BEATTIME); // シ
delay(BEATTIME);
tone(SPEAKER, 523, BEATTIME); // ド
delay(BEATTIME);
}

おお、なんやこれは?
### tone()の音階

Official髭男dism・Pretenderをarduinoで演奏したい
#define BEATTIME 200
#define SPEAKER 13
void setup() {
}
void loop() {
tone(SPEAKER, 262, BEATTIME); // ド
delay(BEATTIME);
tone(SPEAKER, 247, BEATTIME); // シ
delay(BEATTIME);
tone(SPEAKER, 220, BEATTIME); // ラ
delay(BEATTIME);
tone(SPEAKER, 330, 600); // ミ
delay(BEATTIME);
tone(SPEAKER, 220, BEATTIME); // ラ
delay(BEATTIME);
tone(SPEAKER, 247, 400); // シ
delay(BEATTIME);
tone(SPEAKER, 220, BEATTIME); // ラ
delay(BEATTIME);
tone(SPEAKER, 247, BEATTIME); // シ
delay(BEATTIME);
tone(SPEAKER, 262, BEATTIME); // ド
delay(BEATTIME);
tone(SPEAKER, 247, BEATTIME); // シ
delay(BEATTIME);
tone(SPEAKER, 220, BEATTIME); // ラ
delay(BEATTIME);
tone(SPEAKER, 175, BEATTIME); // ファ
delay(BEATTIME);
tone(SPEAKER, 220, BEATTIME); // ラ
delay(BEATTIME);
}
あれ、4フラットだとドレミってどうなるんだっけ??
ああああああああああ、楽譜の読みかた忘れたー
void setup() {
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(12, HIGH);
digitalWrite(13, LOW);
delay(1000);
digitalWrite(12, LOW);
digitalWrite(13, HIGH);
delay(1000);
}

これは触ってる内に色々な想像力が沸き立ちます。
バッチ処理はcronをまず思い浮かびますが、電子空間だけでなく、物理空間のあらゆるものが制御できそうな気がしてきました。
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}

OKです
ブレッドボードに抵抗を配置してコンパイルします。