질문게시판 > 답변 : 초음파센서+네오픽셀+서보모터+grove mp3

인기검색어 > 아두이노 센서 ATMEGA128

최신글 질문게시판 동영상강좌 가입하기

▼ BASIC4MCU 후원업체 신제품 정보 ▼

▲ BASIC4MCU 후원업체 신제품 정보 ▲

BASIC4MCU > 질문게시판

답변 : 초음파센서+네오픽셀+서보모터+grove mp3

페이지 정보

작성자 master 작성일18-12-23 08:40 조회4,109회 댓글0건

본문

 

// DateTime : 2018-12-23 오전 8:45:31
// by Ok-Hyun Park
//
#include <SoftwareSerial.h>
#include <MP3Player_KT403A.h>
SoftwareSerial mp3(2,3);
//
#include <Adafruit_NeoPixel.h>
#define  PIN      11
Adafruit_NeoPixel strip=Adafruit_NeoPixel(60,PIN,NEO_GRB+NEO_KHZ800);
//
#include <Servo.h>
Servo Biteservo//servomotor 를 정의합니다.
//
const int trigPin=6,echoPin=7;
int   distance=0;
//
void setup(){
  pinMode(trigPin,OUTPUT); // trigPin을 출력으로
  pinMode(echoPin,INPUT); // echoPin을 입력이다.
  //
  strip.begin(); strip.show(); // Initialize all pixels to 'off'
  //
  Biteservo.attach(9); //신호를 받을부분의 핀을 선정합니다.
  //
  Serial.begin(9600);
  mp3.begin(9600);
  while(!Serial);
  Serial.println("Grove-Serial MP3 Demo");
  Serial.println(
  "Input command: \r\n\r\n"
  "P[]play music by default index\r\n"
  "Pm[]play music in MP3 folder by index\r\n"
  "Pf[][]play music by specify folder and index\r\n"
  "p Pause\r\n"
  "R Resume\r\n"
  "N Next\r\n"
  "L Previous\r\n"
  "l Loop\r\n"
  "I Increase volume\r\n"
  "D Decrease volumern\r\n");
  delay(100);
  SelectPlayerDevice(0x02); // Select SD card as the player device.
  SetVolume(0x0E); // Set the volume,the range is 0x00 to 0x1E.
}
//--------------------------------------------------------------------------------------
//
unsigned long t,t_trig=0;
//
void loop(){
  t=millis();
  if(t-t_trig>100){ t_trig=t;
    digitalWrite(trigPin,HIGH); delayMicroseconds(10); digitalWrite(trigPin,LOW);
    distance=pulseIn(echoPin,HIGH)/58.2;
    //Serial.print("Distance: "); Serial.print(distance); Serial.println("cm");
  }
  distanceneopixel_loop();
  distanceservo_loop();
  distancemp3_loop();
}
//----------------------서보모터 코드------------------------------
unsigned long t_servo=0;
unsigned int  servo_cnt=0,pos=0;
//
void distanceservo_loop(){
  if(distance<30){
    if(t-t_servo>10){ t_servo=t;
      if(servo_cnt<100){ } // delay(1000);
      else if(servo_cnt<=280){ pos=servo_cnt-100Biteservo.write(pos); } // for(pos=0; pos<180; pos+=1){ Biteservo.write(pos); delay(10); } //서보의 위치 0~180도 각을 정의합니다.
      else if(servo_cnt<=380){ } // delay(1000);
      else if(servo_cnt<=561){ pos=561-servo_cntBiteservo.write(pos); } // for(pos=180; pos>=1; pos-=1){ Biteservo.write(pos); delay(10); } // 180도에서 0도까지 내려갑니다.
      if(++servo_cnt>561)servo_cnt=0;
    }
  }
  elsepos=0servo_cnt=0Biteservo.write(pos); Serial.println("AAAA"); // 30 이상이면 0도로 이동
}
//----------------------네오픽셀 코드------------------------------
unsigned long t_neo=0;
unsigned int  neo_cnt=0,fade=0;
//
void distanceneopixel_loop(){
  if(distance<30){
    if(t-t_neo>10){ t_neo=t;
      if(neo_cnt==0){
        strip.setPixelColor(0,strip.Color(0,50,255)); strip.setPixelColor(1,strip.Color(0,100,255));
        strip.setPixelColor(2,strip.Color(0,150,255)); strip.setPixelColor(3,strip.Color(0,200,255));
        strip.setPixelColor(4,strip.Color(0,255,255));
        strip.setPixelColor(5,strip.Color(0,255,255)); strip.setPixelColor(6,strip.Color(0,255,255));
        strip.setPixelColor(7,strip.Color(0,255,255)); strip.setPixelColor(8,strip.Color(255,255,0)); //초록 //노랑
      }
      else if(neo_cnt<=256){ // for(int i=0; i<=255; i+=1)
        fade=neo_cnt-1;
        strip.setPixelColor(5,strip.Color(fade,255-fade,255-fade));
        strip.setPixelColor(6,strip.Color(fade,255,255-fade));
      }
      else if(neo_cnt<=511){ // for(int i=255; i>=0; i-=1)
        fade=511-neo_cnt;
        strip.setPixelColor(5,strip.Color(fade,255-fade,255-fade));
        strip.setPixelColor(6,strip.Color(fade,255,255-fade));
      }
      strip.show();
      if(++neo_cnt>511)neo_cnt=0;
    }
  }
  else// if(distance>30)
    if(t-t_neo>10){ t_neo=t;
      strip.setPixelColor(0,strip.Color(255,50,0)); strip.setPixelColor(1,strip.Color(255,100,0));
      strip.setPixelColor(2,strip.Color(255,150,0)); strip.setPixelColor(3,strip.Color(255,200,0));
      strip.setPixelColor(4,strip.Color(255,255,0));
      strip.setPixelColor(5,strip.Color(255,255,0)); strip.setPixelColor(6,strip.Color(255,255,0));
      strip.setPixelColor(7,strip.Color(255,255,0)); strip.setPixelColor(8,strip.Color(255,255,0)); //초록 //노랑
      strip.show();
    }
  }
}
//----------------------MP3 코드------------------------------
uint8_t  len=0,i,recv_cmd[8];
unsigned long t_mp3=0;
bool flag=0;
//
void distancemp3_loop(){
  if(distance<30){ // 거리30보다 작은 경우
    if(flag==0){ flag=1PlayResume(); }
  }
  else// if(distance>30)// 거리30보다 큰 경우
    flag=0;
    if(t-t_mp3>1000){ t_mp3=tDecreaseVolume(); } // 1초마다 볼륨 점점 작게
  }
  //
  if(Serial.available()){
    char chr=Serial.read(); // Serial.print(chr);
    if(chr=='\n'){
      switch(recv_cmd[0]){
        case 'P':{
          if(recv_cmd[1]=='m'){ /***Play music in "MP3" folder by index*example:*"Pm1"->./MP3/0001.mp3*/
            PlayMP3folder(recv_cmd[2]-'0');
            Serial.print("Play "); Serial.write(recv_cmd[2]); Serial.println(".mp3 in MP3 folder");
          }
          else if(recv_cmd[1]=='f'){ /***Play specify folder and music*example:*"Pf11"->./01/001***.mp3*/
            SpecifyfolderPlay(recv_cmd[2]-'0',recv_cmd[3]-'0');
            Serial.print("Play "); Serial.write(recv_cmd[3]); Serial.print("xxx.mp3"); Serial.print(" in folder "); Serial.write(recv_cmd[2]); Serial.println();
          }
          else/***Play music by default index*example:*"P1"->./***.mp3*/
            SpecifyMusicPlay(recv_cmd[1]-'0');
            Serial.print("Play xxx.MP3 by index "); Serial.write(recv_cmd[1]); Serial.println();
          }
          // Serial.println("Specify the music index to play");
          break;
        }
        case 'p'PlayPause();      Serial.println("Pause the MP3 player");        break;
        case 'R'PlayResume();     Serial.println("Resume the MP3 player");       break;
        case 'N'PlayNext();       Serial.println("Play the next song");          break;
        case 'L'PlayPrevious();   Serial.println("Play the previous song");      break;
        case 'l'PlayLoop();       Serial.println("Play loop for all the songs"); break;
        case 'I'IncreaseVolume(); Serial.println("Increase volume");             break;
        case 'D'DecreaseVolume(); Serial.println("Decrease volume");             break;
      }
      //
      len=0;
    }
    elserecv_cmd[len++]=chr; }
  }
  // printReturnedData();
}

 

  • BASIC4MCU 작성글 SNS에 공유하기
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기
  • 카카오톡으로 보내기

