//Happy Birthday to You
const unsigned char SPPIN = A5;
int Piano[20];
unsigned char xx[] = {50, 50, 6, 5, 11, 7, 0,
50, 50, 6, 5, 12, 11, 0,
50, 50, 15, 13, 11, 7, 6,
14, 140, 13, 11, 12, 11, 0
};
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Piano[0] = 0; //C4
Piano[1] = 261.626; //C4
Piano[2] = 293.665; //D4
Piano[3] = 329.628; //E4
Piano[4] = 349.228; //F4
Piano[5] = 391.995; //G4
Piano[6] = 440.000; //A4
Piano[7] = 493.883; //B5
Piano[11] = 523.251; //C5
Piano[12] = 587.330; //D5
Piano[13] = 659.255; //E5
Piano[14] = 698.456; //F5
Piano[15] = 783.991; //G5
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println("a");
music();
music();
Serial.println("b");
while (1) {
noTone(A0);
}
}
void music() {
for (unsigned char i = 0; i < sizeof(xx); i++) {
if (xx[i] == 50 || xx[i] == 40 || xx[i] == 140) {
PianoS((xx[i] / 10), 300);
} else {
PianoS(xx[i], 600);
}
}
}
void PianoS(unsigned char x, int tempo) {
tone(SPPIN, Piano[x]);
delay(tempo);
noTone(SPPIN);
delay(0);
return;
}
ラベル
- 12F1822 (2)
- A/D変換 (3)
- Arduino (7)
- Nikon D40 リモコン インターバルタイマー (6)
- Nゲージ 自動往復運転コントローラ (5)
- Nゲージの運転コントローラ (3)
- PICマイコンツール (5)
- XC8 (1)
- サーボモーター (1)
- プログラム (15)
- 赤外線リモコン送信 (1)
- 赤外線リモコン送信 キャリア波(38kHzか40kHz)の作成 (2)
- 電子部品/キット/輸入品 (26)
2020/03/21
2020/03/05
2020/03/01
RCWL-0516スイッチモジュール 動作確認
アナログの出力がないのが残念ですね.
[code]
/*
マイクロ波レーダーセンサーRCWL-0516スイッチモジュールヒューマンインダクションボード検出器 検出距離 5-7m
*/
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(A0, INPUT);
pinMode(A1, OUTPUT);
}
void loop() {
// digitalWrite(A1, 1);
// put your main code here, to run repeatedly:
int i;
unsigned long cont = millis();
while (1) {
delay(1000);
i = analogRead(A0);
if (i > 300) {
digitalWrite(A1, 1);
Serial.println("ON");
cont = millis();
} else {
// 一定の時間(5分)以内人体の移動が感知がなければ,OFFにする
if ((millis() - cont) > (1000l * 300l)) {
digitalWrite(A1, 0);
Serial.println("OFF");
Serial.println("<0");
}
}
}
}
[/code]
そのままでコピー
特徴:
- 動作電圧:4.0-28VDC
- 動作電流:3mA未満
- 出力電圧:3.3V(3V3ピンから)
- 出力電流:最大100mA
- 検出範囲:7メートル以内に120度未満のテーパー角度
- トリガーモード:トリガーを繰り返す
- 遅延時間:2秒(デフォルト値)、それを調整するためにC-TMパッド上の異なる容量のコンデンサを半田付けする
- アクティブレベル:高(移動オブジェクトを検出した場合)
- 出力インターフェイス:3V3(3.3V電源出力)、GND(電源グランド)、OUT(出力信号)、VIN(電源入力)、CDS(外付けフォト抵抗器をグランドに半田付けすることにより、日中に検出をオフにすることができます。一般的なアプリケーションでは、GND / OUT / VINだけを使用する必要があります。
- 用途:自動照明、スマートホーム、DIYプロジェクト
end
[code]
/*
マイクロ波レーダーセンサーRCWL-0516スイッチモジュールヒューマンインダクションボード検出器 検出距離 5-7m
*/
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(A0, INPUT);
pinMode(A1, OUTPUT);
}
void loop() {
// digitalWrite(A1, 1);
// put your main code here, to run repeatedly:
int i;
unsigned long cont = millis();
while (1) {
delay(1000);
i = analogRead(A0);
if (i > 300) {
digitalWrite(A1, 1);
Serial.println("ON");
cont = millis();
} else {
// 一定の時間(5分)以内人体の移動が感知がなければ,OFFにする
if ((millis() - cont) > (1000l * 300l)) {
digitalWrite(A1, 0);
Serial.println("OFF");
Serial.println("<0");
}
}
}
}
[/code]
そのままでコピー
特徴:
- 動作電圧:4.0-28VDC
- 動作電流:3mA未満
- 出力電圧:3.3V(3V3ピンから)
- 出力電流:最大100mA
- 検出範囲:7メートル以内に120度未満のテーパー角度
- トリガーモード:トリガーを繰り返す
- 遅延時間:2秒(デフォルト値)、それを調整するためにC-TMパッド上の異なる容量のコンデンサを半田付けする
- アクティブレベル:高(移動オブジェクトを検出した場合)
- 出力インターフェイス:3V3(3.3V電源出力)、GND(電源グランド)、OUT(出力信号)、VIN(電源入力)、CDS(外付けフォト抵抗器をグランドに半田付けすることにより、日中に検出をオフにすることができます。一般的なアプリケーションでは、GND / OUT / VINだけを使用する必要があります。
- 用途:自動照明、スマートホーム、DIYプロジェクト
end
2020/02/24
Arduino 74HC595A_shiftOut_Pin 接続
Arduino 74HC595A_shiftOut_Pin 接続
/*
shiftOut のテストと赤色7セグメントLED表示器のテスト
https://github.com/kankanla/arduino/blob/master/sketch_feb23a.ino
*/
uint8_t resetPin = A0; //P10 SRCLR/RESET (常にH可)
uint8_t clockPin = A1; //P11 SRCLK/SHIFT CLOCK(クロックを出力するピン)
uint8_t latchPin = A2; //P12 RCLK/LATCH CLOCK(LOW->HIGH で更新)
uint8_t oePin = A3; //P13 OE/OUTPUT ENABLE (出力有効/無効,常にH可)
uint8_t dataPin = A4; //P14 SER/A (ビットを出力するピン)
void setup() {
Serial.begin(9600);
pinMode(resetPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(oePin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop() {
Number();
}
void Number() {
/*
赤色7セグメントLED表示器LTS-547BJR-01J
0から9までの数字のバタン
ピンの配置
A
F B
G
E C
D dp
*/
byte n2[] = {
0b00111111, //0
0b00000110, //1
0b01011011, //2
0b01001111, //3
0b01100110, //4
0b01101101, //5
0b01111101, //6
0b00100111, //7
0b01111111, //8
0b01101111 //9
};
byte n[] = {
0b00000001, //A
0b00000010, //B
0b00000100, //C
0b00001000, //D
0b00010000, //E
0b00100000, //F
0b01000000, //G
0b10000000, //dp
};
digitalWrite(resetPin, 1);
for (uint8_t i = 0; i < sizeof(n); i++) {
Serial.println(n[i], DEC);
Serial.println(i);
shiftOut(dataPin, clockPin, MSBFIRST, n[i]);
digitalWrite(latchPin, 0);
digitalWrite(latchPin, 1);
delay(200);
}
}
end
/*
shiftOut のテストと赤色7セグメントLED表示器のテスト
https://github.com/kankanla/arduino/blob/master/sketch_feb23a.ino
*/
uint8_t resetPin = A0; //P10 SRCLR/RESET (常にH可)
uint8_t clockPin = A1; //P11 SRCLK/SHIFT CLOCK(クロックを出力するピン)
uint8_t latchPin = A2; //P12 RCLK/LATCH CLOCK(LOW->HIGH で更新)
uint8_t oePin = A3; //P13 OE/OUTPUT ENABLE (出力有効/無効,常にH可)
uint8_t dataPin = A4; //P14 SER/A (ビットを出力するピン)
void setup() {
Serial.begin(9600);
pinMode(resetPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(oePin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop() {
Number();
}
void Number() {
/*
赤色7セグメントLED表示器LTS-547BJR-01J
0から9までの数字のバタン
ピンの配置
A
F B
G
E C
D dp
*/
byte n2[] = {
0b00111111, //0
0b00000110, //1
0b01011011, //2
0b01001111, //3
0b01100110, //4
0b01101101, //5
0b01111101, //6
0b00100111, //7
0b01111111, //8
0b01101111 //9
};
byte n[] = {
0b00000001, //A
0b00000010, //B
0b00000100, //C
0b00001000, //D
0b00010000, //E
0b00100000, //F
0b01000000, //G
0b10000000, //dp
};
digitalWrite(resetPin, 1);
for (uint8_t i = 0; i < sizeof(n); i++) {
Serial.println(n[i], DEC);
Serial.println(i);
shiftOut(dataPin, clockPin, MSBFIRST, n[i]);
digitalWrite(latchPin, 0);
digitalWrite(latchPin, 1);
delay(200);
}
}
end
2020/02/09
Arduino で2相ユニポーラPICステッピングモータで動かす
Arduino で2相ユニポーラPICステッピングモータで動かす
黒電話の回転ダイヤル式電話機を再現する.
void setup() {
Serial.begin(9600);
DDRB = B001111; //PB0~PB5
}
int dly = 2;
int del = 400;
void loop() {
if (Serial.available() > 0) {
num(Serial.read());
delay(del / 2);
}
}
void num(int x) {
switch (x) {
case 1:
case 49:
step1(20 + 2, 3);
delay(del);
step2(20 + 2, 4);
break;
case 2:
case 50:
step1(20 + 8, 3);
delay(del);
step2(20 + 8, 4);
break;
case 3:
case 51:
step1(20 + 14, 3);
delay(del);
step2(20 + 14, 4);
break;
case 4:
case 52:
step1(20 + 20, 3);
delay(del);
step2(20 + 20, 4);
break;
case 5:
case 53:
step1(20 + 26, 3);
delay(del);
step2(20 + 26, 4);
break;
case 6:
case 54:
step1(20 + 32, 3);
delay(del);
step2(20 + 32, 4);
break;
case 7:
case 55:
step1(20 + 38, 3);
delay(del);
step2(20 + 38, 4);
break;
case 8:
case 56:
step1(20 + 44, 3);
delay(del);
step2(20 + 44, 4);
break;
case 9:
case 57:
step1(20 + 50, 3);
delay(del);
step2(20 + 50, 4);
break;
case 0:
case 48:
step1(20 + 56, 3);
delay(del);
step2(20 + 56, 4);
break;
}
}
void step2(int x, int spd) {
for (int i = 0; i <= x; ++i) {
PORTB = B0001;
delay(spd);
PORTB = B0010;
delay(spd);
PORTB = B0100;
delay(spd);
PORTB = B1000;
delay(spd);
}
}
void step1(int x, int spd) {
for (int i = 0; i <= x; ++i) {
PORTB = B1000;
delay(spd);
PORTB = B0100;
delay(spd);
PORTB = B0010;
delay(spd);
PORTB = B1001;
delay(spd);
}
}
黒電話の回転ダイヤル式電話機を再現する.
void setup() {
Serial.begin(9600);
DDRB = B001111; //PB0~PB5
}
int dly = 2;
int del = 400;
void loop() {
if (Serial.available() > 0) {
num(Serial.read());
delay(del / 2);
}
}
void num(int x) {
switch (x) {
case 1:
case 49:
step1(20 + 2, 3);
delay(del);
step2(20 + 2, 4);
break;
case 2:
case 50:
step1(20 + 8, 3);
delay(del);
step2(20 + 8, 4);
break;
case 3:
case 51:
step1(20 + 14, 3);
delay(del);
step2(20 + 14, 4);
break;
case 4:
case 52:
step1(20 + 20, 3);
delay(del);
step2(20 + 20, 4);
break;
case 5:
case 53:
step1(20 + 26, 3);
delay(del);
step2(20 + 26, 4);
break;
case 6:
case 54:
step1(20 + 32, 3);
delay(del);
step2(20 + 32, 4);
break;
case 7:
case 55:
step1(20 + 38, 3);
delay(del);
step2(20 + 38, 4);
break;
case 8:
case 56:
step1(20 + 44, 3);
delay(del);
step2(20 + 44, 4);
break;
case 9:
case 57:
step1(20 + 50, 3);
delay(del);
step2(20 + 50, 4);
break;
case 0:
case 48:
step1(20 + 56, 3);
delay(del);
step2(20 + 56, 4);
break;
}
}
void step2(int x, int spd) {
for (int i = 0; i <= x; ++i) {
PORTB = B0001;
delay(spd);
PORTB = B0010;
delay(spd);
PORTB = B0100;
delay(spd);
PORTB = B1000;
delay(spd);
}
}
void step1(int x, int spd) {
for (int i = 0; i <= x; ++i) {
PORTB = B1000;
delay(spd);
PORTB = B0100;
delay(spd);
PORTB = B0010;
delay(spd);
PORTB = B1001;
delay(spd);
}
}
2020/01/30
Arduino 簡易オシロスコープ
2020/01/26
登録:
投稿 (Atom)