[Arduino]HC06 Bluetoothセンサー

Bluetoothでメッセージ通信を行います。

AndroidにAmarino 2.0 build 0.55をインストールします。

void setup() {
  Serial.begin(9600);
}

void loop() {
  char val;
  val = Serial.read();

  if((val>='a' && val <= 'z') || (val>='A' && val<= 'Z')){
    Serial.println(val);
  }
}

dav

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding

ん? どういうことだ?

[Arduino]赤外線送信モジュール

#include <IRremote.h>

IRsend irsend;
const int buttonPin = 4;
int buttonState = 0;

void setup() {
  pinMode(buttonPin, INPUT);
  Serial.begin(9600);
}

void loop() {
  buttonState = digitalRead(buttonPin);

  if(buttonState == HIGH){
    irsend.sendNEC(0x80BFA15E, 32);
  }
}

dav

[Arduino]Full Color LED RGB module

int redpin = 11;
int bluepin = 10;
int greenpin = 9;

int val;

void setup() {
  pinMode(redpin, OUTPUT);
  pinMode(bluepin, OUTPUT);
  pinMode(greenpin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  for(val=255;val>0;val--){
    analogWrite(11,val);
    analogWrite(10,255-val);
    analogWrite(9,128-val);
    delay(1);
  }
  for(val=0; val<255; val++){
    analogWrite(11,val);
    analogWrite(10,255-val);
    analogWrite(9,128-val);
    delay(1);
  }
  Serial.println(val,DEC);
  
}
sdr

[Arduino]湿度/温度センサー

header

#ifndef dht_h
#define dht_h

#if ARDUINO >= 100
 #include "Arduino.h"
#else
 #include "WProgram.h"
#endif

#define DHT_LIB_VERSION "0.1.00"

class dht
{
public:
	int read11(uint8_t pin);
    int read22(uint8_t pin);
	double humidity;
	double temperature;

private:
	uint8_t bits[5];  // buffer to receive data
	int read(uint8_t pin);
};
#endif

sketch

#include<dht.h>
dht DHT;

#define DHT11_PIN 3

void setup() {
  Serial.begin(9600);
  Serial.println("The realtime Temperature and Humidity is :");
}

void loop() {
  int chk = DHT.read11(DHT11_PIN);
  Serial.print(" Humidity: ");
  Serial.print(DHT.humidity, 1);
  Serial.println('%');
  Serial.print(" Temperature: ");
  Serial.print(DHT.temperature, 1);
  Serial.println('C');
  delay(2000);
}

配線はvccを5v, dataを3番ピンにつなぐ

dav

シリアルボード
Humidity: 69.0%
Temparature 26.0C

コレ、arduinoでどうセンサーを使うかってより、各センサーの仕組みがどうなってるか理解しないと、どうにもならんな。

[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]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

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