Mô hình LED nháy theo nhạc

Cái này viết ngắn gọn.

Mô hình LED nháy theo nhạc

Trong bài hướng dẫn này chúng ta sẽ sử dụng tín hiệu lấy từ jack âm thanh trên điện thoại hay máy tính để truyền dữ liệu tới UnoX, từ đó điều khiển các bóng LED nháy với hiệu ứng đặc biệt.

Chuẩn bị

  • 1 board UnoX.
  • 1 test board.
  • 2 jack audio cái 3.5.
  • 1 cable 3.5 đực-đực.
  • 10 LED + 10 điện trở 330 Ohm.

Giới thiệu chức năng các linh kiện chính

  • Jack audio 3.5

    • 1 jack dùng để kết nối với cable 3.5 đực-đực để nhận tín hiệu âm thanh. 1 jack audio để kết nối headphones hoặc loa để nghe nhạc.
  • Cable 3.5 loại đực-đực

    • Kết nối giữa thiết bị phát âm thanh như điện thoại hoặc máy tính và jack audio 3.5 để truyền tín hiệu âm thanh đến UnoX.
  • Tùy thuộc vào các loại cable khác nhau như hình thứ 2. Ta sử dụng đồng hồ xác định các chân Left, Right, Ground và Mic trên jack audio 3.5 tương ứng với các khấc trên cable.

Các bước tiến hành

  • Kết nối jack audio 3.5 với UnoX

    • Chúng ta chỉ sử dụng 1 chân Ground và 1 trong 2 chân Left hoặc Right.
  • Sử dụng 2 jack audio, kết nối với nhau như hình bên.
  • Kết nối đèn LED với UnoX

    • Sử dụng 10 LED để kết nối với các chân tín hiệu từ 4-13 của UnoX thông qua 1 điện trở 330 Ohm để đảm bảo LED nằm trong phạm vi hoạt động tốt nhất.
  • Hàn jack audio, LED và điện trở lên test board để cho mạch điện an toàn và bắt mắt hơn.

Notes: Hàn chân + của LED với điện trở.

Ý tưởng xây dựng chương trình.

  • Tín hiệu audio sẽ truyền từ điện thoại hoặc máy tính đến jack audio, chúng ta sẽ đọc tín hiệu analog từ chân Left/Right của jack audio. Xử lý tín hiệu để tạo hiệu ứng nháy LED. 1 jack audio còn lại sẽ kết nối với headphones hoặc loa để nghe tiếng nhạc phát ra.
  • Sử dụng thư viện để:

    • Đọc tín hiệu analog đến từ jack audio.
    • Điều khiển LED để tạo ra các hiệu ứng đẹp mắt.

Mô tả nội dung source code

  • Các chân 4, 5, 6, 7 ,8, 9, 10, 11, 12, 13 là các chân kết nối với LED
  • Chân A0 là chân kết nối với jack audio.
  • Dữ liệu đọc được sẽ chia làm 10 level, số level là số LED sáng. Ví dụ ở level 6 sẽ có 6 LED sáng (LED1 đến LED6)
  //define 10 pin control LED
  int ledPin[10] = {4, 5, 6, 7 ,8, 9, 10, 11, 12, 13};
  //define pin read music analog signal
  int audioPin = A0;

  int audioValue = 0;

  void setup() {
    //setup 10 LED pins with output digital
    for (int i = 0; i < 10; i++){
      pinMode(ledPin[i], OUTPUT);
      digitalWrite(ledPin[i], LOW);
    }
  }

  void loop() {
    //read analog signal from audio 3.5mm
    audioValue = analogRead(audioPin);
    //divide signal to 10 part
    audioValue /= 10;
    if (audioValue > 10)
      audioValue = 10;
    //show analog signal to 10 led
    for (int i = 0; i < audioValue; i++)
    {
      digitalWrite(ledPin[i], HIGH);
    }
    for (int i = audioValue; i < 10; i++)
    {
      digitalWrite(ledPin[i], LOW);
    }
  }

Kết quả

LED sẽ chớp tắt và tạo ra các hiệu ứng đẹp mắt theo cường độ nhạc trên điện thoại hoặc máy tính.