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

Arduino MP3 플레이어 + 거리 센서 =FUN

구성품 및 소모품

Arduino UNO
× 1
catalex의 Arduino 직렬 mp3 플레이어
SD 카드도 필요하고 PC용 SD 카드(대소) 소켓도 필요합니다.
× 1
초음파 센서 - HC-SR04(일반)
× 2
mp3 잭 입력이 있는 일부 스피커
× 1

이 프로젝트 정보

CATALEX의 직렬 MP3 플레이어 사용 방법

그것에 대한 나의 이전 튜토리얼, 단 하나의 라이브러리만 필요합니다(#include ) 및 이전 자습서에서 이미 설명된 몇 가지 쉬운 기능:

void sendCommand(int8_t command, int16_t dat) { if (command==CMD_PLAY_WITHFOLDER 또는 command==CMD_PLAY_WITHVOLUME){Serial.print("노래를 연주하고 머리를 약간 움직여서 큰 효과를 냅니다");} 지연( 20); Send_buf[0] =0x7e; //시작 바이트 Send_buf[1] =0xff; //버전 Send_buf[2] =0x06; //시작 바이트와 끝 바이트가 없는 명령의 바이트 수 Send_buf[3] =command; // Send_buf[4] =0x00;//0x00 =피드백 없음, 0x01 =피드백 Send_buf[5] =(int8_t)(dat>> 8);//datah Send_buf[6] =(int8_t)(dat); //데이터 Send_buf[7] =0xef; // 종료 바이트 for(uint8_t i=0; i<8; i++)// { mySerial.write(Send_buf[i]);//시리얼 mp3로 비트 보내기 } Serial.println(); }  

HC-SR04 초음파 범위 사용 방법

그것에 대한 내 이전 자습서, 라이브러리가 필요하지 않으며 어쨌든 사용하기 쉽습니다. 방금 이전 hc-sr04 게시물을 가져와서 이 기능에 넣었습니다.

long measureDistance(){ 긴 기간, 거리; digitalWrite(trigPin, LOW); //펄스 ___|---|___ delayMicroseconds(2); digitalWrite(trigPin, HIGH); 지연마이크로초(10); digitalWrite(trigPin, LOW); 지속 시간 =pulseIn(echoPin, HIGH); 거리 =(지속시간/2) / 29.1; Serial.println("거리:"); Serial.println(거리); 반환 거리; //cm 단위로 거리를 반환}  

둘 다 사용하는 방법 버전 1:단순 mp3 거리 트리거

아직 라이브러리가 없으면 먼저 설치하십시오().

이 코드 버전에서는 무언가가 50cm보다 가까워지면 mp3 오디오를 트리거합니다. 아주 큰 소리로 "놀라운 새끼" 클립으로 룸메이트를 겁주기 위해 사용했습니다.

참고: 전체 .ino 코드는 아래 프로젝트 첨부 파일에 있습니다.

void loop() { if(measureDistance()<50){ sendCommand(CMD_PLAY_WITHFOLDER, 0X0203);//두 번째 폴더의 세 번째 노래를 재생합니다. delay(1000);//오류를 피하기 위해 대기 } 지연 (300); }  

버전 2 및 Disturbance mp3 거리 트리거를 모두 사용하는 방법

이 버전은 거리에 신경 쓰지 않고 판독값 간의 차이만 감지합니다. 오류로 인해 갑자기 트리거되는 경우 if(gap> 20){....... 에 더 높은 값을 넣으십시오. 루프 외부에서 새 변수를 선언해야 합니다. 코드 시작 부분에 했습니다.

int firstTime=0;//루프 외부에서 firstTime을 선언해야 합니다. long Distance,auxDistance,gap=0; void loop() { Distance=measureDistance(trigPin,echoPin);//거리를 측정하고 gap=abs(Distance-auxDistance);// 현재와 마지막 판독값 사이의 차이를 계산 if(firstTime==0){//필요 안정성을 위해 auxDistance=거리; 갭=0; //첫 번째 루프를 피하기 위해 노래를 재생한 후 처음에만 수행합니다. malfuncion firstTime++; 지연(1000); } if(gap>
20){ //거리 편차가 20cm인 경우 sendCommand(CMD_PLAY_WITHFOLDER, 0X0201);//두 번째 폴더의 첫 번째 노래를 재생 firstTime=0;//오류를 방지!!우리는 오류를 좋아하지 않습니다. delay(2000); } Serial.print("새 거리:");//debuggggg Serial.print(거리); Serial.print(" 이전 거리:"); Serial.print(auxDistance); Serial.println(갭); 지연(300); auxDistance=Distance;//다음 루프의 if() 값을 저장합니다. }  

둘 다 사용하는 방법 버전 3:2개의 거리 센서

2개의 거리 센서로 움직임의 방향을 실제로 추측할 수 있습니다 그래서 "hello " 또는 "안녕 " 사람의 이동 방향에 따라 다릅니다.

<울>
  • 먼저 두 번째 HC-SR04를 제어하기 위한 또 다른 2개의 DIGITAL 핀을 정의합니다.
  • #define trigPin 13//첫 번째 거리 모듈용 #define echoPin 12 #define trigPin2 10//두 번째 거리 모듈용 #define echoPin2 9 
    <울>
  • 새로운 변수! 네!
  • 장거리,auxDistance,갭=0; 장거리2,auxDistance2,갭2=0; //새로운 변수 
    <울>
  • setup()에서 새로운 핀 선언을 추가합니다.
  • pinMode(trigPin, OUTPUT); 핀모드(에코핀, 입력); 핀모드(trigPin2, 출력); 핀모드(echoPin2, INPUT);  
    <울>
  • measureDistance()를 변경합니다. 함수, 이제 함수는 인수에서 핀을 읽습니다.
  • long measureDistance(int trigger,int echo){ 긴 기간, 거리; digitalWrite(트리거, LOW); //펄스 ___|---|___ delayMicroseconds(2); digitalWrite(트리거, 높음); 지연마이크로초(10); digitalWrite(트리거, LOW); 지속 시간 =pulseIn(에코, 높음); 거리 =(지속시간/2) / 29.1; Serial.println("거리:"); Serial.println(거리); 반환 거리; }  
    <울>
  • loop():
  • void loop() { Distance=measureDistance(trigPin,echoPin);//거리1을 측정하고 Distance2=measureDistance(trigPin2,echoPin2);//거리2를 측정하고 gap=abs(Distance-auxDistance); // 현재와 마지막 판독값 간의 차이를 계산합니다. gap2=abs(Distance2-auxDistance2);// 현재와 마지막 판독값 사이의 차이를 계산합니다. if(firstTime==0){//안정성을 위해 필요합니다. auxDistance=Distance; auxDistance2=거리2; 갭=0; 갭2=0; //첫 번째 루프를 피하기 위해 노래를 재생한 후 처음에만 수행합니다. malfuncion firstTime++; 지연(2000); } if(gap>
    20 and gap2<20 ){ //거리 편차가 20cm이면 sendCommand(CMD_PLAY_WITHFOLDER, 0X0201);//두 번째 폴더의 첫 번째 노래를 재생합니다. Serial.println("오른쪽 움직임 감지됨"); 지연(2000); } if(gap2>20 and gap<20){ //거리 편차가 20cm인 경우 sendCommand(CMD_PLAY_WITHFOLDER, 0X0202);//두 번째 폴더의 두 번째 노래를 재생합니다. Serial.println("왼쪽 움직임이 감지되었습니다."); 지연(2000); } Serial.println("\\\\\\\\\\\\\\\\\\\\");//debuggggg Serial.print(" 새 거리:");//debuggggg 직렬. 인쇄(거리); Serial.print(" 이전 거리:"); Serial.print(auxDistance); Serial.print(" 갭 "); Serial.println(갭); Serial.print("새 거리2:");//debuggggg Serial.print(거리); Serial.print(" 이전 거리2:"); Serial.print(auxDistance); Serial.print(" GAP2 "); Serial.println(갭); Serial.println("\\\\\\\\\\\\\\\\\\\\\\");//debuggggg 지연(300); auxDistance=Distance;//다음 루프에 if() 값 저장 auxDistance2=Distance2;//다음 루프에 if() 값 저장 } Disturbance2=0;left=0;right=0;delay (1000);//오류를 피하기 위해 대기 } delay(300); auxDistance=Distance;//다음 루프에 if() 값 저장auxDistance2=Distance2;//다음 루프에 if() 값 저장}  

    즐거운 해킹입니다, 여러분!

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

    코드

    <울>
  • 버전 1, 단순 mp3 거리 트리거
  • 버전 2, Disturbance mp3 거리 트리거
  • 버전 3, 2개의 센서 포함, 방향 감지
  • 버전 1, 단순 mp3 거리 트리거Arduino
    이 코드 버전에서는 무언가가 50cm보다 가까워지면 mp3 오디오를 트리거합니다. 아주 큰 소리로 룸메이트를 놀라게 하는 데 사용했습니다.
    //code 재배열:Javier Muñoz 2016-01-10 [email protected]#include #define ARDUINO_RX 5//직렬 MP3 플레이어 모듈의 TX에 연결해야 합니다#define ARDUINO_TX 6//모듈의 RX에 연결#define trigPin 13//거리 모듈용#define echoPin 12SoftwareSerial mySerial(ARDUINO_RX, ARDUINO_TX);//초기화 직렬 프로토콜, TX 및 RX//////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////모든 데이터시트에 필요한 명령(http://geekmatic.in.ua/pdf/Catalex_MP3_board.pdf)static int8_t Send_buf[8] ={0};//MP3 플레이어는 8 int 문자열의 주문을 이해하지 못합니다 //0X7E FF 06 command 00 00 00 EF;(명령이 01인 경우 다음 곡 순서) #define NEXT_SONG 0X01 #define PREV_SONG 0X02 #define CMD_PLAY_W_INDEX 0X03 //DATA IS REQUIRED(곡 수)#define VOLUME_UP_ONE 0X04#define ME 0X06//DATA IS REQUIRED (볼륨 0에서 최대 30(0x1E)까지의 수)#define SET_DAC 0X17#define CMD_PLAY_WITHVOLUME 0X22 //데이터가 필요합니다 0x7E 06 22 00 xx yy EF;(xx 볼륨)(yy 수 )#define CMD_SEL_DEV 0X09 //저장 장치 선택, 데이터가 필요함 #define DEV_TF 0X02 //안녕하세요, 데이터가 필요합니다. #define CMD_PAUSE 0X0E //재생 일시 중지#define CMD_PLAY_WITHFOLDER 0X0F//DATA IS NEEDED, 0x7E 06 0F 00 01 02 EF;(\01\002xxxxxx.mp3#defineX16#FOLDER 디렉토리로 노래 재생 데이터가 필요합니다 0x7E 06 17 00 01 XX EF;(01 폴더 재생)(값 xx는 신경쓰지 않음)#define SET_CYCLEPLAY 0X19//데이터가 필요합니다 00 start; 01 닫기#define SET_DAC 0X17//데이터가 필요함 00 DAC OUTPUT 시작;01 DAC 출력 없음///////////////////////////// ////////////////////////////////////////////////////// ////void setup(){ Serial.begin(9600);//pcmySerial.begin(9600)에서 직렬 모니터용 직렬 통신 시작;//MP3delay(500)용 직렬 통신 시작;//Wait 칩 초기화가 완료되었습니다 sendCommand(CMD_SEL_DEV, DEV_TF);//TF 카드 지연 선택(200);//200mspinMode(trigPin, OUTPUT);pinMode(echoPin, INPUT);}void 루프(){ if(measureDistance( trigPin,echoPin)<50){sendCommand(CMD_PLAY_WITHFOLDER, 0X0203);//두 번째 폴더의 세 번째 노래 재생delay(1000);//오류 방지를 위해 대기}delay(300);}void sendCommand(int8_t command, int16_t dat ){ 지연(20); Send_buf[0] =0x7e; //시작 바이트 Send_buf[1] =0xff; //버전 Send_buf[2] =0x06; //시작 바이트와 끝 바이트가 없는 명령의 바이트 수 Send_buf[3] =command; // Send_buf[4] =0x00;//0x00 =피드백 없음, 0x01 =피드백 Send_buf[5] =(int8_t)(dat>> 8);//datah Send_buf[6] =(int8_t)(dat); //데이터 Send_buf[7] =0xef; // 종료 바이트 for(uint8_t i=0; i<8; i++)// { mySerial.write(Send_buf[i]);//시리얼 mp3로 비트 전송 Serial.print(Send_buf[i],HEX);/ /PC의 직렬 모니터로 비트 전송 } Serial.println();}long measureDistance(int trigger,int echo){ 긴 지속 시간, 거리; digitalWrite(트리거, LOW); //펄스 ___|---|___ delayMicroseconds(2); digitalWrite(트리거, 높음); 지연마이크로초(10); digitalWrite(트리거, LOW); 지속 시간 =pulseIn(에코, 높음); 거리 =(지속시간/2) / 29.1; Serial.println("거리:"); Serial.println(거리); 반환 거리;}
    버전 2, Disturbance mp3 거리 트리거Arduino
    이 버전은 거리에 신경 쓰지 않고 판독값 간의 차이만 감지합니다.
    //Javier Muñoz에 의해 재배열된 코드 2016년 10월 11일 [email protected]#include #define ARDUINO_RX 5// 직렬 MP3 플레이어 모듈의 TX에 연결해야 합니다#define ARDUINO_TX 6//모듈의 RX에 연결#define trigPin 13//거리 모듈용#define echoPin 12SoftwareSerial mySerial(ARDUINO_RX, ARDUINO_TX);//직렬 프로토콜 초기화, 핀이 TX 및 RX/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////에 필요한 모든 명령 데이터시트(http://geekmatic.in.ua/pdf/Catalex_MP3_board.pdf)static int8_t Send_buf[8] ={0};//MP3 플레이어는 8 int 문자열의 주문을 이해하지 못합니다 //0X7E FF 06 명령 00 00 CMD_PLAY_W_INDEX 0X03 //데이터가 필요합니다(노래 수)#define VOLUME_UP_ONE 0X04#define ONEfine VOLUME_DOWN_5 _SET_VOLUME 0X06//DATA IS REQUIRED (볼륨 0에서 최대 30(0x1E)까지의 수)#define SET_DAC 0X17#define CMD_PLAY_WITHVOLUME 0X22 //데이터가 필요합니다 0x7E 06 22 00 xx yy)(yy 볼륨의 수 )#define CMD_SEL_DEV 0X09 //저장 장치 선택, 데이터가 필요함 #define DEV_TF 0X02 //안녕하세요, 데이터가 필요합니다. #define CMD_PAUSE 0X0E //재생 일시 중지#define CMD_PLAY_WITHFOLDER 0X0F//DATA IS NEEDED, 0x7E 06 0F 00 01 02 EF;(\01\002xxxxxx.mp3#defineX16#FOLDER 디렉토리로 노래 재생 데이터가 필요합니다 0x7E 06 17 00 01 XX EF;(01 폴더 재생)(값 xx는 신경쓰지 않음)#define SET_CYCLEPLAY 0X19//데이터가 필요합니다 00 start; 01 닫기#define SET_DAC 0X17//데이터가 필요함 00 DAC OUTPUT 시작;01 DAC 출력 없음///////////////////////////// ////////////////////////////////////////////////////// ////int firstTime=0;//루프 외부에서 firstTime을 선언해야 합니다. long Distance,auxDistance,gap=0;void setup(){ Serial.begin(9600);//직렬 모니터용 직렬 통신 시작 our pcmySerial.begin(9600);//MP3delay(500)에 대한 직렬 통신 시작;//칩 초기화가 완료되기를 기다립니다. sendCommand(CMD_SEL_DEV, DEV_TF);//TF 카드 지연 선택(200);//대기 200mspinMode(trigPin, OUTPUT);pinMode(echoPin, INPUT);}void loop() { Distance=measureDistance(trigPin,echoPin);//거리를 측정하고 storegap=abs(Distance-auxDistance);// 지금과의 차이를 계산 and last readingif(firstTime==0){//안정성을 위해 필요 thingsauxDistance=Distance;gap=0;//첫 번째 루프를 피하기 위해 노래를 재생한 후 처음에만 수행 malfuntcionfirstTime++; delay(1000);} if(gap>
    20){ //거리 변화가 20cmsendCommand(CMD_PLAY_WITHFOLDER, 0X0201);//두 번째 폴더의 첫 번째 노래를 재생합니다. (2000); } Serial.print("새 거리:");//debugggggSerial.print(Distance);Serial.print(" 이전 거리:");Serial.print(auxDistance);Serial.println(gap);delay(300); auxDistance=Distance;//다음 루프의 if() 값 저장} void sendCommand(int8_t command, int16_t dat){ if (command==CMD_PLAY_WITHFOLDER 또는 command==CMD_PLAY_WITHVOLUME){Serial.print("PLAYING SONG, 머리를 약간 움직여 큰 효과를 보세요.");} delay(20); Send_buf[0] =0x7e; //시작 바이트 Send_buf[1] =0xff; //버전 Send_buf[2] =0x06; //시작 바이트와 끝 바이트가 없는 명령의 바이트 수 Send_buf[3] =command; // Send_buf[4] =0x00;//0x00 =피드백 없음, 0x01 =피드백 Send_buf[5] =(int8_t)(dat>> 8);//datah Send_buf[6] =(int8_t)(dat); //데이터 Send_buf[7] =0xef; // 종료 바이트 for(uint8_t i=0; i<8; i++)// { mySerial.write(Send_buf[i]);//비트를 직렬 mp3로 전송 } Serial.println();}long measureDistance(int trigger ,int echo){ 긴 지속 시간, 거리; digitalWrite(트리거, LOW); //펄스 ___|---|___ delayMicroseconds(2); digitalWrite(트리거, 높음); 지연마이크로초(10); digitalWrite(트리거, LOW); 지속 시간 =pulseIn(에코, 높음); 거리 =(지속시간/2) / 29.1;// Serial.println("거리:");// Serial.println(거리); 반환 거리;}
    버전 3, 센서 2개, 방향 감지Arduino
    이제 두 개의 거리 센서가 있습니다.
    //Javier Muñoz에 의해 재배열된 코드 10/11/2016 [email protected]#include #define ARDUINO_RX 5//직렬 MP3 플레이어의 TX에 연결해야 합니다. module#define ARDUINO_TX 6//모듈의 RX에 연결#define trigPin 13//첫 번째 거리 모듈용 #define echoPin 12 #define trigPin2 10//두 번째 거리 모듈용 #define echoPin2 9#define trigPin 13//for the distance module#define echoPin 12SoftwareSerial mySerial(ARDUINO_RX, ARDUINO_TX);//직렬 프로토콜을 초기화하고 myserial에 핀이 TX와 RX임을 알려줍니다//////////////////// ////////////////////////////////////////////////////// ///////////////데이터시트에 필요한 모든 명령(http://geekmatic.in.ua/pdf/Catalex_MP3_board.pdf)static int8_t Send_buf[8] ={0};//MP3 플레이어는 8 int 문자열의 주문을 해석합니다. //0X7E FF 06 command 00 00 00 EF;(if command =01 다음 곡 순서) #define NEXT_SONG 0X01 #define PREV_SONG 0X02 #define CMD_PLAY_W_INDEX IS REQUIRED //(곡 수)#define VOLUME_UP_ONE 0X04#define VOLUME_DOWN_ONE 0X05#define CMD_SET_VOLUME 0X06//DATA IS REQUIRED (볼륨 수는 0에서 30(0x1E)까지 60x7이 필요함)#define SET_DAC 0X17#define2 CMD_ 22 00 xx yy EF;(xx 볼륨)(yy 노래 수)#define CMD_SEL_DEV 0X09 //저장 장치 선택, 데이터가 필요합니다. #define DEV_TF 0X02 //HELLO, 데이터가 필요합니다. define CMD_RESET 0X0C//CHIP RESET#define CMD_PLAY 0X0D //RESUME PLAYBACK#define CMD_PAUSE 0X0E //재생이 일시 중지됨#define CMD_PLAY_WITHFOLDER 0X0F//DATA IS NEEDED, 0x7E 06 0 1F 020 디렉토리가 있는 노래 재생 01\002xxxxxx.mp3#define STOP_PLAY 0X16#define PLAY_FOLDER 0X17// 데이터가 필요합니다. 0x7E 06 17 00 01 XX EF;(01 폴더 재생)(값 xx는 신경쓰지 않음)#define 시작 SET_CYCLEPLAY/0X19/데이터가 필요합니다.; 01 닫기#define SET_DAC 0X17//데이터가 필요함 00 DAC OUTPUT 시작;01 DAC 출력 없음///////////////////////////// ////////////////////////////////////////////////////// ////int firstTime=0;// 루프 외부에서 firstTime을 선언해야 합니다. long Distance,auxDistance,gap=0;long Distance2,auxDistance2,gap2=0;void setup(){ Serial.begin(9600);/ /PCmySerial.begin(9600)에서 직렬 모니터용 직렬 통신 시작;//MP3delay(500)용 직렬 통신 시작;//칩 초기화가 완료될 때까지 기다리십시오. sendCommand(CMD_SEL_DEV, DEV_TF);//TF 카드 선택 delay(200);//200mspinMode(trigPin, OUTPUT)를 기다립니다. 핀모드(에코핀, 입력); 핀모드(trigPin2, 출력); 핀모드(echoPin2, INPUT); }void loop() { Distance=measureDistance(trigPin,echoPin);//거리1 측정 및 storeDistance2=measureDistance(trigPin2,echoPin2);//거리2 측정과 storegap=abs(Distance-auxDistance);// 현재와의 차이 계산 및 마지막 판독값gap2=abs(Distance2-auxDistance2);// 현재와 마지막 판독값 간의 차이 계산if(firstTime==0){//안정성을 위해 필요 thingsauxDistance=Distance;auxDistance2=Distance2;gap=0;gap2=0;/ /첫 번째 루프를 피하기 위해 노래를 재생한 후 처음에만 수행 malfuntcionfirstTime++; delay(2000);} if(gap>
    20 and gap2<20 ){ //거리 편차가 20cms인 경우sendCommand(CMD_PLAY_WITHFOLDER, 0X0201);//두 번째 폴더의 첫 번째 곡 재생 firstTime=0;//오류 방지!! 우리는 errorsSerial.println("RIGHT MOVEMENT DETECTED");delay(2000); } if(gap2>20 and gap<20){ //거리 변화가 20cmsendCommand(CMD_PLAY_WITHFOLDER, 0X0202);//두 번째 폴더의 두 번째 노래를 재생합니다. println("왼쪽 움직임이 감지됨");delay(2000); } Serial.println("\\\\\\\\\\\\\\\\\\\\");//debugggggSerial.print(" 새 거리:");//debugggggSerial.print( 거리);Serial.print(" 이전 거리:");Serial.print(auxDistance);Serial.print(" GAP ");Serial.println(gap);Serial.print("새 거리2:");// debuggggggSerial.print(Distance);Serial.print("이전 거리2:");Serial.print(auxDistance);Serial.print(" GAP2 ");Serial.println(gap);Serial.println("\\\\ \\\\\\\\\\\\\\\\\\");//debugggggdelay(300); auxDistance=Distance; // 다음 루프에 if() 값을 저장합니다.auxDistance2=Distance2; // 다음 루프에 if() 값을 저장합니다.} void sendCommand(int8_t command, int16_t dat){ if (command==CMD_PLAY_WITHFOLDER 또는 command==CMD_PLAY_WITHVOLUME){Serial.print("노래를 재생하고 머리를 약간 움직여 큰 효과를 냅니다.");} delay(20); Send_buf[0] =0x7e; //시작 바이트 Send_buf[1] =0xff; //버전 Send_buf[2] =0x06; //시작 바이트와 끝 바이트가 없는 명령의 바이트 수 Send_buf[3] =command; // Send_buf[4] =0x00;//0x00 =피드백 없음, 0x01 =피드백 Send_buf[5] =(int8_t)(dat>> 8);//datah Send_buf[6] =(int8_t)(dat); //데이터 Send_buf[7] =0xef; // 종료 바이트 for(uint8_t i=0; i<8; i++)// { mySerial.write(Send_buf[i]);//비트를 직렬 mp3로 전송 } Serial.println();}long measureDistance(int trigger ,int echo){ 긴 지속 시간, 거리; digitalWrite(트리거, LOW); //펄스 ___|---|___ delayMicroseconds(2); digitalWrite(트리거, 높음); 지연마이크로초(10); digitalWrite(트리거, LOW); 지속 시간 =pulseIn(에코, 높음); 거리 =(기간/2) / 29.1;// Serial.println("거리:");// Serial.println(거리); 반환 거리;}

    회로도

    단 하나의 거리 센서 두 개의 거리 센서, 핀 10,9에 다른 센서를 추가하기만 하면 됩니다.

    제조공정

    1. 가정에 무선 센서 네트워크 구축
    2. K30 센서로 CO2 모니터링
    3. 키는 얼마입니까?
    4. Arduino 또는 ESP8266이 있는 정전 용량 지문 센서
    5. Arduino에서 오디오 재생
    6. Arduino - 웹 기반 MP3 플레이어
    7. Arduino 클라우드 센서 타워
    8. 모션 센서 물총
    9. Arduino - 직렬을 통해 웹에 온도 보내기
    10. Arduino가 있는 미니 레이더