Updated ports to the new numbers for the actual board, added FreqSync Warning light
This commit is contained in:
parent
1d28ce58d9
commit
903e4d2add
@ -1,8 +1,6 @@
|
||||
#include <FT817_NBS.h>
|
||||
|
||||
FT817_NBS::FT817_NBS(SoftwareSerial *connection){
|
||||
serial = connection;
|
||||
}
|
||||
FT817_NBS::FT817_NBS(SoftwareSerial *connection) { serial = connection; }
|
||||
|
||||
unsigned long FT817_NBS::bcdToInt(uint8_t bcd) {
|
||||
int byte = (bcd & 0xF0) >> 4;
|
||||
@ -76,7 +74,8 @@ FT817_NBS::SignalMode FT817_NBS::getSignalMode(uint8_t numericValue){
|
||||
}
|
||||
}
|
||||
|
||||
void FT817_NBS::convertFromValueToBcd(uint8_t *buffer, unsigned long actualValue){
|
||||
void FT817_NBS::convertFromValueToBcd(uint8_t *buffer,
|
||||
unsigned long actualValue) {
|
||||
for (int partsLeft = 0; partsLeft < 4; partsLeft++) {
|
||||
unsigned long part = actualValue / getDevicer(partsLeft);
|
||||
actualValue -= part * getDevicer(partsLeft);
|
||||
@ -152,8 +151,7 @@ void FT817_NBS::setSplit(bool on){
|
||||
uint8_t data[5] = {0x0, 0x0, 0x0, 0x0};
|
||||
if (on) {
|
||||
data[4] = 0x2;
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
data[4] = 0x82;
|
||||
}
|
||||
sendCommand(&data[0], sizeof(data));
|
||||
|
@ -6,7 +6,18 @@
|
||||
|
||||
class FT817_NBS {
|
||||
public:
|
||||
enum SignalMode {LSB = 0x0, USB = 0x1, CW = 0x2, CWR = 0x3, AM = 0x4, WFM = 0x6, FM = 0x8, DIG = 0xA, PKT = 0xC, UNKNOWN};
|
||||
enum SignalMode {
|
||||
LSB = 0x0,
|
||||
USB = 0x1,
|
||||
CW = 0x2,
|
||||
CWR = 0x3,
|
||||
AM = 0x4,
|
||||
WFM = 0x6,
|
||||
FM = 0x8,
|
||||
DIG = 0xA,
|
||||
PKT = 0xC,
|
||||
UNKNOWN
|
||||
};
|
||||
|
||||
private:
|
||||
SoftwareSerial *serial;
|
||||
|
@ -12,3 +12,14 @@
|
||||
platform = atmelavr
|
||||
board = uno
|
||||
framework = arduino
|
||||
|
||||
; upload_protocol = stk500v2
|
||||
|
||||
upload_protocol = stk500v1
|
||||
; edit these lines
|
||||
upload_port = /dev/tty.usbmodem14101
|
||||
upload_speed = 19200
|
||||
; each flag in a new line
|
||||
upload_flags =
|
||||
-P$UPLOAD_PORT
|
||||
-b$UPLOAD_SPEED
|
||||
|
103
src/main.cpp
103
src/main.cpp
@ -1,13 +1,20 @@
|
||||
#include <Arduino.h>
|
||||
#include <SoftwareSerial.h>
|
||||
#include <FT817_NBS.h>
|
||||
#include <SoftwareSerial.h>
|
||||
|
||||
#define SET_FREQ 4
|
||||
#define SWITCH_AB 5
|
||||
#define SWITCH_USB_CW 7
|
||||
#define INIT 9
|
||||
#define LOWER_FREQ_BEACON 6
|
||||
#define HIGHER_FREQ_BEACON 8
|
||||
#define LOWER_FREQ_BEACON A0
|
||||
#define INIT A1
|
||||
#define HIGHER_FREQ_BEACON A2
|
||||
#define SWITCH_USB_CW A3
|
||||
#define SET_FREQ A4
|
||||
#define SWITCH_AB A5
|
||||
|
||||
#define LED_LOWER_FREQ_BEACON 4
|
||||
#define LED_INIT 5
|
||||
#define LED_HIGHER_FREQ_BEACON 6
|
||||
#define LED_SWITCH_USB_CW 7
|
||||
#define LED_SET_FREQ 8
|
||||
#define LED_SWITCH_AB 9
|
||||
|
||||
SoftwareSerial radio = SoftwareSerial(2, 3);
|
||||
FT817_NBS ft817(&radio);
|
||||
@ -17,6 +24,8 @@ void switchUsbCw();
|
||||
void initRadio();
|
||||
bool setBeaconHigh();
|
||||
bool setBeaconLow();
|
||||
void checkSync();
|
||||
void slowBlinkerClock();
|
||||
|
||||
void setup() {
|
||||
// put your setup code here, to run once:
|
||||
@ -28,6 +37,15 @@ void setup() {
|
||||
pinMode(INIT, INPUT_PULLUP);
|
||||
pinMode(HIGHER_FREQ_BEACON, INPUT_PULLUP);
|
||||
pinMode(LOWER_FREQ_BEACON, INPUT_PULLUP);
|
||||
|
||||
pinMode(LED_INIT, OUTPUT);
|
||||
pinMode(LED_SET_FREQ, OUTPUT);
|
||||
digitalWrite(LED_INIT, HIGH);
|
||||
delay(500);
|
||||
digitalWrite(LED_INIT, LOW);
|
||||
digitalWrite(LED_SET_FREQ, HIGH);
|
||||
delay(500);
|
||||
digitalWrite(LED_SET_FREQ, LOW);
|
||||
}
|
||||
|
||||
bool pressBlockSetFreq = false;
|
||||
@ -36,8 +54,11 @@ bool pressBlockSwitchUsbCW = false;
|
||||
bool pressBlockInit = false;
|
||||
bool pressBlockLowerFreqBeacon = false;
|
||||
bool pressBlockHigherFreqBeacon = false;
|
||||
bool slowBlinker = false;
|
||||
|
||||
unsigned long pressLengthInit = 0;
|
||||
unsigned long lastSyncFrequency = 0;
|
||||
unsigned long lastBlinkToggle = 0;
|
||||
|
||||
void loop() {
|
||||
// put your main code here, to run repeatedly:
|
||||
@ -45,8 +66,7 @@ void loop() {
|
||||
if (digitalRead(SET_FREQ) == LOW && !pressBlockSetFreq) {
|
||||
pressBlockSetFreq = true;
|
||||
setFreq();
|
||||
}
|
||||
else if(digitalRead(SET_FREQ) != LOW){
|
||||
} else if (digitalRead(SET_FREQ) != LOW) {
|
||||
pressBlockSetFreq = false;
|
||||
delay(20);
|
||||
}
|
||||
@ -54,9 +74,7 @@ void loop() {
|
||||
if (digitalRead(SWITCH_AB) == LOW && !pressBlockSwitchAB) {
|
||||
ft817.toggleAB();
|
||||
pressBlockSwitchAB = true;
|
||||
|
||||
}
|
||||
else if(digitalRead(SWITCH_AB) != LOW){
|
||||
} else if (digitalRead(SWITCH_AB) != LOW) {
|
||||
pressBlockSwitchAB = false;
|
||||
delay(20);
|
||||
}
|
||||
@ -64,9 +82,7 @@ void loop() {
|
||||
if (digitalRead(SWITCH_USB_CW) == LOW && !pressBlockSwitchUsbCW) {
|
||||
switchUsbCw();
|
||||
pressBlockSwitchUsbCW = true;
|
||||
|
||||
}
|
||||
else if(digitalRead(SWITCH_USB_CW) != LOW){
|
||||
} else if (digitalRead(SWITCH_USB_CW) != LOW) {
|
||||
pressBlockSwitchUsbCW = false;
|
||||
delay(20);
|
||||
}
|
||||
@ -74,14 +90,12 @@ void loop() {
|
||||
if (digitalRead(INIT) == LOW && !pressBlockInit) {
|
||||
pressLengthInit = millis() + 1000;
|
||||
pressBlockInit = true;
|
||||
}
|
||||
else if(digitalRead(INIT) == LOW) {
|
||||
} else if (digitalRead(INIT) == LOW) {
|
||||
if (pressLengthInit != 0 && pressLengthInit <= millis()) {
|
||||
pressLengthInit = 0;
|
||||
initRadio();
|
||||
}
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
pressLengthInit = 0;
|
||||
pressBlockInit = false;
|
||||
delay(20);
|
||||
@ -90,9 +104,7 @@ void loop() {
|
||||
if (digitalRead(HIGHER_FREQ_BEACON) == LOW && !pressBlockHigherFreqBeacon) {
|
||||
setBeaconHigh();
|
||||
pressBlockHigherFreqBeacon = true;
|
||||
|
||||
}
|
||||
else if(digitalRead(HIGHER_FREQ_BEACON) != LOW){
|
||||
} else if (digitalRead(HIGHER_FREQ_BEACON) != LOW) {
|
||||
pressBlockHigherFreqBeacon = false;
|
||||
delay(20);
|
||||
}
|
||||
@ -100,28 +112,30 @@ void loop() {
|
||||
if (digitalRead(LOWER_FREQ_BEACON) == LOW && !pressBlockLowerFreqBeacon) {
|
||||
setBeaconLow();
|
||||
pressBlockLowerFreqBeacon = true;
|
||||
|
||||
}
|
||||
else if(digitalRead(LOWER_FREQ_BEACON) != LOW){
|
||||
} else if (digitalRead(LOWER_FREQ_BEACON) != LOW) {
|
||||
pressBlockLowerFreqBeacon = false;
|
||||
delay(20);
|
||||
}
|
||||
|
||||
checkSync();
|
||||
slowBlinkerClock();
|
||||
}
|
||||
|
||||
void setFreq() {
|
||||
unsigned long frequency = ft817.getFrequency().frequency;
|
||||
unsigned long rxFrequency = ft817.getFrequency().frequency;
|
||||
|
||||
if(frequency < 28850000){
|
||||
if (rxFrequency < 28850000) {
|
||||
Serial.println("Please go into the 70 cm Band!");
|
||||
return;
|
||||
}
|
||||
delay(300);
|
||||
unsigned long newFrequency = frequency - 28850000;
|
||||
unsigned long txFrequency = rxFrequency - 28850000;
|
||||
lastSyncFrequency = rxFrequency;
|
||||
|
||||
ft817.toggleAB();
|
||||
delay(300);
|
||||
|
||||
ft817.setFrequency(newFrequency);
|
||||
ft817.setFrequency(txFrequency);
|
||||
|
||||
delay(300);
|
||||
|
||||
@ -134,8 +148,7 @@ void switchUsbCw(){
|
||||
|
||||
if (mode == FT817_NBS::SignalMode::USB) {
|
||||
newMode = FT817_NBS::SignalMode::CW;
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
newMode = FT817_NBS::SignalMode::USB;
|
||||
}
|
||||
|
||||
@ -166,7 +179,8 @@ void initRadio(){
|
||||
ft817.setSplit(true);
|
||||
}
|
||||
|
||||
bool setBeacon(unsigned long frequency, FT817_NBS::SignalMode mode, bool firstVFO){
|
||||
bool setBeacon(unsigned long frequency, FT817_NBS::SignalMode mode,
|
||||
bool firstVFO) {
|
||||
unsigned long result = ft817.getFrequency().frequency;
|
||||
if (result >= 43000000 && result <= 44000000) {
|
||||
delay(300);
|
||||
@ -174,16 +188,15 @@ bool setBeacon(unsigned long frequency, FT817_NBS::SignalMode mode, bool firstVF
|
||||
delay(300);
|
||||
ft817.setFrequency(frequency);
|
||||
return true;
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
delay(300);
|
||||
ft817.toggleAB();
|
||||
if (firstVFO) {
|
||||
delay(300);
|
||||
return setBeacon(frequency, mode, false);
|
||||
}
|
||||
else{
|
||||
Serial.println("Could not set beacon. Please initialise the radio first.");
|
||||
} else {
|
||||
Serial.println(
|
||||
"Could not set beacon. Please initialise the radio first.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -197,4 +210,20 @@ bool setBeaconLow(){
|
||||
return setBeacon(43250000, FT817_NBS::SignalMode::CW, true);
|
||||
}
|
||||
|
||||
void checkSync() {
|
||||
unsigned long latest_rxFrequency = ft817.getFrequency().frequency;
|
||||
if (abs(latest_rxFrequency - lastSyncFrequency) >= 250) {
|
||||
digitalWrite(LED_SET_FREQ, HIGH);
|
||||
} else if (abs(latest_rxFrequency - lastSyncFrequency) == 0) {
|
||||
digitalWrite(LED_SET_FREQ, LOW);
|
||||
} else if (abs(latest_rxFrequency - lastSyncFrequency) < 250) {
|
||||
digitalWrite(LED_SET_FREQ, slowBlinker);
|
||||
}
|
||||
}
|
||||
|
||||
void slowBlinkerClock() {
|
||||
if ((millis() - lastBlinkToggle) >= 1000) {
|
||||
lastBlinkToggle = millis();
|
||||
slowBlinker = !slowBlinker;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user