산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

리모컨으로 음악 재생

구성품 및 소모품

Arduino UNO
× 1
리모컨
× 1
IR 수신기(일반)
× 1
부저
× 1
Adafruit Standard LCD - 파란색 바탕에 16x2 흰색
× 1
회전 전위차계(일반)
× 1
저항 221옴
× 1

앱 및 온라인 서비스

Arduino IDE

이 프로젝트 정보

Hackster 커뮤니티 안녕하세요!

저는 Simone Adobs이며 이 사이트에서 발표한 두 번째 프로젝트입니다.

이 프로젝트의 논리는 매우 간단합니다.

<울>
  • 리모컨을 가지고 연주하려는 멜로디를 선택합니다.
  • <울>
  • 부저가 있는 Arduino가 멜로디를 연주합니다.
  • <울>
  • LCD 화면에서 연주된 음표를 볼 수 있습니다.
  • 일부 코드 설명:

    이것은 멜로디의 예이며 모든 멜로디는 다음과 같이 작성됩니다.

    <사전><코드> 멜로디_예제() { lcd.clear(); lcd.setCursor(0,0); lcd.print("노래 제목"); 지연(1000); lcd.clear(); nota_mi(지속시간,일시정지); //음표 nota_do(duration,pause); //음표 lcd.clear(); 지연(100); 재설정_AVR(); //이 명령은 버튼을 누르지 않고 Arduino를 재설정하는 데 사용됩니다.}

    "Reset_AVR()" 명령을 사용하려면 이 코드를 스케치 상단에 넣어야 합니다.

    #include  #include  #define Reset_AVR() wdt_enable(WDTO_30MS); 동안(1) {} 

    이것은 Arduino가 연주해야 하는 멜로디를 이해하는 방법입니다.

    if (result==12495) { //12495는 버튼 1을 눌렀을 때 내 리모컨이 보내는 코드입니다 멜로디_1(); } else if (result==6375) { //6375는 버튼 2의 코드 멜로디_2(); } else if (result==31365) { //31365는 버튼 3의 코드 멜로디_3(); } else if (result==4335) { //4335는 버튼 4의 코드 멜로디_4(); } } 
    void nota_example(int duration, int pause) { shut(); //이 명령은 아래에서 설명할 함수를 호출합니다. lcd.setCursor(0, 0); lcd.print("예시"); //음표명 출력 NewTone(11,262,duration); //11->부저 핀 - 262->노트 코드 지연(일시 중지); //몇 밀리초 동안 기다림}  

    멜로디가 재생 중일 때 중지하시겠습니까?

    문제 없습니다. "shut()" 기능 덕분에 원할 때마다 멜로디를 멈출 수 있습니다.

    이것은 "shut()" 함수입니다:

    void shut() { if (irrecv.decode(&results)) { //버튼이 눌린 코드 수신 result=results.value, HEX; //받은 코드를 저장합니다. Serial.println(result); if (result==-23971) { //-23971 on my Remote는 종료 버튼을 나타냅니다. Reset_AVR(); //아두이노 리셋 } } recv.resume(); //Arduino가 Remote에서 새 코드를 수신하도록 허용}  

    이 프로젝트가 마음에 드셨으면 좋겠습니다. 그렇다면 이전 프로젝트를 살펴보세요.

    좋은 하루 되세요.

    이탈리아의 Simone <3

    <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    <울>
  • 멜로디 연주
  • 멜로디 연주C/C++
    Arduino IDE에서 이 코드를 복사합니다.
    #include #include #include #include #include #define Reset_AVR() wdt_enable(WDTO_30MS); while(1) {} #define 버저 11 LiquidCrystal lcd(9, 8, 7, 6, 5, 4);int result;int RECV_PIN=2;IRrecv recv(RECV_PIN);decode_results 결과; 무효 설정() { Serial.begin(9600); lcd.begin(16,2); lcd.setCursor(0,0); lcd.print("--------선택-----"); lcd.setCursor(0,1); lcd.print("----노래!!----"); 핀모드(부저, 출력); recv.enableIRIn();} 무효 루프() { if (irrecv.decode(&results)) { 결과=results.value, HEX; Serial.println(결과); if (결과==12495) { ode(); } else if (결과==6375) { 런던(); } else if (결과==31365) { 모피(); } else if (결과==4335) { 해적(); } recv.resume(); } 지연(100);} void fur() { lcd.clear(); lcd.setCursor(0,0); lcd.print("엘리제 모피"); 지연(1000); lcd.clear(); nota_mi(150,200); nota_rez(150,200); nota_mi(150,200); nota_rez(150,200); nota_mi(150,200); nota_si(150,200); nota_rez(150,200); nota_do(150,200); nota_la(450,300); nota_do(150,200); nota_mi(150,200); nota_la(150,200); nota_si(450,300); nota_mi(150,200); nota_solz(150,200); nota_si(150,200); nota_do(450,300); nota_mi(150,200); nota_mi(150,200); nota_rez(150,200); nota_mi(150,200); nota_rez(150,200); nota_mi(150,200); nota_si(150,200); nota_rez(150,200); nota_do(150,200); nota_la(450,300); nota_do(150,200); nota_mi(150,200); nota_la(150,200); nota_sol(450,300); nota_mi(150,200); nota_do(150,200); nota_si(150,200); nota_la(600,800); nota_mi(150,200); nota_rez(150,200); nota_mi(150,200); nota_rez(150,200); nota_mi(150,200); nota_si(150,200); nota_rez(150,200); nota_do(150,200); nota_la(450,300); nota_do(150,200); nota_mi(150,200); nota_la(150,200); nota_si(450,300); nota_mi(150,200); nota_solz(150,200); nota_si(150,200); nota_do(450,300); lcd.clear(); 지연(100); Reset_AVR();} london() { lcd.clear(); lcd.setCursor(0,0); lcd.print("런던 브릿지"); lcd.setCursor(0,1); lcd.print("떨어지고 있습니다"); 지연(1000); lcd.clear(); nota_sol(450,600); nota_la(150,200); nota_sol(300,400); nota_fa(300,400); nota_mi(300,400); nota_fa(300,400); nota_sol(600,800); nota_re(300,400); nota_mi(300,400); nota_fa(600,800); nota_mi(300,400); nota_fa(300,400); nota_sol(600,800); nota_sol(450,600); nota_la(150,200); nota_sol(300,400); nota_fa(300,400); nota_mi(300,400); nota_fa(300,400); nota_sol(600,800); nota_re(600,800); nota_sol(600,800); nota_mi(300,400); nota_do(450,600); lcd.clear(); 지연(100); Reset_AVR();} 무효 ode() { lcd.clear(); lcd.setCursor(0,0); lcd.print("환희의 송가"); 지연(1000); lcd.clear(); nota_mi(300,400); nota_mi(300,400); nota_fa(300,400); nota_sol(300,400); nota_sol(300,400); nota_fa(300,400); nota_mi(300,400); nota_re(300,400); nota_do(300,400); nota_do(300,400); nota_re(300,400); nota_mi(300,400); nota_mi(450,600); nota_re(150,200); nota_re(600,800); nota_mi(300,400); nota_mi(300,400); nota_fa(300,400); nota_sol(300,400); nota_sol(300,400); nota_fa(300,400); nota_mi(300,400); nota_re(300,400); nota_do(300,400); nota_do(300,400); nota_re(300,400); nota_mi(300,400); nota_re(450,600); nota_do(150,200); nota_do(600,800); nota_re(300,400); nota_re(300,400); nota_mi(300,400); nota_do(300,400); nota_re(300,400); nota_mi(150,200); nota_fa(150,200); nota_mi(300,400); nota_do(300,400); nota_re(300,400); nota_mi(150,200); nota_fa(150,200); nota_mi(300,400); nota_re(300,400); nota_do(300,400); nota_re(300,400); nota_sol(600,800); nota_mi(300,400); nota_mi(300,400); nota_fa(300,400); nota_sol(300,400); nota_sol(300,400); nota_fa(300,400); nota_mi(300,400); nota_re(300,400); nota_do(300,400); nota_do(300,400); nota_re(300,400); nota_mi(300,400); nota_re(450,600); nota_do(150,200); nota_do(600,800); lcd.clear(); 지연(100); Reset_AVR();}해적 무효화() { lcd.clear(); lcd.setCursor(0,0); lcd.print("해적입니다."); 지연(1000); lcd.clear(); nota_mi(150,200); nota_sol(150,200); nota_la(300,400); nota_la(300,400); nota_la(150,200); nota_si(150,200); nota_do(300,400); nota_do(300,400); nota_do(150,200); nota_re(150,200); nota_si(300,400); nota_si(300,400); nota_la(150,200); nota_sol(150,200); nota_sol(150,200); nota_la(450,600); nota_mi(150,200); nota_sol(150,200); nota_la(300,400); nota_la(300,400); nota_la(150,200); nota_si(150,200); nota_do(300,400); nota_do(300,400); nota_do(150,200); nota_re(150,200); nota_si(300,400); nota_si(300,400); nota_la(150,200); nota_sol(150,200); nota_la(300,400); 지연(400); nota_mi(150,200); nota_sol(150,200); nota_la(300,400); nota_la(300,400); nota_la(150,200); nota_do(150,200); nota_re(300,400); nota_re(300,400); nota_re(150,200); nota_mi(150,200); nota_fa(300,400); nota_fa(300,400); nota_mi(150,200); nota_re(150,200); nota_mi(150,200); nota_la(450,600); nota_la(150,200); nota_si(150,200); nota_do(300,400); nota_do(300,400); nota_re(300,400); nota_mi(150,200); nota_la(450,600); nota_la(150,200); nota_do(150,200); nota_si(300,400); nota_si(300,400); nota_do(150,200); nota_la(150,200); nota_si(900,1200); nota_si(300,400); nota_si(300,400); nota_do(150,200); nota_la(150,200); nota_si(900,1200); nota_si(300,400); nota_si(300,400); nota_la(150,200); nota_sol(150,200); nota_la(600,800); lcd.clear(); 지연(100); Reset_AVR();} 무효 셧() { if (irrecv.decode(&results)) { 결과=results.value, HEX; Serial.println(결과); if (결과==-23971) { Reset_AVR(); } } recv.resume();} 무효 nota_do(int 지속 시간, int 일시 중지) { 종료(); lcd.setCursor(0, 0); lcd.print("실행"); NewTone(11,262, 기간); //DO 지연(일시 중지); } 무효 nota_doz(int 지속 시간, int 일시 중지) { 종료(); lcd.setCursor(0, 0); lcd.print("# 하세요"); NewTone(11,277, 기간); //DO 지연(일시 중지); } 무효 nota_re(int 지속 시간, int 일시 중지) { 종료; lcd.setCursor(0, 0); lcd.print("재"); NewTone(11,294, 기간); //RE 지연(일시 중지); } 무효 nota_rez(int 지속 시간, int 일시 중지) { 종료; lcd.setCursor(0, 0); lcd.print("다시 # "); NewTone(11,311, 기간); //RE 지연(일시 중지); } 무효 nota_mi(int 지속 시간, int 일시 중지) { 종료(); lcd.setCursor(0, 0); lcd.print("미"); NewTone(11,330, 기간); //MI 지연(일시 중지); } 무효 nota_fa(int 지속 시간, int 일시 중지) { 종료(); lcd.setCursor(0, 0); lcd.print("파"); NewTone(11,349, 기간); //FA 지연(일시 중지); } 무효 nota_faz(int 지속 시간, int 일시 중지) { 종료(); lcd.setCursor(0, 0); lcd.print("파 # "); NewTone(11,370, 기간); //FA 지연(일시 중지); } 무효 nota_sol(int 지속 시간, int 일시 중지) { 종료(); lcd.setCursor(0, 0); lcd.print("솔"); NewTone(11,392, 기간); //SOL 지연(일시 중지); } 무효 nota_solz(int 지속 시간, int 일시 중지) { 종료(); lcd.setCursor(0, 0); lcd.print("솔 번호 "); NewTone(11,415, 기간); //SOL 지연(일시 중지); } 무효 nota_la(int 지속 시간, int 일시 중지) { 종료(); lcd.setCursor(0, 0); lcd.print("라"); NewTone(11,440, 기간); //LA 지연(일시 중지); } 무효 nota_laz(int 지속 시간, int 일시 중지) { 종료(); lcd.setCursor(0, 0); lcd.print("라 # "); NewTone(11,466, 기간); //LA 지연(일시 중지); } 무효 nota_si(int 지속 시간, int 일시 중지) { 종료(); lcd.setCursor(0, 0); lcd.print("시"); NewTone(11,494, 기간); //SI 지연(일시 중지); }

    회로도

    canzoni_con_tastiera_fQS3978roa.fzz

    제조공정

    1. LIRC 없이 Raspberry Pi와 함께 IR 리모컨 사용
    2. MPU-6050을 사용한 Arduino 자이로스코프 게임
    3. ESP32가 장착된 Discord 보안 카메라
    4. Arduino 디지털 주사위
    5. DIY 37 LED 룰렛 게임
    6. 3D 인쇄 케이스가 있는 배터리 전원 TV 리모컨
    7. Arduino Cloud로 집의 온도를 어디에서나 알 수 있습니다!
    8. ATtiny85 미니 아케이드:뱀
    9. 휴대용 거리 감지기
    10. Cortana로 LED 제어