제조공정
| × | 1 | ||||
| × | 10 | ||||
| × | 1 | ||||
| × | 20 |
|
선택할 수 있는 선택 항목이 있는 학기 프로젝트 목록을 살펴보고 있을 때 CM 8870 IC를 DTMF 디코더로 사용하고 인코딩된 바이너리 데이터가 Arduino에 제공되어 왼쪽 오른쪽 및 앞으로 뒤로 작업을 수행하는 DTMF 제어 자동차를 보았습니다. 주요 부분인 DTMF 디코더 기능은 외부 IC를 사용했는데 통합하기가 어려웠고 회로의 IC를 일부 추가 코드로 대체할 수 있는 코드나 라이브러리를 찾다가 만족스러운 솔루션을 찾지 못했습니다. . 그러나 단위 시간당 펄스 수와 주어진 톤 신호의 진폭 기여도를 계산하여 톤에 특정 주파수가 있는지 여부를 알 수 있는 Goertzel 알고리즘(Goertzel.h)을 기반으로 한 라이브러리입니다.
기본 예제 코드를 기반으로 사용하고 톤에서 현재 지배적인 DTMF 주파수를 감지할 수 있는 코드를 작성하고 이를 디코딩하여 전화 통화 중에 반대편에서 눌려진 번호를 제공할 수 있습니다.
섹션> <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">/* 이 코드는 아날로그 핀 A0에서 16자 DTMF 코드를 감지하기 위한 DTMF 디코더의 기본 구현이며 모든 상위 및 DTMF 매트릭스의 낮은 톤을 제거하고 숫자 0-9에 해당하는 디지털 비트를 켜고 나머지 문자를 직렬로 인쇄하여 해당 숫자를 제공합니다. 이 작업은 전적으로 http://www.embedded.com/design/embedded/4024443/The-Goertzel-Algorithm에 있는 Kevin Banks 코드를 기반으로 하므로 그의 일반적인 구현 및 분석에 대해 전적으로 감사드립니다. Goertzel 알고리즘은 오랫동안 사용되어 왔으므로 전체 설명은 http://en.wikipedia.org/wiki/Goertzel_algorithm을 참조하십시오. 모든 주파수의 발생을 표시하지 않고 단일 주파수만 검색하기 때문에 낮은 오버히드로 빠르기 때문에 고속 푸리에 변환의 대안으로 DTMF 톤 감지에서 자주 사용됩니다. * 이 코드는 "Mian Mohammad Shoaib"에 의해 작성/수정되었으며 공개 도메인으로 공개되었습니다. * 코드와 관련된 쿼리는 언제든지 [email protected]으로 문의하십시오. */#include섹션>int sensorPin =A0; 상수 정수 N =100; // 코드가 걸릴 샘플 수입니다. y0u는 감도를 변경할 수 있으며 크면 arduinoconst를 느리게 할 수 있습니다. float threshold =2000; //고려할 최소 톤 진폭은 더 민감하게 변경할 수 있습니다.const float sampling_freq =8900; //최대 감지 가능한 주파수는 샘플링 속도/2이며 16Mhz의 arduino uno는 최대 8900Hz의 샘플링을 지원할 수 있습니다.float x_frequencies[4]; // 감지할 x 및 y축 주파수를 유지하기 위해 두 개의 배열을 만듭니다.float y_frequency[4];void setup(){ pinMode(13, OUTPUT); // 톤이 감지되면 표시하기 위해 깜박임을 초기화합니다. pinMode(2, OUTPUT); // 2에서 12까지의 dtmf 출력을 표시하기 위해 10개의 핀을 출력으로 초기화합니다. 나머지는 모니터에 역직렬 방식으로 인쇄됩니다. pinMode(3, OUTPUT); 핀모드(4, 출력); 핀모드(5, 출력); 핀모드(6, 출력); 핀모드(7, 출력); 핀모드(8, 출력); 핀모드(9, 출력); 핀모드(10, 출력); 핀모드(11, 출력); 핀모드(12, 출력); Serial.begin(9600); x_frequencies[0]=1209; //행 및 콜론 번호와 함께 x 및 y 축 톤 주파수로 배열을 초기화합니다.x_frequencies[1]=1336;x_frequencies[2]=1477;x_frequencies[3]=1633;y_frequencies[0]=697;y_frequencies[ 1]=770;y_freqencies[2]=852;y_frequencies[3]=941;}bool detect_tone(float freq){Goertzel goertzel =Goertzel(freq, N, sampling_freq); // 주어진 샘플링 주파수 샘플 및 대상 주파수로 라이브러리 함수 초기화 goertzel.sample(sensorPin); // n개의 샘플을 취합니다. float 크기 =goertzel.detect(); // target_freq를 확인합니다. if(magnitude>threshold){ //적중이 잘못되었거나 적중이 없으면 임계값을 조정합니다. digitalWrite(13,HIGH); //펄스가 감지되면 13으로 깜박임 delay(250); 디지털 쓰기(13,LOW); Serial.print(주파수); Serial.print("\n"); true를 반환합니다. } else return false;}void print_number(int row,int column){int number=0;if(row==0){ //찾은 행과 열에 해당하는 숫자 찾기 if(column==0) number=1; else if(열==1) 숫자=2; else if(열==2) 숫자=3; else if(열==3) 숫자=10; }else if(행==1){ if(열==0) 숫자=4; else if(열==1) 숫자=5; else if(열==2) 숫자=6; else if(열==3) 숫자=11; }else if(행==2){ if(열==0) 숫자=7; else if(열==1) 숫자=8; else if(열==2) 숫자=9; else if(열==3) 숫자=12; }else if(행==3){ if(열==0) 숫자=14; else if(열==1) 숫자=0; else if(열==2) 숫자=15; else if(열==3) 숫자=13; }if(숫자 <10){digitalWrite((숫자+2),HIGH);Serial.print(숫자);}else if(숫자 ==10)Serial.print('A');else if(숫자 ==11)Serial.print('B');else if(숫자 ==12)Serial.print('C');else if(숫자 ==13)Serial.print('D');else if(숫자 ==14)Serial.print('*');else if(숫자 ==15)Serial.print('#');Serial.print("\n");delay(800);for(int i=2;i<=12;i++){ digitalWrite(i,LOW);}}void 루프(){int column=0,row=0;int i=0;while(1){ if(detect_tone(x_frequencies[i]) ) ==참){ 열 =나; 부서지다; } i++;if(i==4)i=0;}i=0;while(1){if(detect_tone(y_frequencies[i]) ==true){ 행 =i; 부서지다; } i++;if(i==4)i=0;}print_number(행, 열);}
제조공정
Arduino UNO를 사용하여 가변 전원 공급 장치를 만드는 방법은 무엇입니까? 전원 공급 장치는 전자 및 전기 장비 및 회로에 대한 기본적이고 필수적인 요구 사항입니다. 다양한 유형의 회로 및 장비가 있으므로 전원 공급 장치의 요구 사항은 전자 회로마다 다릅니다. 예를 들어 Wi-Fi 모듈, 릴레이, 모터 등은 서로 다른 전압이 필요합니다. 시장에서 우리는 모든 전자 제품에 대해 다른 전원 공급 장치를 얻지 못하므로 다양한 방법으로 고유한 특정 전원 공급 장치를 생성합니다. 이에 대한 간단한 해결책은 배터리를 사용하는 것입니다
초기 홍수 모니터링 시스템 – 회로 및 프로젝트 소스 코드 개발도상국과 비개발도상국 모두에서 홍수는 인명과 동물의 생명과 재산의 손실을 초래하는 대규모 자연 재해입니다. 바다의 지진, 허리케인, 강우 및 기타 자연 재해로 인한 홍수가 매년 세계 여러 지역에서 발생합니다. 강우 시 다양한 지리적 지역의 관리되지 않는 배수 시스템으로 인해 홍수가 발생하고 많은 인명 피해가 발생합니다. 홍수에 대한 조기 경보를 제공할 수 있는 시스템이 있으면 사람들의 생명을 구할 수 있습니다. 기술을 사용하여 수위 상승을 감지하고 사람들에게 미리