工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

リモコンで音楽再生を制御:シンプルなArduinoプロジェクト

必要な部品と材料

Arduino UNO ×1
リモコン(赤外線) ×1
IR受信モジュール(汎用) ×1
ブザー(圧電ブザー) ×1
LCDディスプレイ 16×2(白文字/青背景、Adafruit標準品) ×1
可変抵抗器(ボリューム、汎用) ×1
抵抗 221Ω ×1

使用するアプリとオンラインサービス

プロジェクト概要

こんにちは、Hacksterコミュニティの皆さん!Simone Adobsです。これが私のこのサイトでの2作目のプロジェクトになります。

動作の仕組み

このプロジェクトのロジックは非常にシンプルです:

コードの解説

メロディは以下のような形式で定義されています:

void melody_example() {
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Song title");
  delay(1000);
  lcd.clear();
  nota_mi(duration,pause); // ミの音
  nota_do(duration,pause); // ドの音
  lcd.clear();
  delay(100);
  Reset_AVR(); // ボタンを押さずにArduinoをリセット
}

Reset_AVR() を使用するには、スケッチの冒頭に以下を追加します:

#include <avr/io.h>
#include <avr/wdt.h>
#define Reset_AVR() wdt_enable(WDTO_30MS); while(1) {}

どのメロディを再生するかは、受信したIRコードで判断します:

if (result==12495) { // ボタン1のコード
  melody_1();
} else if (result==6375) { // ボタン2のコード
  melody_2();
} else if (result==31365) { // ボタン3のコード
  melody_3();
} else if (result==4335) { // ボタン4のコード
  melody_4();
}

各音符を再生する関数の例:

void nota_example(int duration, int pause) {
  shut(); // 停止チェック関数を呼び出し
  lcd.setCursor(0, 0);
  lcd.print("Example "); // 音符名を表示
  NewTone(11, 262, duration); // ピン11、周波数262Hz(ド)
  delay(pause);
}

再生中にメロディを止めたい場合は?

shut() 関数のおかげで、いつでも再生を停止できます。この関数はIR信号をチェックし、特定のボタン(私のリモコンではシャットダウンボタン、コード-23971)が押されたらArduinoをリセットします。

void shut() {
  if (irrecv.decode(&results)) {
    result = results.value, HEX;
    Serial.println(result);
    if (result == -23971) {
      Reset_AVR();
    }
  }
  irrecv.resume(); // 次のコード受信を許可
}

このプロジェクトが気に入っていただけたら幸いです。前作もぜひご覧ください。
良い一日を!
イタリアより Simone <3

スケッチ(全文)

以下のコードをArduino IDEにコピーして使用してください。NewTone、IRremote、LiquidCrystal ライブラリが必要です。

#include <LiquidCrystal.h>
#include <IRremote.h>
#include <NewTone.h>
#include <avr/io.h>
#include <avr/wdt.h>
#define Reset_AVR() wdt_enable(WDTO_30MS); while(1) {}
#define buzzer 11
LiquidCrystal lcd(9, 8, 7, 6, 5, 4);
int result;
int RECV_PIN = 2;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.setCursor(0, 0);
  lcd.print("-----Choose-----");
  lcd.setCursor(0, 1);
  lcd.print("----A Song!!----");
  pinMode(buzzer, OUTPUT);
  irrecv.enableIRIn();
}

void loop() {
  if (irrecv.decode(&results)) {
    result = results.value, HEX;
    Serial.println(result);
    if (result == 12495) { ode(); }
    else if (result == 6375) { london(); }
    else if (result == 31365) { fur(); }
    else if (result == 4335) { pirate(); }
    irrecv.resume();
  }
  delay(100);
}

// 以下、各曲のメロディ関数(fur: エリーゼのために、london: ロンドン橋、ode: 喜びの歌、pirate: 彼は海賊)と、
// 各音符関数(nota_do, nota_re, nota_mi 等)、shut() 関数が続く

回路図

リモコンで音楽再生を制御:シンプルなArduinoプロジェクト

製造プロセス

  1. LIRCなしでRaspberry PiにIRリモコンを接続 - Python UARTアプローチ
  2. Arduino NanoとMPU-6050で作るリアルタイムジャイロスコープゲーム
  3. ESP32-CAMで作る動体検知セキュリティカメラ:Discord通知対応
  4. Arduinoデジタルダイス: LCD表示の乱数ジェネレーター自作
  5. Arduino Nanoで37LEDルーレットゲームを自作:ヨーロピアンスタイル完全再現
  6. 自作Arduino TVリモコン:電池駆動・3Dプリントケース・省電力設計
  7. Arduino Cloud連携でどこからでも家の温度を監視
  8. ATtiny85ミニアーケード:スネークゲーム - 手のひらサイズOLEDゲーム機の製作
  9. ポータブル距離検出器:Arduino Nano自作キット(HC-SR04、18650電源、3Dプリントケース付き)
  10. Windows 10 CortanaでBluetooth経由でArduinoのLEDを制御
  11. 高度なリモートコントロールグリッパーロボット: 精密ハンドリング向け