// I/O Pins
int ledPin =  7;    // red led connected to digital pin 6
int txPin = 3; // radio tx line
int radioPin = 4; //connected to transistor and Relay to control resistor heaters on gps.
 
int loopcount = 0, cycle = 0;
 
//Tx Stuff
char txbuf[12];
 
struct t_mtab { char c, pat; } ;
 
struct t_mtab morsetab[] = {
  	{'.', 106},
	{',', 115},
	{'?', 76},
	{'/', 41},
        {'-', 97},
	{'A', 6},
	{'B', 17},
	{'C', 21},
	{'D', 9},
	{'E', 2},
	{'F', 20},
	{'G', 11},
	{'H', 16},
	{'I', 4},
	{'J', 30},
	{'K', 13},
	{'L', 18},
	{'M', 7},
	{'N', 5},
	{'O', 15},
	{'P', 22},
	{'Q', 27},
	{'R', 10},
	{'S', 8},
	{'T', 3},
	{'U', 12},
	{'V', 24},
	{'W', 14},
	{'X', 25},
	{'Y', 29},
	{'Z', 19},
	{'1', 62},
	{'2', 60},
	{'3', 56},
	{'4', 48},
	{'5', 32},
	{'6', 33},
	{'7', 35},
	{'8', 39},
	{'9', 47},
	{'0', 63}
} ;
#define N_MORSE  (sizeof(morsetab)/sizeof(morsetab[0]))
 
#define SPEED  (15)
#define DOTLEN  (1200/SPEED)
#define DASHLEN  (3*(1200/SPEED))
 
void
dash()
{
  digitalWrite(ledPin, HIGH) ;
  digitalWrite(txPin, HIGH) ;
  delay(DASHLEN);
  digitalWrite(ledPin, LOW) ;
  digitalWrite(txPin, LOW) ;
  delay(DOTLEN) ;
}
 
void
dit()
{
  digitalWrite(ledPin, HIGH) ;
  digitalWrite(txPin, HIGH) ;
  delay(DOTLEN);
  digitalWrite(ledPin, LOW) ;
  digitalWrite(txPin, LOW) ;
  delay(DOTLEN);
}
 
void
send(char c)
{
  int i ;
  if (c == ' ') {
    Serial.print(c) ;
    delay(7*DOTLEN) ;
    return ;
  }
  for (i=0; i<N_MORSE; i++) {
    if (morsetab[i].c == c) {
      unsigned char p = morsetab[i].pat ;
      Serial.print(morsetab[i].c) ;
 
      while (p != 1) {
          if (p & 1)
            dash() ;
          else
            dit() ;
          p = p / 2 ;
      }
      delay(2*DOTLEN) ;
      return ;
    }
  }
  /* if we drop off the end, then we send a space */
  Serial.print("?") ;
}
 
void
sendmsg(char *str)
{
  while (*str)
    send(*str++) ;
  Serial.println("");
}
 
void setup()
{
  Serial.begin(4800);	     // start serial for output
  Serial.println("Starting..."); 
  pinMode(ledPin, OUTPUT);
  pinMode(txPin, OUTPUT);
  pinMode(radioPin, OUTPUT);
  digitalWrite(ledPin, HIGH);
  delay(2000);
  digitalWrite(ledPin,LOW);
}
 
void loop()
{  
  //Tx Stuff
  if(cycle >= 10) {
    digitalWrite(radioPin, HIGH);
    delay(1000);
    cycle = 0;
    loopcount++;
    if (loopcount > 3) {
      loopcount = 0;
    }
    switch(loopcount) {
    case 1:
      sendmsg("VVV,ATLAS,1/3,HIGH,ALTITUDE,BALLOON");
      break;
    case 2:
      sendmsg("VVV,ATLAS,2/3,RTTY,434.075,ASCII8,50,350,0,1.5");
      break;
    case 3:
      sendmsg("VVV,ATLAS,3/3,WWW.SPACENEAR.US/TRACKER/");
      break;
  }
  digitalWrite(radioPin, LOW);
  }
  else {
    cycle++;
  }
 
delay(5000);
}
 
missions/ballasthalo/ballasthalo4/beacon.txt · Last modified: 2010/01/05 22:11 by jamescoxon
 
Except where otherwise noted, content on this wiki is licensed under the following license:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki