/* Version 1 10 February,2015 ND6T This source file is under General Public License version 3.0 Control of AD9850 DDS board by Arduino Uno R3 using minimal leads and serial USB control */ //Prep for AD9850 #define CLK 10 // Pin 10 : AD9850 clock pin #define FQ 11 // Pin 11 : freq update pin #define DAT 12 // Pin 12 : DATA pin #define RST 13 // Pin 13 - RST #define pulse(pin) {digitalWrite(pin, HIGH); digitalWrite(pin, LOW); } void setup() { // Initialize serial communication at 9600 bits per second: Serial.begin(9600); pinMode(FQ, OUTPUT); pinMode(CLK, OUTPUT); pinMode(DAT, OUTPUT); pinMode(RST, OUTPUT); pulse(RST); pulse(CLK); pulse(FQ); } void loop() { // Read the input: if (Serial.available() > 0) { float frequency= Serial.parseFloat(); //Confirm input: Serial.print("Output frequency= "); Serial.print(frequency); Serial.println(" Hertz"); // Send it to the AD9850 output(frequency); } } void output(float frequency) { long freq = frequency * pow (2,32) /125000000; // Reference clock i for (int b=0; b<4; b++, freq >>= 8) shiftOut(DAT,CLK,LSBFIRST,freq); shiftOut(DAT,CLK,LSBFIRST,0); pulse(FQ); }