Remove unfinished examples
This commit is contained in:
parent
e65893402a
commit
6b775130d1
|
@ -1,283 +0,0 @@
|
||||||
|
|
||||||
// BlueHAM Proto01 Connection Guide
|
|
||||||
/**********************
|
|
||||||
**
|
|
||||||
** BlueHAM Proto01 <--> Arduino
|
|
||||||
** ADC_SCL A5
|
|
||||||
** ADC_DIO A4
|
|
||||||
** GND GND
|
|
||||||
** PWM_RF_CTL D9
|
|
||||||
**
|
|
||||||
** Setting Connections
|
|
||||||
** MODE -> GND
|
|
||||||
** SENB -> GND
|
|
||||||
** PDN -> 3.3V
|
|
||||||
** AVDD -> 5V (note this should be a beefy supply, could draw up to 4As)
|
|
||||||
**
|
|
||||||
**
|
|
||||||
**
|
|
||||||
** Pinout information for RadioPeripheral01 Prototype board
|
|
||||||
** GPIO0 -
|
|
||||||
** GPIO1 -
|
|
||||||
** GPIO2 - VHF_SEL
|
|
||||||
** GPIO3 - UHF_SEL
|
|
||||||
** GPIO4 - RX_EN
|
|
||||||
** GPIO5 - TX_EN
|
|
||||||
** GPIO6 -
|
|
||||||
** GPIO7 -
|
|
||||||
**************************/
|
|
||||||
|
|
||||||
// Arduino Wire library is required if I2Cdev I2CDEV_ARDUINO_WIRE implementation
|
|
||||||
// is used in I2Cdev.h
|
|
||||||
#include "Wire.h"
|
|
||||||
#include "HAMShield.h"
|
|
||||||
|
|
||||||
#include <Goertzel.h>
|
|
||||||
|
|
||||||
//typedef enum {
|
|
||||||
#define MAIN_S 0
|
|
||||||
#define RX_S 1
|
|
||||||
#define TX_S 2
|
|
||||||
#define FREQ_S 3
|
|
||||||
#define UHF_S 4
|
|
||||||
#define VHF_S 5
|
|
||||||
#define PWR_S 6
|
|
||||||
#define GPIO_S 7
|
|
||||||
//} menu_view;
|
|
||||||
|
|
||||||
int state;
|
|
||||||
|
|
||||||
/* goertzel routines */
|
|
||||||
|
|
||||||
int sensorPin = A0;
|
|
||||||
int led = 13;
|
|
||||||
const float TARGET_FREQUENCY = 2200;
|
|
||||||
const int N = 100;
|
|
||||||
const float THRESHOLD = 4000;
|
|
||||||
const float SAMPLING_FREQUENCY = 8900;
|
|
||||||
Goertzel goertzel = Goertzel(TARGET_FREQUENCY, N, SAMPLING_FREQUENCY);
|
|
||||||
|
|
||||||
// create object for RDA
|
|
||||||
HAMShield radio;
|
|
||||||
|
|
||||||
|
|
||||||
#define LED_PIN 13
|
|
||||||
bool blinkState = false;
|
|
||||||
|
|
||||||
void setup() {
|
|
||||||
// initialize serial communication
|
|
||||||
Serial.begin(115200);
|
|
||||||
Serial.println("beginning radio setup");
|
|
||||||
|
|
||||||
// join I2C bus (I2Cdev library doesn't do this automatically)
|
|
||||||
Wire.begin();
|
|
||||||
|
|
||||||
// verify connection
|
|
||||||
Serial.println("Testing device connections...");
|
|
||||||
Serial.println(radio.testConnection() ? "RDA radio connection successful" : "RDA radio connection failed");
|
|
||||||
|
|
||||||
// initialize device
|
|
||||||
Serial.println("Initializing I2C devices...");
|
|
||||||
radio.initialize(); // initializes automatically for UHF 12.5kHz channel
|
|
||||||
|
|
||||||
Serial.println("setting default Radio configuration");
|
|
||||||
|
|
||||||
|
|
||||||
// set frequency
|
|
||||||
Serial.println("changing frequency");
|
|
||||||
|
|
||||||
|
|
||||||
radio.setFrequency(446000); // in kHz
|
|
||||||
radio.setModeReceive();
|
|
||||||
|
|
||||||
// configure Arduino LED for
|
|
||||||
pinMode(LED_PIN, OUTPUT);
|
|
||||||
|
|
||||||
state = MAIN_S;
|
|
||||||
print_menu();
|
|
||||||
}
|
|
||||||
|
|
||||||
void loop() {
|
|
||||||
goertzel.sample(sensorPin);
|
|
||||||
float magnitude = goertzel.detect();
|
|
||||||
if(magnitude>THRESHOLD) digitalWrite(led, HIGH); //if found, enable led
|
|
||||||
else digitalWrite(led, LOW);
|
|
||||||
while (Serial.available()) {
|
|
||||||
if (state == FREQ_S) {
|
|
||||||
char freq_khz[6];
|
|
||||||
int i = 0;
|
|
||||||
while(i < 6) {
|
|
||||||
if (Serial.available()) {
|
|
||||||
freq_khz[i] = Serial.read();
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// interpret frequency
|
|
||||||
uint32_t freq = 0;
|
|
||||||
i = 0;
|
|
||||||
while (i < 6) {
|
|
||||||
uint32_t temp = freq_khz[i] - '0';
|
|
||||||
for (int k = 5-i; k > 0; k--) {
|
|
||||||
temp = temp * 10;
|
|
||||||
}
|
|
||||||
freq += temp;
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
Serial.print("setting frequency to: ");
|
|
||||||
Serial.println(freq);
|
|
||||||
radio.setFrequency(freq);
|
|
||||||
state = MAIN_S;
|
|
||||||
|
|
||||||
} else if (state == PWR_S) {
|
|
||||||
uint8_t pwr_raw[3];
|
|
||||||
int i = 0;
|
|
||||||
while(i < 3) {
|
|
||||||
if (Serial.available()) {
|
|
||||||
pwr_raw[i] = Serial.read();
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// interpret power
|
|
||||||
uint8_t pwr = 0;
|
|
||||||
i = 0;
|
|
||||||
while (i < 3) {
|
|
||||||
uint8_t temp = pwr_raw[i] - '0';
|
|
||||||
for (int k = 2-i; k > 0; k--) {
|
|
||||||
temp = temp * 10;
|
|
||||||
}
|
|
||||||
pwr += temp;
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
|
|
||||||
Serial.print("Setting power to: ");
|
|
||||||
Serial.println(pwr);
|
|
||||||
radio.setRfPower(pwr);
|
|
||||||
state = MAIN_S;
|
|
||||||
|
|
||||||
} else if (state == GPIO_S) {
|
|
||||||
uint8_t gpio_raw[2];
|
|
||||||
int i = 0;
|
|
||||||
while(i < 2) {
|
|
||||||
if (Serial.available()) {
|
|
||||||
gpio_raw[i] = Serial.read();
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
uint16_t gpio_pin = gpio_raw[0] - 48; // '0';
|
|
||||||
uint16_t gpio_mode = gpio_raw[1] - 48;
|
|
||||||
|
|
||||||
radio.setGpioMode(gpio_pin, gpio_mode);
|
|
||||||
state = MAIN_S;
|
|
||||||
|
|
||||||
} else {
|
|
||||||
char action = Serial.read();
|
|
||||||
if (action == 'r') { // get current state
|
|
||||||
state = RX_S;
|
|
||||||
} else if (action == 't') {
|
|
||||||
state = TX_S;
|
|
||||||
} else if (action == 'f') {
|
|
||||||
state = FREQ_S;
|
|
||||||
} else if (action == 'u') {
|
|
||||||
state = UHF_S;
|
|
||||||
} else if (action == 'v') {
|
|
||||||
state = VHF_S;
|
|
||||||
} else if (action == '1') {
|
|
||||||
turn_on(state);
|
|
||||||
state = MAIN_S;
|
|
||||||
} else if (action == '0') {
|
|
||||||
turn_off(state);
|
|
||||||
state = MAIN_S;
|
|
||||||
} else if (action == 'p') {
|
|
||||||
state = PWR_S;
|
|
||||||
} else if (action == 'g') {
|
|
||||||
state = GPIO_S;
|
|
||||||
} else if (action == 's') {
|
|
||||||
int16_t rssi = radio.readRSSI();
|
|
||||||
Serial.print("rssi: ");
|
|
||||||
Serial.println(rssi);
|
|
||||||
} else if (action == 'i') {
|
|
||||||
int16_t vssi = radio.readVSSI();
|
|
||||||
Serial.print("vssi: ");
|
|
||||||
Serial.println(vssi);
|
|
||||||
}
|
|
||||||
|
|
||||||
Serial.println(action);
|
|
||||||
}
|
|
||||||
Serial.flush();
|
|
||||||
print_menu();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void turn_off(int dev) {
|
|
||||||
switch (dev) {
|
|
||||||
case RX_S:
|
|
||||||
radio.setRX(0);
|
|
||||||
break;
|
|
||||||
case TX_S:
|
|
||||||
radio.setTX(0);
|
|
||||||
break;
|
|
||||||
case UHF_S:
|
|
||||||
radio.setGpioMode(3, 3); // set GPIO3 high (uhf is active low)
|
|
||||||
break;
|
|
||||||
case VHF_S:
|
|
||||||
radio.setGpioMode(2, 3); // set GPIO2 high (vhf is active low)
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void turn_on(int dev) {
|
|
||||||
switch (dev) {
|
|
||||||
case RX_S:
|
|
||||||
radio.setRX(1);
|
|
||||||
break;
|
|
||||||
case TX_S:
|
|
||||||
radio.setTX(1);
|
|
||||||
break;
|
|
||||||
case UHF_S:
|
|
||||||
radio.setGpioMode(3, 2); // set GPIO3 low (uhf is active low)
|
|
||||||
break;
|
|
||||||
case VHF_S:
|
|
||||||
radio.setGpioMode(2, 2); // set GPIO2 low (uhf is active low)
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void print_menu() {
|
|
||||||
Serial.println("MENU");
|
|
||||||
switch (state) {
|
|
||||||
case MAIN_S:
|
|
||||||
Serial.println("select step: [r]x, [t]x, [f]req, [u]hf, [v]hf, [p]wr, [g]pio control, r[s]si, vss[i] ...");
|
|
||||||
break;
|
|
||||||
case RX_S:
|
|
||||||
Serial.println("enter 1 to turn on rx, 0 to turn off rx");
|
|
||||||
break;
|
|
||||||
case TX_S:
|
|
||||||
Serial.println("enter 1 to turn on tx, 0 to turn off tx");
|
|
||||||
break;
|
|
||||||
case FREQ_S:
|
|
||||||
Serial.println("enter frequency in kHz (ffffff)");
|
|
||||||
break;
|
|
||||||
case UHF_S:
|
|
||||||
Serial.println("enter 1 to turn on uhf, 0 to turn off uhf");
|
|
||||||
break;
|
|
||||||
case VHF_S:
|
|
||||||
Serial.println("enter 1 to turn on vhf, 0 to turn off vhf");
|
|
||||||
break;
|
|
||||||
case PWR_S:
|
|
||||||
Serial.println("enter power (raw) (ppp)");
|
|
||||||
break;
|
|
||||||
case GPIO_S:
|
|
||||||
Serial.println("enter GPIO pin and control (no spaces, eg pin 1 mode 3 is 13");
|
|
||||||
Serial.println("modes 0 - HiZ, 1 - FCN, 2 - Low, 3 - Hi");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
state = MAIN_S;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,95 +0,0 @@
|
||||||
/*
|
|
||||||
|
|
||||||
Indentifier
|
|
||||||
|
|
||||||
Arduino audio overlay example
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include <HamShield.h>
|
|
||||||
|
|
||||||
#define DOT 100
|
|
||||||
|
|
||||||
#define PWM_PIN 3
|
|
||||||
#define RESET_PIN A3
|
|
||||||
#define SWITCH_PIN 2
|
|
||||||
|
|
||||||
HamShield radio;
|
|
||||||
|
|
||||||
const char *bascii = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.,?'!/()&:;=+-_\"$@",
|
|
||||||
*bitu[] = { ".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--..","-----",".----","..---","...--","....-",".....","-....","--...","---..","----.",".-.-.-","--..--","..--..",".----.","-.-.--","-..-.","-.--.","-.--.-",".-...","---...","-.-.-.","-...-",".-.-.","-....-","..--.-",".-..-.","...-..-",".--.-."
|
|
||||||
};
|
|
||||||
|
|
||||||
const char *callsign = {"1ZZ9ZZ/B"} ;
|
|
||||||
|
|
||||||
char morsebuffer[8];
|
|
||||||
|
|
||||||
void setup() {
|
|
||||||
// NOTE: if not using PWM out, it should be held low to avoid tx noise
|
|
||||||
pinMode(PWM_PIN, OUTPUT);
|
|
||||||
digitalWrite(PWM_PIN, LOW);
|
|
||||||
|
|
||||||
// prep the switch
|
|
||||||
pinMode(SWITCH_PIN, INPUT_PULLUP);
|
|
||||||
|
|
||||||
// set up the reset control pin
|
|
||||||
pinMode(RESET_PIN, OUTPUT);
|
|
||||||
digitalWrite(RESET_PIN, HIGH);
|
|
||||||
|
|
||||||
Serial.begin(9600);
|
|
||||||
Serial.println("starting up..");
|
|
||||||
|
|
||||||
Serial.print("Radio status: ");
|
|
||||||
int result = radio.testConnection();
|
|
||||||
Serial.println(result,DEC);
|
|
||||||
radio.initialize();
|
|
||||||
radio.frequency(446000);
|
|
||||||
radio.setVolume1(0xF);
|
|
||||||
radio.setVolume2(0xF);
|
|
||||||
radio.setModeReceive();
|
|
||||||
radio.setTxSourceMic();
|
|
||||||
radio.setSQLoThresh(80);
|
|
||||||
radio.setSQOn();
|
|
||||||
Serial.println("Done with radio beacon setup. Press and hold a key to transmit.");
|
|
||||||
}
|
|
||||||
|
|
||||||
int state = 0;
|
|
||||||
long timer = 0;
|
|
||||||
int morseletter = 0;
|
|
||||||
int morsesymbol = 0;
|
|
||||||
long keyer = 0;
|
|
||||||
char symbol;
|
|
||||||
|
|
||||||
void loop() {
|
|
||||||
if(Serial.available() > 0) {
|
|
||||||
if(state == 0) {
|
|
||||||
state = 10;
|
|
||||||
radio.setModeTransmit();
|
|
||||||
timer = millis();
|
|
||||||
keyer = millis();
|
|
||||||
}
|
|
||||||
if(state == 10) {
|
|
||||||
timer = millis();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(millis() > (timer + 500)) { radio.setModeReceive(); morseletter = 0; morsesymbol = 0; state = 0; }
|
|
||||||
if(state == 10) {
|
|
||||||
if(millis() > (keyer + (DOT * 3))) {
|
|
||||||
keyer = millis();
|
|
||||||
symbol = lookup(callsign[morseletter],morsesymbol);
|
|
||||||
if(symbol == '-') { tone(9,1000,DOT*3); }
|
|
||||||
if(symbol == '.') { tone(9,1000,DOT); }
|
|
||||||
if(symbol == 0) { morsesymbol = 0; morseletter++; }
|
|
||||||
if(callsign[morseletter] == 0) { morsesymbol = 0; morseletter = 0; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
char lookup(char letter, int morsesymbol) {
|
|
||||||
for(int x = 0; x < 54; x++) {
|
|
||||||
if(letter == bascii[x]) {
|
|
||||||
return bitu[x][morsesymbol];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,60 +0,0 @@
|
||||||
/* Hamshield
|
|
||||||
* Example: HAMBot
|
|
||||||
* Simple DTMF controlled HAM Radio Robot. You will need
|
|
||||||
* seperate DTMF equipment as well as robot for this
|
|
||||||
* example.
|
|
||||||
* Connect the HamShield to your Arduino. Screw the antenna
|
|
||||||
* into the HamShield RF jack. Connect the Arduino to wall
|
|
||||||
* power and then to your computer via USB. After uploading
|
|
||||||
* this program to your adruino, you can send commands from
|
|
||||||
* your DTMF equipment using the following list:
|
|
||||||
* '4' => turn robot left
|
|
||||||
* '6' => turn robot right
|
|
||||||
* '2' => move robot forward
|
|
||||||
* '5' => tell robot to send morse code identity
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <ArduinoRobot.h> // include the robot library
|
|
||||||
#include <HamShield.h>
|
|
||||||
#include <SPI.h>
|
|
||||||
|
|
||||||
#define PWM_PIN 3
|
|
||||||
#define RESET_PIN A3
|
|
||||||
#define SWITCH_PIN 2
|
|
||||||
|
|
||||||
HamShield radio;
|
|
||||||
|
|
||||||
void setup() {
|
|
||||||
// NOTE: if not using PWM out, it should be held low to avoid tx noise
|
|
||||||
pinMode(PWM_PIN, OUTPUT);
|
|
||||||
digitalWrite(PWM_PIN, LOW);
|
|
||||||
|
|
||||||
// prep the switch
|
|
||||||
pinMode(SWITCH_PIN, INPUT_PULLUP);
|
|
||||||
|
|
||||||
// set up the reset control pin
|
|
||||||
pinMode(RESET_PIN, OUTPUT);
|
|
||||||
digitalWrite(RESET_PIN, HIGH);
|
|
||||||
|
|
||||||
Robot.begin();
|
|
||||||
|
|
||||||
radio.initialize();
|
|
||||||
radio.frequency(145510);
|
|
||||||
}
|
|
||||||
|
|
||||||
void loop() {
|
|
||||||
if(radio.waitForDTMF()) { // wait for a received DTMF tone
|
|
||||||
uint8_t command = radio.getLastDTMFDigit(); // get the last DTMF tone sent
|
|
||||||
if(command == '4') { Robot.turn(-90); } // turn robot left
|
|
||||||
if(command == '6') { Robot.turn(90); } // turn robot right
|
|
||||||
if(command == '2') { Robot.motorsWrite(-255,-255); delay(500); Robot.motorsWrite(255, 255); } // move robot forward
|
|
||||||
if(command == '5') { // tell robot to send morse code identity
|
|
||||||
if(radio.waitForChannel()) { // wait for the user to release the transmit button
|
|
||||||
radio.setModeTransmit(); // turn on transmit mode
|
|
||||||
radio.morseOut("1ZZ9ZZ I AM HAMRADIO ROBOT"); // send morse code
|
|
||||||
radio.setModeReceive(); // go back to receive mode on radio
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,131 +0,0 @@
|
||||||
/* Hamshield
|
|
||||||
* Example: Parrot
|
|
||||||
* Record sound and then plays it back a few times. Very low
|
|
||||||
* sound quality @ 2KHz 0.75 seconds. A bit robotic and weird.
|
|
||||||
* You will need a HandyTalkie (HT) to test the output of this
|
|
||||||
* example.
|
|
||||||
* Connect the HamShield to your Arduino. Screw the antenna
|
|
||||||
* into the HamShield RF jack. Plug a pair of headphones into
|
|
||||||
* the HamShield. Connect the Arduino to wall power and then to
|
|
||||||
* your computer via USB. To test the output, tune you HT to
|
|
||||||
* 446MHz. The HamShield should make a recording of the next
|
|
||||||
* broadcast on that frequncy. The recording should then be
|
|
||||||
* repeated ten times by the HamShield.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <HamShield.h>
|
|
||||||
|
|
||||||
#define PWM_PIN 3
|
|
||||||
#define RESET_PIN A3
|
|
||||||
#define SWITCH_PIN 2
|
|
||||||
|
|
||||||
#define RATE 500
|
|
||||||
#define SIZE 1500
|
|
||||||
|
|
||||||
HamShield radio;
|
|
||||||
|
|
||||||
char sound[SIZE];
|
|
||||||
unsigned int sample1;
|
|
||||||
int x = -1;
|
|
||||||
int16_t rssi;
|
|
||||||
byte mode = 8;
|
|
||||||
|
|
||||||
void setup() {
|
|
||||||
// NOTE: if not using PWM out, it should be held low to avoid tx noise
|
|
||||||
pinMode(PWM_PIN, OUTPUT);
|
|
||||||
digitalWrite(PWM_PIN, LOW);
|
|
||||||
|
|
||||||
// prep the switch
|
|
||||||
pinMode(SWITCH_PIN, INPUT_PULLUP);
|
|
||||||
|
|
||||||
// set up the reset control pin
|
|
||||||
pinMode(RESET_PIN, OUTPUT);
|
|
||||||
digitalWrite(RESET_PIN, HIGH);
|
|
||||||
|
|
||||||
// int result = radio.testConnection();
|
|
||||||
radio.initialize();
|
|
||||||
radio.frequency(446000);
|
|
||||||
setPwmFrequency(9, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void loop() {
|
|
||||||
rssi = radio.readRSSI();
|
|
||||||
if(rssi > -100) {
|
|
||||||
if(x == -1) {
|
|
||||||
for(x = 0; x < SIZE; x++) {
|
|
||||||
if(mode == 4) {
|
|
||||||
sample1 = analogRead(2);
|
|
||||||
sound[x] = sample1 >> 4;
|
|
||||||
delayMicroseconds(RATE); x++;
|
|
||||||
sample1 = analogRead(2);
|
|
||||||
sound[x] = (sample1 & 0xF0) | sound[x];
|
|
||||||
delayMicroseconds(RATE);
|
|
||||||
} else {
|
|
||||||
sound[x] = analogRead(2);
|
|
||||||
delayMicroseconds(RATE); x++;
|
|
||||||
sound[x] = analogRead(2);
|
|
||||||
delayMicroseconds(RATE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(rssi < -100) {
|
|
||||||
if(x == 1500) {
|
|
||||||
radio.setModeTransmit();
|
|
||||||
delay(500);
|
|
||||||
tone(9,1000,500); delay(750);
|
|
||||||
for(int r = 0; r < 10; r++) {
|
|
||||||
for(x = 0; x < SIZE; x++) {
|
|
||||||
if(mode == 4) {
|
|
||||||
|
|
||||||
analogWrite(9,sound[x] << 4);
|
|
||||||
delayMicroseconds(RATE); x++;
|
|
||||||
analogWrite(9,sound[x] & 0xF);
|
|
||||||
delayMicroseconds(RATE); } else {
|
|
||||||
|
|
||||||
analogWrite(9,sound[x]);
|
|
||||||
delayMicroseconds(RATE); x++;
|
|
||||||
analogWrite(9,sound[x]);
|
|
||||||
delayMicroseconds(RATE);
|
|
||||||
}
|
|
||||||
} }
|
|
||||||
tone(9,1000,500); delay(750);
|
|
||||||
radio.setModeReceive();
|
|
||||||
x = -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void setPwmFrequency(int pin, int divisor) {
|
|
||||||
byte mode;
|
|
||||||
if(pin == 5 || pin == 6 || pin == 9 || pin == 10) {
|
|
||||||
switch(divisor) {
|
|
||||||
case 1: mode = 0x01; break;
|
|
||||||
case 8: mode = 0x02; break;
|
|
||||||
case 64: mode = 0x03; break;
|
|
||||||
case 256: mode = 0x04; break;
|
|
||||||
case 1024: mode = 0x05; break;
|
|
||||||
default: return;
|
|
||||||
}
|
|
||||||
if(pin == 5 || pin == 6) {
|
|
||||||
TCCR0B = TCCR0B & 0b11111000 | mode;
|
|
||||||
} else {
|
|
||||||
TCCR1B = TCCR1B & 0b11111000 | mode;
|
|
||||||
}
|
|
||||||
} else if(pin == 3 || pin == 11) {
|
|
||||||
switch(divisor) {
|
|
||||||
case 1: mode = 0x01; break;
|
|
||||||
case 8: mode = 0x02; break;
|
|
||||||
case 32: mode = 0x03; break;
|
|
||||||
case 64: mode = 0x04; break;
|
|
||||||
case 128: mode = 0x05; break;
|
|
||||||
case 256: mode = 0x06; break;
|
|
||||||
case 1024: mode = 0x7; break;
|
|
||||||
default: return;
|
|
||||||
}
|
|
||||||
TCCR2B = TCCR2B & 0b11111000 | mode;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -21,28 +21,14 @@ Mode ASCII Description
|
||||||
-------------- ----------- -------------------------------------------------------------------------------------------------------------------------------------------- -----------------
|
-------------- ----------- -------------------------------------------------------------------------------------------------------------------------------------------- -----------------
|
||||||
Transmit space Space must be received at least every 500 mS Yes
|
Transmit space Space must be received at least every 500 mS Yes
|
||||||
Receive not space If space is not received and/or 500 mS timeout of space occurs, unit will go into receive mode Yes
|
Receive not space If space is not received and/or 500 mS timeout of space occurs, unit will go into receive mode Yes
|
||||||
CTCSS In A<tone>; <tone> must be a numerical ascii value with decimal point indicating CTCSS receive tone required to unsquelch No
|
|
||||||
CTCSS Out B<tone>; <tone> must be a numerical ascii value with decimal point indicating CTCSS transmit tone No
|
|
||||||
CTCSS Enable C<state>; Turns on CTCSS mode (analog tone) with 1, off with 0. No
|
|
||||||
CDCSS Enable D<state>; Turns on CDCSS mode (digital tone) with 1, off with 0. No
|
|
||||||
Bandwidth E<mode>; for 12.5KHz mode is 0, for 25KHz, mode is 1 No
|
Bandwidth E<mode>; for 12.5KHz mode is 0, for 25KHz, mode is 1 No
|
||||||
Frequency F<freq>; Set the receive frequency in KHz, if offset is disabled, this is the transmit frequency No
|
Frequency F<freq>; Set the receive frequency in KHz, if offset is disabled, this is the transmit frequency No
|
||||||
CDCSS In G<code>; <code> must be a valid CDCSS code No
|
|
||||||
CDCSS Out H<code>; <code> must be a valid CDCSS code No
|
|
||||||
Print tones I Prints out all configured tones and codes, coma delimited in format: CTCSS In, CTCSS Out, CDCSS In, CDCSS Out No
|
|
||||||
Morse Out M<text>; A small buffer for morse code (32 chars)
|
Morse Out M<text>; A small buffer for morse code (32 chars)
|
||||||
Power level P<level>; Set the power amp level, 0 = lowest, 15 = highest No
|
Power level P<level>; Set the power amp level, 0 = lowest, 15 = highest No
|
||||||
Enable Offset R<state>; 1 turns on repeater offset mode, 0 turns off repeater offset mode No
|
Enable Offset R<state>; 1 turns on repeater offset mode, 0 turns off repeater offset mode No
|
||||||
Squelch S<level>; Set the squelch level No
|
Squelch S<level>; Set the squelch level No
|
||||||
TX Offset T<freq>; The absolute frequency of the repeater offset to transmit on in KHz No
|
TX Offset T<freq>; The absolute frequency of the repeater offset to transmit on in KHz No
|
||||||
Volume V<level>; Set the volume level of the receiver No
|
|
||||||
Reset X Reset all settings to default No
|
|
||||||
Sleep Z Sleep radio No
|
|
||||||
Filters @<state>; Set bit to enable, clear bit to disable: 0 = pre/de-emphasis, 1 = high pass filter, 2 = low pass filter (default: ascii 7, all enabled) No
|
|
||||||
Vox mode $<state>; 0 = vox off, >= 1 audio sensitivity. lower value more sensitive No
|
|
||||||
Mic Channel *<state>; Set the voice channel. 0 = signal from mic or arduino, 1 = internal tone generator No
|
|
||||||
RSSI ? Respond with the current receive level in - dBm (no sign provided on numerical response) No
|
RSSI ? Respond with the current receive level in - dBm (no sign provided on numerical response) No
|
||||||
Tone Gen % (notes) To send a tone, use the following format: Single tone: %1,<freq>,<length>; Dual tone: %2,<freq>,<freq>,<length>; DTMF: %3,<key>,<length>; No
|
|
||||||
Voice Level ^ Respond with the current voice level (VSSI)
|
Voice Level ^ Respond with the current voice level (VSSI)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue