/*Copy the code below and up load it to the I/O Board then put some kind of Antenna into PIN 8...PIN 8!!!! Then tune to AM 1337kHz. Optional:LED in pin 13 to see what is broadcasting, also a protoshield to add multiple antenna's. Lol that code will do morse code saying "I like ice cream"; *********THE CODE**************************************************** */ //start of code //WWW.JONNYBLANCH.WEBS.COM long millisAtStart = 0; long millisAtEnd = 0; const long period_broadcast = 8; //period of shortest broadcast (256 port changes) #define LENGTH_DIT 64 //number of period_broadcasts in one 'dit', //all other lengths are scaled from this //Broadcasts on 1337 kHz const int length_dit = LENGTH_DIT; //number of periods for dit const int pause_dit = LENGTH_DIT; //pause after dit const int length_dah = 3 * LENGTH_DIT; //number of persots for dah const int pause_dah = LENGTH_DIT; //pause after dah const int length_pause = 7 * LENGTH_DIT; //pause between words void dit(void); void dah(void); void pause(void); void broadcast(int N_cycles); void dontbroadcast(int N_cycles); // ### INC ### Increment Register (reg = reg + 1) #define ASM_INC(reg) asm volatile ("inc %0" : "=r" (reg) : "0" (reg)) void setup() { Serial.begin(9600); DDRB = 0xFF; //Port B all outputs //Do one dit to determine approximate frequency millisAtStart = millis(); dit(); millisAtEnd = millis(); Serial.print(millisAtEnd - millisAtStart); Serial.print(" "); Serial.print((length_dit + pause_dit) * period_broadcast * 256 / (millisAtEnd - millisAtStart) / 2); Serial.print("kHz "); Serial.println(); } void loop() { dit(); dit(); delay(500); dit(); dah(); dit(); dit(); delay(250); dit(); dit(); delay(250); dah(); dit(); dah(); delay(250); dit(); delay(500); dit(); dit(); delay(250); dah(); dit(); dah(); dit(); delay(250); dit(); delay(500); dah(); dit(); dah(); dit(); delay(250); dit(); dah(); dit(); delay(250); dit(); delay(250); dit(); dah(); delay(250); dah(); dah(); delay(2000); } void dit(void) { for (int i = 0; i < length_dit; i++) { broadcast(period_broadcast); } for (int i = 0; i < pause_dit; i++) { dontbroadcast(period_broadcast); } } void dah(void) { for (int i = 0; i < length_dah; i++) { broadcast(period_broadcast); } for (int i = 0; i < pause_dah; i++) { dontbroadcast(period_broadcast); } } void pause(void) { for (int i = 0; i < length_pause; i++) { dontbroadcast(period_broadcast); } } void broadcast(int N_cycles) { unsigned int portvalue; for (int i = 0; i < N_cycles; i++) { portvalue = 0; do { PORTB = portvalue; ASM_INC(portvalue); } while (portvalue < 255); } } void dontbroadcast(int N_cycles) { unsigned int portvalue; PORTB = 0x00; for (int i = 0; i < N_cycles; i++) { portvalue = 0; do { ASM_INC(portvalue); //add some assembly No OPerations to keep timing the same asm volatile ("NOP"); } while (portvalue < 255); } } //end of code