2536517 ランダム
 HOME | DIARY | PROFILE 【お気に入りブログ登録】 【ログイン】

CPUを作ろう ~計算機教材とマイコンと電子工作~

Arduinoの演習

  • Arduinoの回路.jpg


  • DSC00008.JPG

  • LED点灯(デジタル出力)とスイッチ入力(デジタル入力)の実験回路

  • DSC00016.JPG

  • フォトトランジスタによる明るさの計測(アナログ入力)とLEDのへの出力(アナログ出力)の実験回路

  • DSC00031.JPG

  • 赤外LEDのパルス点灯による距離計測の実験

  • DSC00033.JPG

  • LEDアレイによる表示回路

  • DSC00036.JPG

  • 音声出力の実験回路




// ----------------------------------------------------
// Blink,サンプルスケッチより抜き出し日本語コメント化
// ----------------------------------------------------

int led = 13; // LEDを13ピンに接続

// 最初に一度だけ実行
void setup() {
pinMode(led, OUTPUT); // ledを出力ピンに設定
}

// 繰り返す
void loop() {
digitalWrite(led, HIGH); // LED に5Vを出力
delay(1000); // 1000msつまり1秒待つ
digitalWrite(led, LOW); // LED に0Vを出力
delay(1000); // 1000msつまり1秒待つ
}

// ----------------------------------------------------
// Blink2, 点滅スピードを変えてみる
// ----------------------------------------------------
// ↓↓↓↓変更部分のみ↓↓↓↓↓
void loop() {
digitalWrite(led, HIGH); // LED に5Vを出力
delay(500); // 1000msつまり1秒待つ
digitalWrite(led, LOW); // LED に0Vを出力
delay(500); // 1000msつまり1秒待つ
}


// ----------------------------------------------------
// デジタル入力のテスト
// ----------------------------------------------------
int led = 13; // LEDを13ピンに接続
int sw = 9; // スイッチを9ピンに接続

// 最初に一度だけ実行
void setup() {
pinMode(led, OUTPUT); // ledを出力ピンに設定
pinMode(sw , INPUT ); // swを入力ピンに設定
}

// 繰り返す
void loop() {
if (digitalRead(sw)) digitalWrite(led, HIGH); // LED に5Vを出力
else digitalWrite(led, LOW); // LED に0Vを出力
}


// ----------------------------------------------------
// デジタル入力のテスト,HIGH,LOWの入れ替え
// ----------------------------------------------------
// ↓↓↓↓変更部分のみ↓↓↓↓↓
// 繰り返す
void loop() {
if (digitalRead(sw)) digitalWrite(led, LOW); // LED に5Vを出力
else digitalWrite(led, HIGH); // LED に0Vを出力
}


// ----------------------------------------------------
// デジタル入力のテスト,1秒遅れて点灯
// ----------------------------------------------------
// ↓↓↓↓変更部分のみ↓↓↓↓↓
// 繰り返す
void loop() {
if (digitalRead(sw)){
digitalWrite(led, LOW); // LED に5Vを出力
} else {
delay(1000);
digitalWrite(led, HIGH); // LED に0Vを出力
}
}


// ----------------------------------------------------
// アナログ出力のテスト1
// ----------------------------------------------------
// LEDを11ピンに接続
int led = 11; // デジタルピン3, 5, 6, 9, 10,11がアナログ出力可能

// 最初に一度だけ実行
void setup() {
pinMode(led, OUTPUT); // ledを出力ピンに設定
}

// 繰り返す
void loop() {
analogWrite(led, 10); // LED にアナログ出力
}


// ----------------------------------------------------
// アナログ出力のテスト2
// ----------------------------------------------------
// ↓↓↓↓変更部分のみ↓↓↓↓↓
analogWrite(led, 100); // 値を書き換えて明るさを変える


// ----------------------------------------------------
// アナログ出力のテスト3
// ----------------------------------------------------
// ↓↓↓↓変更部分のみ↓↓↓↓↓
// 繰り返す
void loop() {
for(int i=0; i<255; i++){ // iの値を0から255まで増やしていく
analogWrite(led, i); // LED にアナログ出力
delay(10); // 10msまつ
}
}


// ----------------------------------------------------
// アナログ出力のテスト4
// ----------------------------------------------------
// ↓↓↓↓変更部分のみ↓↓↓↓↓
delay(1); // 1msに変えると点滅が早くなる


// ----------------------------------------------------
// アナログ入力のテスト
// ----------------------------------------------------
// LEDを11ピンに接続
int led = 11; // デジタルピン3, 5, 6, 9, 10,11がアナログ出力可能
int ptr = A5; // アナログ5ピンをフォトトランジスタ入力に使う
int val=0;

