char val;
void setup() {
Serial.begin(9600);
pinMode(13, OUTPUT);
}
void loop() {
val = Serial.read();
if(val=='1'){
digitalWrite(13, HIGH);
}
if(val=='0'){
digitalWrite(13, LOW);
}
}


随机应变 ABCD: Always Be Coding and … : хороший
char val;
void setup() {
Serial.begin(9600);
pinMode(13, OUTPUT);
}
void loop() {
val = Serial.read();
if(val=='1'){
digitalWrite(13, HIGH);
}
if(val=='0'){
digitalWrite(13, LOW);
}
}


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


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
ん? どういうことだ?
#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);
}
}


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

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番ピンにつなぐ

シリアルボード
Humidity: 69.0%
Temparature 26.0C
コレ、arduinoでどうセンサーを使うかってより、各センサーの仕組みがどうなってるか理解しないと、どうにもならんな。
A0PINでアナログ音声信号を出力
スマホのYoutubeを流したマイクをsound sensorに近づけてみる
int analog_sensor = A0;
int digit_sensor = 12;
int ledPin = 3;
int analogValue;
int digitValue;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(digit_sensor, INPUT);
Serial.begin(9600);
}
void loop() {
analogValue = analogRead(analog_sensor);
digitValue = digitalRead(digit_sensor);
Serial.println(analogValue, DEC);
if (digitValue == HIGH) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
}


シリアルモニタ
29
36
25
30
36
26
25
27
28
26
24
30
29
33
おお、なんかよくわからん、何がしたんだコレは。
センサーの金属先端に触れると、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");
}

頭で分かっていても、実際に手を動かしてみることが大事