Compare commits
	
		
			1 Commits
		
	
	
		
			main
			...
			programmer
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 33001f7c59 | 
| @@ -1,6 +1,8 @@ | ||||
| #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; | ||||
| @@ -74,8 +76,7 @@ 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); | ||||
| @@ -151,7 +152,8 @@ 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,18 +6,7 @@ | ||||
|  | ||||
| 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; | ||||
|   | ||||
| @@ -13,13 +13,8 @@ platform = atmelavr | ||||
| board = uno | ||||
| framework = arduino | ||||
|  | ||||
| ; upload_protocol = stk500v2 | ||||
|  | ||||
| upload_protocol = stk500v1 | ||||
| ; edit these lines | ||||
| upload_port = /dev/tty.usbmodem14101 | ||||
| upload_speed = 19200 | ||||
| upload_protocol = stk500v2 | ||||
| ; each flag in a new line | ||||
| upload_flags = | ||||
|     -P$UPLOAD_PORT | ||||
|     -b$UPLOAD_SPEED | ||||
|     -Pusb | ||||
| upload_port = usb | ||||
							
								
								
									
										102
									
								
								src/main.cpp
									
									
									
									
									
								
							
							
						
						
									
										102
									
								
								src/main.cpp
									
									
									
									
									
								
							| @@ -1,31 +1,29 @@ | ||||
| #include <Arduino.h> | ||||
| #include <FT817_NBS.h> | ||||
| #include <SoftwareSerial.h> | ||||
| #include <FT817_NBS.h> | ||||
|  | ||||
| #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 SWITCH_USB_CW A3 | ||||
| #define INIT A1 | ||||
| #define LOWER_FREQ_BEACON A0 | ||||
| #define HIGHER_FREQ_BEACON A2  | ||||
|  | ||||
| #define LED_LOWER_FREQ_BEACON 5 | ||||
| #define LED_INIT 6 | ||||
| #define LED_HIGHER_FREQ_BEACON 7 | ||||
| #define LED_SWITCH_USB_CW 8 | ||||
| #define LED_SET_FREQ 9 | ||||
| #define LED_SWITCH_AB 10 | ||||
|  | ||||
| #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); | ||||
|  | ||||
| void setFreq(); | ||||
| void switchUsbCw(); | ||||
| void initRadio(); | ||||
| bool setBeaconHigh(); | ||||
| bool setBeaconLow(); | ||||
| void checkSync(); | ||||
| void slowBlinkerClock(); | ||||
|  | ||||
| void setup() { | ||||
|   // put your setup code here, to run once: | ||||
| @@ -37,15 +35,10 @@ 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; | ||||
| @@ -54,11 +47,8 @@ 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: | ||||
| @@ -66,7 +56,8 @@ 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); | ||||
|   } | ||||
| @@ -74,7 +65,9 @@ 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); | ||||
|   } | ||||
| @@ -82,7 +75,9 @@ 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); | ||||
|   } | ||||
| @@ -90,12 +85,14 @@ 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); | ||||
| @@ -104,7 +101,9 @@ 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); | ||||
|   } | ||||
| @@ -112,30 +111,28 @@ 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 rxFrequency = ft817.getFrequency().frequency; | ||||
|   unsigned long frequency = ft817.getFrequency().frequency; | ||||
|  | ||||
|   if (rxFrequency < 28850000) { | ||||
|   if(frequency < 28850000){ | ||||
|     Serial.println("Please go into the 70 cm Band!"); | ||||
|     return; | ||||
|   } | ||||
|   delay(300); | ||||
|   unsigned long txFrequency = rxFrequency - 28850000; | ||||
|   lastSyncFrequency = rxFrequency; | ||||
|   unsigned long newFrequency = frequency - 28850000; | ||||
|  | ||||
|   ft817.toggleAB(); | ||||
|   delay(300); | ||||
|  | ||||
|   ft817.setFrequency(txFrequency); | ||||
|   ft817.setFrequency(newFrequency); | ||||
|  | ||||
|   delay(300); | ||||
|  | ||||
| @@ -148,7 +145,8 @@ void switchUsbCw() { | ||||
|  | ||||
|   if (mode == FT817_NBS::SignalMode::USB){ | ||||
|     newMode = FT817_NBS::SignalMode::CW; | ||||
|   } else { | ||||
|   } | ||||
|   else{ | ||||
|     newMode = FT817_NBS::SignalMode::USB; | ||||
|   } | ||||
|  | ||||
| @@ -179,8 +177,7 @@ 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); | ||||
| @@ -188,15 +185,16 @@ bool setBeacon(unsigned long frequency, FT817_NBS::SignalMode mode, | ||||
|     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; | ||||
|     } | ||||
|   } | ||||
| @@ -210,20 +208,4 @@ 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; | ||||
|   } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user