BASIC4MCU | 질문게시판 | 아두이노 dac 연결
페이지 정보
작성자 kodory 작성일2022-05-19 16:28 조회22,071회 댓글7건본문
막막해서 글 올립니다. 마이크를 통해 들어온 소리를 dac모듈(mcp4725)를 거쳐 스피커로 다시 나가는 것을 설계해봤습니다. 관련예제를 찾아봤는데 안나와서, 이것이 실현가능한지 여부와 실현가능할 경우 어떤 것을 참조해가면서 코드를 짜야하는지 궁금합니다.
댓글 7
조회수 22,071master님의 댓글
master 작성일
mcp4725는 12비트 DAC입니다.
아두이노 ADC는 10비트죠
mcp4725 예제를 공부해서 만들면 됩니다.
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=smserial&logNo=221566068824
이 예제를 수정해보죠
루프 함수만 변경합니다.
void loop(){
val=analogRead(A0);
val<<=2; // 10비트를 쉬프트시켜서 12비트로 만듬
dac_write(val);
}
샘플링 주기가 느리지만 않으면 됩니다.
kodory님의 댓글
kodory
연산자 오류떠서 float val를 int val 로 바꿨는데 괜찮을까요?? int로 바꿔서 오류가 없어지긴했습니다.
master님의 댓글
master
상기 댓글의 루프문 내용은 float 보다 int가 더 낫습니다.
kodory님의 댓글
kodory
연결해봤더니 소리를 입력하든 안하든 스피커에서 삐소리만 납니다. 이건 선 연결을 잘못해서 그런건가요??
master님의 댓글
master
소리를 입력하지 않아도 일정한 크기의 입력이 들어온다는 뜻이죠
오실로스코프로 파형을 체크하세요
kodory님의 댓글
kodory
val<<2 로 안쓰고, val<<=2 로 쓴 이유 알 수 있을까요??
master님의 댓글
master 작성일
val<<2; 로 안쓰고, <-- 문법 오류납니다.
val<<=2; // val=val<<2; 이 문장을 줄여서 표현한 것입니다.
비트연산으로 10비트를 12비트로 만든 것인데요
산술연산으로 만들면 아래와 같습니다.
val=val*4;
val*=4; // 이렇게 줄여서 쓸 수도 있죠