ĐĂNG KÍ NHẬN TIN TỰ ĐỘNG

Nhập địa chỉ E-mail vào ô phía trên để nhận tin mới liên tục từ Tự Tay Làm

Làm đèn LED chiếu sáng cho hộp đàn Guitar

Đăng lúc: Thứ năm - 22/08/2013 03:58 - Người đăng bài viết: Ban Biên Tập
Chia sẻ lên Facebook Chia sẻ lên Twitter Chia sẻ lên Yahoo Chia sẻ lên Zing Me Chia sẻ lên Yume Chia sẻ lên Link hay Chia sẻ lên Google+
den led Guitar

den led Guitar

Sangtao24 giới thiệu đến các bạn một ý tưởng giúp cho chiếc đàn Guitar trở nên nổi bật hơn trong các buổi sinh hoạt tập thể hoặc giao lưu văn nghệ, bằng cách thêm vào trong chiếc đàn Guitar những chiếc đèn LED.
Bạn thực hiện theo các bước hướng dẫn sau đây:
Chuẩn bị:
1 x Arduino Uno (thiết bị lập trình logic)
1 x Adafruit Wave Shield
1 x Servo
6 x LDR
12 x 1k Resistors
6 x LED
và dây.
Bước 1: Mở hộp đàn








Bước 2: Gắn mạch Arduino vào đúng vị trí
Bạn tiến hành gắn hệ thống dây LDR vào kệ đầu trong hộp trong khi đó các đèn LED bạn gắn vào kệ bên dưới.
led guitar
Bộ cảm biến siêu âm bạn đặt ở mặt trước, nơi mà mọi người có thể nhìn thấy đèn LED khi sử dụng.


Bạn có thể thiết lập tần số sóng cho âm thanh và lưu chúng lại ở định dạng WAV, rồi cài đặt lên thẻ nhớ Waveshield Memory.

Bước 3: Viết code điều khiển

#include < NewPing.h >
#include < SoftwareServo.h >
#include < FatReader.h >
#include < SdReader.h >
#include < avr/pgmspace.h >
#include "WaveUtil.h"
#include "WaveHC.h"



#define TRIGGER_PIN  7 
#define ECHO_PIN     6
#define MAX_DISTANCE 500

SdReader card;  
FatVolume vol;   
FatReader root;  
FatReader f;    

WaveHC wave;     
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
SoftwareServo servo1;



unsigned int pingSpeed = 50;
unsigned long pingTimer;   



byte buttons [] = { A0, A1, A2, A3, A4, A5};

#define NUMBUTTONS sizeof(buttons)
 
int freeRam(void)
{
  extern int  __bss_end;
  extern int  *__brkval;
  int free_memory;
  if((int)__brkval == 0) {
    free_memory = ((int)&free_memory) - ((int)&__bss_end);
  }
  else {
    free_memory = ((int)&free_memory) - ((int)__brkval);
  }
  return free_memory;
}

void sdErrorCheck(void)
{
  if (!card.errorCode()) return;
  putstring("\n\rSD I/O error: ");
  Serial.print(card.errorCode(), HEX);
  putstring(", ");
  Serial.println(card.errorData(), HEX);
  while(1);
}

void setup() {
  Serial.begin(115200);

  servo1.attach(9);

   if (!card.init(true)) {
if (!card.init()) {          
   putstring_nl("Card init. failed!"); 
    sdErrorCheck();
    while(1);                        
  card.partialBlockRead(true);

  uint8_t part;
for (part = 0; part < 5; part++) {    
   if (vol.init(card, part))
      break;                           
  }
  if (part == 5) {                     
   sdErrorCheck();    
    while(1);                           
  }
 

  putstring("Using partition ");
  Serial.print(part, DEC);
  putstring(", type is FAT");
  Serial.println(vol.fatType(),DEC);   
 

  if (!root.openRoot(vol)) {
   putstring_nl("Can't open root dir!");

  while(1);                            
}


   }
}
}
void loop() {
 
delay(100);                    
  unsigned int uS = sonar.ping();
  Serial.print("Ping: ");
  Serial.print(uS / US_ROUNDTRIP_CM);
  Serial.println("cm");
 
   if ((uS / US_ROUNDTRIP_CM) < 50){
    servo1.write(160);
    SoftwareServo::refresh();
//    myservo1.write(90);
    }
   else {
    servo1.write(0);
    SoftwareServo::refresh();
//    myservo1.write(0);
  }

 
 

 
 
  byte i;

  static byte playing = -1;
  int sensor0 = analogRead (buttons [0]);
  int sensor1 = analogRead (buttons [1]);
  int sensor2 = analogRead (buttons [2]);
  int sensor3 = analogRead (buttons [3]);
  int sensor4 = analogRead (buttons [4]);
  int sensor5 = analogRead (buttons [5]);
if ( analogRead (buttons [0]) > 900) {
    if (playing != 0) {
      playing = 0;
      playfile("0.WAV");
    }
   
  }
//  Serial.print("LDR A1="); 
//    Serial.print(sensor1);
if ( analogRead (buttons [1]) > 900) {
    if (playing != 0) {
      playing = 0;
      playfile("1.WAV");
    }
   
  }
//  Serial.print("LDR A2="); 
//    Serial.print(sensor2);
   if ( analogRead (buttons [2]) > 900) {
    if (playing != 0) {
      playing = 0;
      playfile("2.WAV");
    }
   
  }
//    Serial.print("LDR A3="); 
//    Serial.print(sensor3);
  if ( analogRead (buttons [3]) > 150) {
    if (playing != 0) {
      playing = 0;
      playfile("3.WAV");
    }
   
  }
//  Serial.print("LDR A4="); 
//  Serial.print(sensor4);
   if ( analogRead (buttons [4]) > 150) {
    if (playing != 0) {
      playing = 0;
      playfile("4.WAV");
    }
   
  }
//  Serial.print("LDR A5="); 
//    Serial.println(sensor5);
  if ( analogRead (buttons [5]) > 150) {
    if (playing != 0) {
      playing = 0;
      playfile("5.WAV");
    }
   
  }
 
 
  if (! wave.isplaying) {
    playing = -1;
  }
}










void playcomplete(char *name) {
 
  playfile(name);
  while (wave.isplaying) {
 
  }
 
}




void playfile(char *name) {
 
  if (wave.isplaying) {
    wave.stop();
  }
 
  if (!f.open(root, name)) {
    putstring("Couldn't open file "); Serial.print(name); return;
  }

  if (!wave.create(f)) {
    putstring_nl("Not a valid WAV"); return;
  }
 

  wave.play();
}

Bạn cần phải cài đặt thư viện Softwareservo Library lên thiết bị Arduino bởi vì tấm chắn sóng và Servo sử dụng tương tự như Timer của Arduino.
VIDEO MINH HỌA:
Tác giả bài viết: Bùi Thanh Liêm
Nguồn tin: www.tutaylam.com
Từ khóa:

Guitar, den led

Đánh giá bài viết
Tổng số điểm của bài viết là: 5 trong 1 đánh giá
Click để đánh giá bài viết
 

Thăm dò ý kiến

Tham khảo ý kiến về website Sản phẩm tự chế

Không nên mở thêm website này.

Ý tưởng tốt, tôi thích website này.

Giao diện website đẹp, dễ tương tác.

Giao diện website màu mè, dễ bị phân tán.