Moved whole Arduino sketchbook to GIT (nothing interesting :-)
[mirrors/Programs.git] / arduino / dtfm / DTFM.pde
diff --git a/arduino/dtfm/DTFM.pde b/arduino/dtfm/DTFM.pde
new file mode 100755 (executable)
index 0000000..0dae414
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ * DTFM
+ * <~~Harvie 2oo8
+ */
+/* 
+DTMF keypad frequencies (with sound clips)
+      1209 Hz 1336 Hz 1477 Hz 1633 Hz
+697 Hz         1       2       3       A
+770 Hz         4       5       6       B
+852 Hz         7       8       9       C
+941 Hz         *       0       #       D
+
+DTMF event frequencies
+Event            Low frequency High frequency
+Busy signal            480 Hz  620 Hz
+Dial tone              350 Hz  440 Hz
+Ringback tone (US)     440 Hz  480 Hz
+*/
+
+#define dtfmpin 13
+
+void dtfm_tone(char outpin, float low, float high) {
+  int duration = 300;
+  char pin;
+  long pos, startmillis = millis();
+  while((pos = millis()-startmillis) <= duration) {
+    pin = false;
+    if( sin((pos*low)/1000*(2*PI)) > 0) pin = true;
+    if( sin((pos*high)/1000*(2*PI)) > 0) pin = true;
+    
+    if(pin) digitalWrite(outpin, HIGH); else digitalWrite(outpin, LOW);
+  }
+}
+
+int dtfm_key(char outpin, char key) {
+  switch (key) {
+    case '1': dtfm_tone(outpin, 697, 1209); break;
+    case '2': dtfm_tone(outpin, 697, 1336); break;
+    case '3': dtfm_tone(outpin, 697, 1477); break;
+    
+    case '4': dtfm_tone(outpin, 770, 1209); break;
+    case '5': dtfm_tone(outpin, 770, 1336); break;
+    case '6': dtfm_tone(outpin, 770, 1477); break;
+    
+    case '7': dtfm_tone(outpin, 852, 1209); break;
+    case '8': dtfm_tone(outpin, 852, 1336); break;
+    case '9': dtfm_tone(outpin, 852, 1477); break;
+    
+    case '*': dtfm_tone(outpin, 941, 1209); break;
+    case '0': dtfm_tone(outpin, 941, 1336); break;
+    case '#': dtfm_tone(outpin, 941, 1477); break;
+                               
+    default: return 0;
+  }
+  return 1;
+}
+
+void dtfm_dial(char outpin, char *keys) {
+  for(char i=0;keys[i]!=0;i++) { dtfm_key(outpin, keys[i]); delay(100); }
+}
+
+void setup()                    // run once, when the sketch starts
+{
+  pinMode(dtfmpin, OUTPUT);      // sets the digital pin as output
+  //dtfm_dial(dtfmpin, "739136794");
+  dtfm_tone(dtfmpin, 1, 10);
+}
+
+void loop()                     // run over and over again
+{
+delay(10000);
+}
This page took 0.130744 seconds and 4 git commands to generate.