// 最初に一度だけ実行
void setup() {
pinMode(led, OUTPUT); // ledを出力ピンに設定
}

// 繰り返す
void loop() {
val=analogRead(ptr); // アナログ入力 (0-1024)
analogWrite(led, val/4); // LED にアナログ出力(0-255)
}


// ----------------------------------------------------
// シリアル通信、文字列出力のテスト
// ----------------------------------------------------
int sw = 9;

// 最初に一度だけ実行
void setup() {
Serial.begin(9600); // シリアル通信を開始
}

// 繰り返す
void loop() {
if (digitalRead(sw)) Serial.println("SW OFF"); // シリアルポートに文字列出力
else Serial.println("SW ON"); // シリアルポートに文字列出力
delay(100);
}



// ----------------------------------------------------
// シリアル通信、数値出力のテスト
// ----------------------------------------------------
int ptr = A5; // アナログ5ピンをフォトトランジスタ入力に使う

// 最初に一度だけ実行
void setup() {
Serial.begin(9600); // シリアル通信を開始
}

// 繰り返す
void loop() {
Serial.println(analogRead(ptr)); // シリアルポートに数値出力
delay(100);
}


// ----------------------------------------------------
// 距離計測のテスト
// ----------------------------------------------------
int ptr = A5; // アナログ5ピンをフォトトランジスタ入力に使う
int led = 13; // LEDをパルス点灯

// 最初に一度だけ実行
void setup() {
Serial.begin(9600); // シリアル通信を開始
}

// 繰り返す
void loop() {
digitalWrite(led, HIGH); // LEDを点灯
delay(1); // 1ms待つ
Serial.println(analogRead(ptr)); // シリアルポートに数値出力
digitalWrite(led, LOW); // LEDを消灯
delay(100); // 100ms待つ
}


// ----------------------------------------------------
// ポート操作によるLED点灯テスト
// ----------------------------------------------------

// 最初に一度だけ実行
void setup() {
DDRB = DDRB | B00111111;
}

// 繰り返す
void loop() {
PORTB = B00101010;
delay(1000);
PORTB = B00010101;
delay(1000);
}


// ----------------------------------------------------
// ポート操作によるLED点灯テスト2,振ると2進数で点滅
// ----------------------------------------------------
// ↓↓↓↓変更部分のみ↓↓↓↓↓
// 繰り返す
void loop() {
for(int i=0; i<63; i++){
PORTB = i;
delay(1);
}
}


// ----------------------------------------------------
// ポート操作によるLED点灯テスト2、数字を0-9まで表示
// ----------------------------------------------------
const byte NUM[11][6]={
{14,17,17,17,14,0}, // 0
{ 0, 0, 0,31, 0,0}, // 1
{25,21,21,21,18,0}, // 2
{17,21,21,21,14,0}, // 3
{ 7, 4, 4, 4,31,0}, // 4
{23,21,21,21, 9,0}, // 5
{14,21,21,21, 8,0}, // 6
{ 3, 1, 1, 1,31,0}, // 7
{10,21,21,21,10,0}, // 8
{18,21,21,21,14,0}, // 9
{ 0,10,10 ,0, 0,0} // :
};

// 最初に一度だけ実行
void setup() {
DDRB = DDRB | B00111111;
}

// 繰り返す
void loop() {
for(int i=0; i<9; i++){ // 数字の0-9まで順に読む
for(int j=0; j<5; j++){ // 数字を表す6個のデータを順に読む
PORTB = NUM[i][j]; // 配列に定義したデータを呼び出して表示
delay(1); // 少し待つ
}
PORTB = 0; // 数字の間をちょっと開ける
delay(2);
}
}

// ----------------------------------------------------
// Tone関数による音
// ----------------------------------------------------

// 最初に一度だけ実行
void setup() {
tone(8,440,1000); // 8ピンに440Hzの音(ラ)を1000ms出力
}

// 繰り返す
void loop() {
}


// ----------------------------------------------------
// Tone関数による音、ドレミファソラシド
// ----------------------------------------------------
// ド レ ミ ファ ソ ラ シ 高いド
int f[]={261,293,330,349,392,440,494,523};

// 最初に一度だけ実行
void setup() {
for(int i=0;i<8;i++){
tone(8,f[i]); // 8ピンに指定された音を出力
delay(500); // 0.5秒待つ
}
noTone(8); // 音を止める
}

// 繰り返す
void loop() {
}


Copyright (c) 1997-2018 Rakuten, Inc. All Rights Reserved.