[Arduino]タッチセンサー(静電容量)

センサーの金属先端に触れると、LEDが点灯、外れるとLEDが消灯

### arduino ソースコード
省略 ※Hall magnetic field sensorと同様

### 配線
省略 ※Hall magnetic field sensorと同様

dav

タッチセンサーとは
>表面に指で触れると生じる静電容量の変化を、「センサー」が感知する

上手く使えば、タクトスイッチのように何かを起動させたりすることができそうです。

[Arduino]ホール効果センサー

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);
  }
}

dav

>ホール効果とは、電流の流れているものに対し、電流に垂直に磁場をかけると、電流と磁場の両方に直交する方向に起電力が現れる現象。

なるほど、何故マグネットで電圧を変えられるのか不明でしたが、磁場を読み込んでいるわけだ。
磁場の仕組みは面白い。

[Arduino]赤外線センサーTCRT5000

ピークセンサー距離 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);
  }
}

dav

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

[Arduino]温度センサー

mde
#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]PC電源でミニ四駆を動かしたい

とりあえずモータが届いたので、ミニ四駆のモータ電源をarduinoから供給できるようジャンプワイヤーを無理やりミニ四駆に接着します。

dav

単三電池だと上手く動くが、arduinoだと動かないのは何故だろう??
Arduinoのデジタルピンの電流は40mAなので、どうやらモーターで必要な200mAに足りていないらしい。

※tech specのDC current per I/O Pinってところが出力電流らしい。

電流を増幅するにはトランジスタを使うみたいね。
ん? また部品買うのか? 全然進まねー、もうやだああああああああああああああああああああ

### 考察
ミニ四駆をマイコンで制御する場合、モーターのオンオフや回転数ぐらいしか制御できない
右折、左折をコントロールするには前輪タイヤにステアリング機能を付けないといけない
※ミニ四駆では前輪、後輪共に直線
ステアリングは、arduinoの電圧を変えると、向きが左右に動くようにしなければならない
モータを制御できるということは、他の駆動系(電車、飛行機、ドローンなど)も理論上はarduinoで動かせるが、ステアリング同様に、その仕組みを作るらなければならず、機能を理解して資材をゼロから用意してハードルが高い
一通り部品を用意していざ動かしてみても、問題が発生し、それが部品に起因している場合は、また資材を買わなければならず、時間がかかる
ステアリング付きのミニ四駆にカメラを装着すれば、理論上は自動運転も不可能ではない筈

### 対策
自分で想像して作るよりも、完成物を分解して作った方が時間の節約になる

しかし、ミニ四駆って、自分が子供だった頃と殆ど変わってないけど、この仕組みをこの低単価で提供しているTAMIYAは偉大な会社なんだと理解しました。

[Arduino] ミニ四駆を制御したい

Arduinoでミニ四駆を制御したい、ということで、秋葉原のスーパーラジコンでミニ四駆を久し振りに購入してきました。

dav

あれ?
ミニ四駆って、モーターが入ってないのね。。
あと、arduinoを単三電池の電源で動かすにはDCプラグか1ポートモバイルバッテリーが必要なのね。

またかよ、部品がなくて足踏みするの嫌になるわ。
とりあえずミニ四駆だけ途中まで作ります。

[Arduino] 振動センサー

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

うーむ、ちょっと期待している値ではないな。

[Arduino] Pretenderをスピーカーを鳴らしたい

まずドレミ

#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);
}
dav

おお、なんやこれは?

### 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フラットだとドレミってどうなるんだっけ??
ああああああああああ、楽譜の読みかた忘れたー

[Arduino]LEDライトを交互に光らせる

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);
}
dav

これは触ってる内に色々な想像力が沸き立ちます。
バッチ処理はcronをまず思い浮かびますが、電子空間だけでなく、物理空間のあらゆるものが制御できそうな気がしてきました。