댓글 : 0

조회수 : 4,109

등록된 댓글이 없습니다.

게시물 검색

BASIC4MCU > 질문게시판 목록

제목 날짜
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은… 스태프  19-01-15
공지 사이트 이용 안내 댓글[25] master  17-10-29
질문 아두이노 센서값 출력 질문입니다! 아궁2 새글 22-06-24
질문 ATmega128, ATmega28 RS232통신 첨부파일Moon4201 새글 22-06-24
질문 서보모터, 온습도센서 코드 질문 댓글[2] 첨부파일kshdlfaldfh  22-06-22
답변 답변 : 서보모터, 온습도센서 코드 질문 댓글[15] master  22-06-22
질문 steppermulti5 질문 응애  22-06-21
답변 답변 : steppermulti5 질문 댓글[1] master  22-06-22
질문 atmega128 avr usart 질문 snoflak  22-06-21
답변 답변 : atmega128 avr usart 질문 댓글[5] master  22-06-21
질문 사용자 정의 함수 변환 하는 방법 댓글[2] 첨부파일da0800  22-06-21
질문 atmega128 댓글[1] 양의노래  22-06-20
질문 아두이노 동시동작 재질문 댓글[9] 첨부파일죠르디  22-06-20
질문 초음파센서로 dc모터 제어하기 댓글[1] 첨부파일난쟁2  22-06-20
질문 아두이노 동시동작 댓글[7] 죠르디  22-06-19
질문 ATMEGA128 UART,FND 연동 질문 JMOD  22-06-19
답변 답변 : ATMEGA128 UART,FND 연동 질문 댓글[1] master  22-06-20
질문 atmeg128 질문이요 댓글[1] 첨부파일공대생er  22-06-18
질문 atmega128 초음파 센서로 신호등 시간초 늘리기 서동씨  22-06-18
답변 답변 : atmega128 초음파 센서로 신호등 시간초… 댓글[1] master  22-06-18
질문 atmega128 댓글[2] 망경이  22-06-18
질문 앱인벤터 이용해서 수동 자동 할라고하는데 ..잘안됩니다… 댓글[1] 따랑해영  22-06-18
답변 질문 : 앱인벤터 이용해서 수동 자동 할라고하는데 ..… 댓글[1] 첨부파일따랑해영  22-06-19
답변 질문 : 앱인벤터 이용해서 수동 자동 할라고하는데 .… 첨부파일따랑해영  22-06-19
질문 서보모터와 초음파센서 댓글[1] 브링미히어  22-06-17
질문 LCD 도와주세요 ㅜㅠㅠㅠ 댓글[2] 첨부파일dentist22  22-06-17
질문 안녕하세요 atmega128 질문드리고 싶습니다. (자… 댓글[3] dlcldl  22-06-17
질문 아두이노 delay를 millis로 바꾸고 싶습니다. 슨슨슨모  22-06-16
답변 답변 : 아두이노 delay를 millis로 바꾸고 싶… master  22-06-17
질문 아두이노 LCD 시계 첨부파일dentist22  22-06-16
게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전