Tự làm bộ led nháy theo nhạc không cần IC chuyên dùng

Xin chào các bạn, từ thí nghiệm này mình đã nghiên cứu và tạo ra một bộ led nháy theo nhạc khá thú vị, mặc dù không được chuẩn như mấy con IC chuyên làm led nghe nhạc cheeky, nhưng mong rằng các bạn sẽ thấy thích nó :). Ta cùng bắt tay vào làm thôi. À bạn nào chưa xem bài thí nghiệm thì xem lại để hiểu mình đang làm cái gì nha.

Chuẩn bị

  • Arduino bất kì (Mình dùng con Pro Micro)
  • 1 jack đực cắm loa loại 3.5mm
  • Led với số lượng, màu sắc tùy ý
  • Số điện trở tương ứng với số led loại khoảng 220 ôm => 1k5 ôm
  • Dây nối
  • Thêm breadboard hoặc board đồng loại có nhiều lỗ ý (Chẳng biết gọi tên thế nào :D) để sắp xếp cố định các led
  • Những bản nhạc tuyệt vời.

Ráp phần cứng

Nối jack cắm loa như mình đã chỉ ở bài Thí nghiệm, xem lại bài ấy để hiểu nha

Sơ đồ mạch điện, ở đây mình dùng 8 led màu và vị trí như hình:

À sơ đồ này thiếu cái jack cắm loa nha, cực âm jack nối GND, chân tín hiệu jack nối A2.

Nguyên lí hoạt động

Như mình đã giải thích ở bài Thí nghiệm trước, khi bật nhạc, sóng âm thanh sẽ tạo ra các mức điện áp mà chân A2 sẽ có nhiệm vụ đọc. Khi đọc được mức điện áp ấy mình sẽ so sánh và phân loại âm thanh ấy thuộc chế độ led nào và cho phát chế độ ấy. Mình thấy rằng nhạc càng lên cao trào thì số đo chân A2 càng cao nên MÌNH SẼ CHO LED SÁNG CÀNG NHIỀU KHI SỐ ĐO CÀNG CAO. Đồng thời mình cũng có cho tinh chỉnh thời gian chờ để thấy mode led cho thích hợp.

Code lập trình

Code đây nạp luôn cho nó nóng :D. Bạn có thể tinh chỉnh thông số trong hàm mode và cảm nhận để sao cho chuẩn nhất. Tất nhiên là mình đã tinh chỉnh rồi :D

int pin[]={2,3,4,5,6,7,8,9}; //Do-Xanhla-Xanhduong-Vang-Vang-Xanhduong-Xanhla-Do
int jack=A2;
int data;
int ledStatus;
int v=50;
void setup() {
  for(int i=0;i<8;i++)
  {
    pinMode(pin[i],OUTPUT);
    digitalWrite(pin[i],1);
  }
  delay(500);
  for (int i=0;i<8;i++)
  {
    digitalWrite(pin[i],0);
  }
}
void loop() {
  data=analogRead(jack);
  mode(data);
  led(ledStatus);
  delay(v);
}
void mode(int d)
{
  if(d==0){ledStatus=0;}
  if(d<15&&d>0){ledStatus=1;v=90;}
  if(d>=15&&d<40){ledStatus=2;v=60;}
  if(d>=40&&d<70){ledStatus=3;v=50;}
  if(d>=70&&d<100){ledStatus=4;v=40;}
  if(d>=100&&d<130){ledStatus=5;v=20;}
  if(d>=200){ledStatus=6;v=20;}
}
void led(byte s)
{
  switch (s)
  {
    case 0:
    for(int i=0;i<8;i++)
    {
      digitalWrite(pin[i],0);
    }
    break;
    case 1:
    digitalWrite(pin[2],1);
    digitalWrite(pin[3],1);
    digitalWrite(pin[5],1);
    digitalWrite(pin[0],0);
    digitalWrite(pin[1],0);
    digitalWrite(pin[4],0);
    digitalWrite(pin[6],0);
    digitalWrite(pin[7],0);
    break;
    case 2:
    digitalWrite(pin[2],0);
    digitalWrite(pin[3],0);
    digitalWrite(pin[5],0);
    digitalWrite(pin[0],0);
    digitalWrite(pin[1],1);
    digitalWrite(pin[4],1);
    digitalWrite(pin[6],1);
    digitalWrite(pin[7],0);
    break;
    case 3:
    digitalWrite(pin[2],1);
    digitalWrite(pin[3],0);
    digitalWrite(pin[5],1);
    digitalWrite(pin[0],1);
    digitalWrite(pin[1],0);
    digitalWrite(pin[4],0);
    digitalWrite(pin[6],0);
    digitalWrite(pin[7],1);
    break;
    case 4:
    digitalWrite(pin[2],0);
    digitalWrite(pin[3],0);
    digitalWrite(pin[5],0);
    digitalWrite(pin[0],1);
    digitalWrite(pin[1],1);
    digitalWrite(pin[4],0);
    digitalWrite(pin[6],1);
    digitalWrite(pin[7],1);
    break;
    case 5:
    digitalWrite(pin[2],0);
    digitalWrite(pin[3],1);
    digitalWrite(pin[5],0);
    digitalWrite(pin[0],1);
    digitalWrite(pin[1],0);
    digitalWrite(pin[4],1);
    digitalWrite(pin[6],0);
    digitalWrite(pin[7],1);
    break;
    case 6:
    for(int i=0;i<8;i++)
    {
      digitalWrite(pin[i],1);
    }
    break;
  }
}

