import c2_ulx3s_test from examples
[Arduino] / AD9850 / AD9850.ino
index a1309b2..074ac02 100644 (file)
@@ -7,14 +7,15 @@
  * Use freely
  */
  
-#define W_CLK 8       // Pin 8 - connect to AD9850 module word load clock pin (CLK)
-#define FQ_UD 9       // Pin 9 - connect to freq update pin (FQ)
-#define DATA 10       // Pin 10 - connect to serial data load pin (DATA)
-#define RESET 11      // Pin 11 - connect to reset pin (RST).
+#define W_CLK 7        // connect to AD9850 module word load clock pin (CLK)
+#define FQ_UD 6        // connect to freq update pin (FQ)
+#define DATA  5        // connect to serial data load pin (DATA)
+#define RESET 4        // connect to reset pin (RST).
 
-#define encoder_a 3
-#define encoder_b 4
-#define encoder_click 5
+#define ENCODER 0
+#define encoder_a 7
+#define encoder_b 8
+#define encoder_click 9
  
 #define pulseHigh(pin) {digitalWrite(pin, HIGH); digitalWrite(pin, LOW); }
 
@@ -56,10 +57,12 @@ void setup() {
   pulseHigh(W_CLK);
   pulseHigh(FQ_UD);  // this pulse enables serial mode - Datasheet page 12 figure 10
 
+#if ENCODER
   // encoder
   pinMode(encoder_a, INPUT);
   pinMode(encoder_b, INPUT);
   pinMode(encoder_click, INPUT);
+#endif
   
   Serial.begin(9600);
   sendFrequency(user_freq);
@@ -69,19 +72,43 @@ double freq_step = 1.e5; // 0.1 MHz
 int encoder_state = LOW;
 int encoder_last  = LOW;
 
+double new_freq = 0;
+
 void loop() {
   if (Serial.available()) {
      int inByte = Serial.read();
      Serial.println(inByte, DEC);
-     if (inByte == 43 || inByte == 61) { // + or =
+     if (inByte == 43 || inByte == 61 or inByte == 67) { // + = left
        user_freq += freq_step;
        sendFrequency(user_freq);
-     } else if ( inByte == 45 ) {
+     } else if ( inByte == 45 || inByte == 68) { // - right
        user_freq -= freq_step; 
        sendFrequency(user_freq);
+     } else if ( inByte == 65 ) { // up
+       user_freq -= freq_step * 10; 
+       sendFrequency(user_freq);
+     } else if ( inByte == 66 ) { // down
+       user_freq += freq_step * 10; 
+       sendFrequency(user_freq);
+     } else if ( inByte >= 48 && inByte <= 57) { // 0 .. 9
+       user_freq = ( inByte - 48 ) * 1.e6; 
+       sendFrequency(user_freq);
+     } else if ( inByte == 13 ) { // enter
+       Serial.print("enter Mhz = ");
+       while (Serial.available() == 0);
+       new_freq = Serial.parseFloat();
+       while (Serial.available() > 0) { Serial.read(); } // suck enter and just from partFloat
+       Serial.println();
+       if ( new_freq == 0 ) {
+          Serial.println("# ignored");
+       } else {
+           user_freq = new_freq * 1.e6;
+           sendFrequency(user_freq);
+       }
      }
   }
 
+#if ENCODER
   encoder_state = digitalRead(encoder_a);
   if ((encoder_last == LOW) && (encoder_state == HIGH)) {
     if (digitalRead(encoder_b) == LOW) {
@@ -94,5 +121,6 @@ void loop() {
   encoder_last = encoder_state;
   
   if(digitalRead(encoder_click) == LOW) sendFrequency( 1.e6 ); // reset to 1MHz
+#endif
 
 }