HOME > Arduinoの演習

 Arduinoの演習 



Arduinoの回路


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


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


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


LEDアレイによる表示回路


音声出力の実験回路


// ----------------------------------------------------
// 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() {
}

< 前の記事へ次の記事へ >


ページトップに戻る



ESP32 Wifi Bluetooth開発ボード

Arduino Nano Every
​​
Raspberry Pi pico

FPGA XILINX Artix-7