9833 칩을 이용한 함수발생기 제작

From Dr.Ho's Wiki
Jump to navigation Jump to search

AD 9833 칩을 위한 라이브러리를 설치하도록 합니다.

회로도

아두이노는 다음의 자료를 참고하여 회로를 구성하였습니다.

2023-06-14 14-23-50.jpg

코드는 다음과 같습니다.

  1. include <AD9833.h> // Include the library
  1. define FNC_PIN 10 // Can be any digital IO pin
  2. define WAVE_PIN 7
  3. define FREQ_PIN 8

int Wave_Mode = 0; float FREQ =300.0;

AD9833 gen(FNC_PIN); // Defaults to 25MHz internal reference frequency

void setup() {

   gen.Begin();              
   gen.ApplySignal(TRIANGLE_WAVE,REG0,FREQ);  
   gen.EnableOutput(true);   
   Serial.begin(115200);
   pinMode(WAVE_PIN,INPUT);
   pinMode(FREQ_PIN,INPUT);

}

void loop() {

 //Serial.println(analogRead(A0));
 int buttonState = digitalRead(WAVE_PIN);
 int buttonState1 = digitalRead(FREQ_PIN);
 Serial.print(buttonState);
 Serial.println(buttonState1);
 Serial.print(Wave_Mode);
 if(buttonState == HIGH){
   Wave_Mode++;
   delay(10);
 }
 if(buttonState1 == HIGH){
   FREQ =FREQ-10.0;
   if(FREQ<10) FREQ =300.0;
   delay(10);
 }
 Serial.println(FREQ);
 if(Wave_Mode>3) Wave_Mode=0;
 else if(Wave_Mode==0) gen.ApplySignal(SINE_WAVE,REG0,FREQ); 
 else if(Wave_Mode==1) gen.ApplySignal(TRIANGLE_WAVE,REG0,FREQ);
 else if(Wave_Mode==2) gen.ApplySignal(SQUARE_WAVE,REG0,FREQ);
 else gen.ApplySignal(HALF_SQUARE_WAVE,REG0,FREQ);
delay(100);

}

7,8 번의 입력이 버튼의 입력을 받아 파형을 바꾸거나 주파수를 순차적으로 바꾸도록 만들었습니다.