Kenwood CAT
This revision is from 2013/03/29 20:47. You can Restore it.
/* Kenwood Bandecoder by Ondrej Kolonicny OK1CDJ, ondra@ok1cdj.com v 1.0 - 20.3.2013 This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ #define ALONE_MODE // uncomment this line if bandecoder is connected alone to the radio and not sniffing comunication int inByte= -1; // incoming byte from serial RX char buffer[100]; // string for incoming serial data -- a buffer int bufferPos = 0; // string index counter // IO port definition for bands int b160 = 9; int b80 = 8; int b40 = 7; int b30 = 6; int b20 = 5; int b17 = 4; int b15 = 3; int b12 = 2; int b10 = 11; int b6 = 10; int ssb = A3; // Setup proc void setup() { Serial.begin(9600); // nastav si rychlost pinMode(b160, OUTPUT); pinMode(b80, OUTPUT); pinMode(b40, OUTPUT); pinMode(b30, OUTPUT); pinMode(b20, OUTPUT); pinMode(b17, OUTPUT); pinMode(b15, OUTPUT); pinMode(b12, OUTPUT); pinMode(b10, OUTPUT); pinMode(b6, OUTPUT); pinMode(ssb, OUTPUT); //Serial1.begin(9600); } void loop() { Serial.flush(); // send request for frequency, use only when bandecoder is connected alone to the radio #ifdef ALONE_MODE Serial.println("IF;"); #endif if (Serial.available() > 0 ) { inByte = Serial.read(); // read frequency read_if (); } } void read_if () { if (inByte == 'I') { while (bufferPos != 38) { if (Serial.available() > 0) { buffer[bufferPos] = inByte; bufferPos++; inByte = Serial.read(); if (inByte == ';') break; } } String str_if = buffer; String qrg ; // tady je kmitocet od 5 do 10 znaku qrg = str_if.substring(5,10); //na tretim miste ma byt 1 pak do jde na HIGH // 160m band if (qrg[1] == '1') { digitalWrite(b160, HIGH); digitalWrite(b80, LOW); digitalWrite(b40, LOW); digitalWrite(b30, LOW); digitalWrite(b20, LOW); digitalWrite(b17, LOW); digitalWrite(b15, LOW); digitalWrite(b12, LOW); digitalWrite(b10, LOW); digitalWrite(b6, LOW); digitalWrite(ssb, LOW); } // 80m CW band //if (qrg[1] == '3') if ((qrg[1] == '3')&&(qrg[2] == '5')) { digitalWrite(b80, HIGH); digitalWrite(b160, LOW); digitalWrite(b40, LOW); digitalWrite(b30, LOW); digitalWrite(b20, LOW); digitalWrite(b17, LOW); digitalWrite(b15, LOW); digitalWrite(b12, LOW); digitalWrite(b10, LOW); digitalWrite(b6, LOW); digitalWrite(ssb, LOW); } // 80m SSB band //if (qrg[1] == '3') if ((qrg[1] == '3')&&(qrg[2] == '6')) { digitalWrite(b80, HIGH); digitalWrite(b160, LOW); digitalWrite(b40, LOW); digitalWrite(b30, LOW); digitalWrite(b20, LOW); digitalWrite(b17, LOW); digitalWrite(b15, LOW); digitalWrite(b12, LOW); digitalWrite(b10, LOW); digitalWrite(b6, LOW); digitalWrite(ssb, HIGH); } // 40m band if (qrg[1] == '7') { digitalWrite(b40, HIGH); digitalWrite(b80, LOW); digitalWrite(b160, LOW); digitalWrite(b30, LOW); digitalWrite(b20, LOW); digitalWrite(b17, LOW); digitalWrite(b15, LOW); digitalWrite(b12, LOW); digitalWrite(b10, LOW); digitalWrite(b6, LOW); digitalWrite(ssb, LOW); } // 30m band if ((qrg[0] == '1')&&(qrg[1] == '0')) { digitalWrite(b30, HIGH); digitalWrite(b80, LOW); digitalWrite(b40, LOW); digitalWrite(b160, LOW); digitalWrite(b20, LOW); digitalWrite(b17, LOW); digitalWrite(b15, LOW); digitalWrite(b12, LOW); digitalWrite(b10, LOW); digitalWrite(b6, LOW); digitalWrite(ssb, LOW); } // 20m band if ((qrg[0] == '1')&&(qrg[1] == '4')) { digitalWrite(b20, HIGH); digitalWrite(b80, LOW); digitalWrite(b40, LOW); digitalWrite(b30, LOW); digitalWrite(b160, LOW); digitalWrite(b17, LOW); digitalWrite(b15, LOW); digitalWrite(b12, LOW); digitalWrite(b10, LOW); digitalWrite(b6, LOW); digitalWrite(ssb, LOW); } // 17m band if ((qrg[0] == '1')&&(qrg[1] == '8')) { digitalWrite(b17, HIGH); digitalWrite(b80, LOW); digitalWrite(b40, LOW); digitalWrite(b30, LOW); digitalWrite(b20, LOW); digitalWrite(b160, LOW); digitalWrite(b15, LOW); digitalWrite(b12, LOW); digitalWrite(b10, LOW); digitalWrite(b6, LOW); digitalWrite(ssb, LOW); } // 15m band if ((qrg[0] == '2')&&(qrg[1] == '1')) { digitalWrite(b15, HIGH); digitalWrite(b80, LOW); digitalWrite(b40, LOW); digitalWrite(b30, LOW); digitalWrite(b20, LOW); digitalWrite(b17, LOW); digitalWrite(b160, LOW); digitalWrite(b12, LOW); digitalWrite(b10, LOW); digitalWrite(b6, LOW); digitalWrite(ssb, LOW); } // 12m band if ((qrg[0] == '2')&&(qrg[1] == '4')) { digitalWrite(b12, HIGH); digitalWrite(b80, LOW); digitalWrite(b40, LOW); digitalWrite(b30, LOW); digitalWrite(b20, LOW); digitalWrite(b17, LOW); digitalWrite(b15, LOW); digitalWrite(b160, LOW); digitalWrite(b10, LOW); digitalWrite(b6, LOW); digitalWrite(ssb, LOW); } // 10m band if ((qrg[0] == '2')&&(qrg[1] == '8')) { digitalWrite(b10, HIGH); digitalWrite(b80, LOW); digitalWrite(b40, LOW); digitalWrite(b30, LOW); digitalWrite(b20, LOW); digitalWrite(b17, LOW); digitalWrite(b15, LOW); digitalWrite(b12, LOW); digitalWrite(b160, LOW); digitalWrite(b6, LOW); digitalWrite(ssb, LOW); } //6m band if ((qrg[0] == '5')&&(qrg[1] == '0')) { digitalWrite(b6, HIGH); digitalWrite(b80, LOW); digitalWrite(b40, LOW); digitalWrite(b30, LOW); digitalWrite(b20, LOW); digitalWrite(b17, LOW); digitalWrite(b15, LOW); digitalWrite(b12, LOW); digitalWrite(b10, LOW); digitalWrite(b160, LOW); digitalWrite(ssb, LOW); } //CD.print("."); //GLCD.print(str_if.substring(10,12)); for (int c = 0; c < bufferPos; c++) { buffer[c] = 0; } bufferPos = 0; } }