Thành quả

Ok, cắm jack vào máy tính, bật nguồn cho arduino và mở nhạc lên để thưởng thức đi nào !

Như vậy là ta vừa tìm hiểu xong cách làm bộ led nháy theo nhạc khá thú vị rồi đó, nếu như các bạn cũng thấy thú vị thì cho mình cái Rate Note nha :)), cảm ơn. Chúc các bạn thành công.

À những hình ảnh bên dưới và avatar bài chỉ mang tính minh họa thôi nha, do điện thoại mình cùi bắp không chụp rõ được, nên lấy ảnh trên mạng :D (Xem video là biết), sorry.

Đây là video demo, khá là mờ, các bạn thông cảm :((

Youtube: 
Những hình ảnh về dự án: 
Bài viết truyền cảm hứng: 
lên
21 thành viên đã đánh giá bài viết này hữu ích.
Các dự án được truyền cảm hứng

Một dự án được truyền cảm hứng với "LED RGB chung cực dương"

Sau khi đọc xong bài viết "Làm thế nào để điều khiển được LED RGB", mình cũng muốn làm thử. Tuy nhiên khi đặt mua thì lại nhận được loại LED RGB có cực dương chung. Vậy làm sao áp dụng được?

 

lên
33 thành viên đã đánh giá bài viết này hữu ích.
Các bài viết cùng tác giả

iNut cảm biến - Bài 1: Bước đầu tiến vào thế giới IoT

Xin chào mọi người, cùng với AI thì IoT cũng là một xu thế chắc chắn sẽ phát triển trong cuộc cách mạng công nghiệp 4.0. Ngày trước, khi mới làm quen với các dự án liên quan đến IoT, mọi người thường gặp nhiều khó khăn do phải chuẩn bị gần như mọi thứ từ server tới client và tính ổn định, bảo mật của mô hình cũng khó được đảm bảo. Kể từ khi các nền tảng IoT ra đời thì mọi thứ đã trở nên dễ dàng hơn. Sự đơn giản và tiện lợi khi làm các dự án IoT cũng ngày càng tăng theo dòng phát triển của các nền tảng ấy. Inut Platform chính là một trong những nền tảng như vậy, đây là một nền tảng do người Việt sáng lập nên chắc chắn việc hỗ trợ khi làm dự án sẽ dễ dàng hơn rất nhiều. Chính vì vậy, hôm nay mình xin giới thiệu với các bạn seri bài viết hướng dẫn sử dụng iNut Cảm Biến - Một sản phẩm đa năng của nền tảng iNut.

lên
2 thành viên đã đánh giá bài viết này hữu ích.

Tổng quan về cách sử dụng Module 4 LED 7 đoạn - Phần 1

Xin chào mọi người! Sau khi tìm hiểu led 4 đoạn, mình thấy rằng nó rất đa dạng, có khá nhiều loại với sơ đồ pinout khác nhau. Nên mình sẽ viết chuỗi bài "Tổng quan về cách sử dụng Module 4 LED 7 đoạn" để giúp cho những ai đang nghiên cứ led 7 đoạn sẽ dễ dàng hơn trong việc tìm hiểu chúng. Ở phần 1 này mình sẽ đưa ra nền tảng cơ bản về led 7 đoạn và cách tra pinout.

lên
14 thành viên đã đánh giá bài viết này hữu ích.