// play monophon sounds on the tesla coil // // receives uint16s from serial which specify the tone length in microseconds (0 for silence) int pin1 = 4; int pin2 = 5; unsigned int tonelength = 0; float high_factor = .2; void setup () { pinMode(pin1, OUTPUT); pinMode(pin2, OUTPUT); Serial.begin(9600); } void loop() { while ( true ) { if ( Serial.available() > 1 ) { tonelength = Serial.read() << 8; tonelength |= Serial.read(); Serial.print("New tonelength: "); Serial.println(tonelength); } if ( tonelength == 0 ) delayMicroseconds(10); else beep(tonelength); } } void beep(long usecs) { high(); delayMicroseconds(usecs*high_factor); low(); delayMicroseconds(usecs*(1-high_factor)); } void high() { digitalWrite(pin1, HIGH); digitalWrite(pin2, HIGH); } void low() { digitalWrite(pin1, LOW); digitalWrite(pin2, LOW); } long freq (double f) { // convert frequency to tonelength return 1000000/f; }