#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 4);
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
#define TX_EN 5
uint8_t MT91[9] = { B00000010, B11111111, B11111110, 0, 0, B11111111, B11111111, B00000011 };
uint8_t MT92[9] = { B00000010, B11111111, B11111111, 0, 0, B11111111, B11111111, B00000011 };
uint8_t send[8];
uint8_t cc ;
uint8_t lng = 8;
uint8_t s1 ;
unsigned long freq = 225000;
char str_freq ;
static uint8_t bcd2bin (uint8_t val) {
return val - 6 * (val >> 4);
}
void setup() {
pinMode(TX_EN, OUTPUT);
// put your setup code here, to run once:
lcd.init(); // initialize the lcd
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("ORA-5B,20 Controller ");
lcd.print("VER 0.0");
delay(500);
// Print a message to the LCD.
lcd.setCursor(0, 0);
lcd.print("FREQ: ");
lcd.setCursor(0, 1);
lcd.setCursor(0, 1);
lcd.setCursor(0, 2);
lcd.print("SIYO TX TUNE ");
lcd.setCursor(0, 3);
lcd.print("CH+ CH- MOD+ MOD- ");
Serial.begin(2400); // 2400bpsでシリアルポートを開く
}
void loop() {
mySerial.begin(2400); // ソフトウェアシリアルの初期化
mySerial.println("Hello, world?");
// disp_cx_cont();
// disp_5B_cont(225975);
SET_MT91(225000);
// SET_MT91(325000);
// SET_MT91(234250);
// v SET_MT91(243425);
// SET_MT91(252625);
// SET_MT91(261750);
// v SET_MT91(271050);
// SET_MT91(280250);
// SET_MT91(298675);
// SET_MT91(200000);
//1 225.000MHz Rf on=0:$02,$FF,$FE,$FF,$DA,$FF,$25,$03
//1 234.250MHz Rf on =0:$02,$FF,$FE,$DD,$CB,$FF,$16,$03
//1 243.425MHz Rf on =0:$02,$FF,$FE,$EB,$BC,$FF,$57,$03
//1 252.625MHz Rf on =0:$02,$FF,$FE,$E9,$AD,$FF,$44,$03
//1 261.750MHz Rf on =0:$02,$FF,$FE,$D8,$9E,$FF,$46,$03
//1 271.050MHz Rf on =0:$02,$FF,$FE,$DF,$8E,$FF,$51,$03
//1 280.250MHz Rf on =0:$02,$FF,$FE,$DD,$7F,$FF,$A2,$03
//1 289.475MHz Rf on =0:$02,$FF,$FE,$CB,$76,$FF,$BD,$03
//1 298.675MHz Rf on =0:$02,$FF,$FE,$C9,$67,$FF,$AE,$03
//1 307.850MHz Rf on =0:$02,$FF,$FE,$57,$F8,$FF,$AF,$03
delay(5000);
}
void comm_5B() {
lcd.setCursor(0, 0);
}
void disp_5b_Status() {
// Print a message to the LCD.
lcd.print("FREQ: STAT");
lcd.setCursor(6, 0);
//FREQ=MT1[];
lcd.print(MT92[6], HEX);
lcd.setCursor(8, 0);
lcd.print(MT92[7], HEX);
lcd.setCursor(10, 0);
lcd.print(MT92[8], HEX);
lcd.setCursor(12, 0);
lcd.print("Hz");
lcd.setCursor(0, 1);
lcd.print("CH MOD PO ");
lcd.setCursor(2, 1);
//lcd.print(CH[ (bcd2bin(MT92[3]))]); //CH
lcd.setCursor(9, 1);
// int8_t MO = bcd2bin(MT80[1]);
// lcd.print(MODE[(bcd2bin(MT92[10]))]); //MODE
lcd.setCursor(16, 1);
//lcd.print(POW[bcd2bin(MT92)]); //POW
lcd.setCursor(0, 2);
// print(POW[bcd2bin(MT80[0])]);
lcd.print("SIYO TX TUNE ");
lcd.setCursor(0, 3);
lcd.print("REMOTO- ");
}
void disp_5B_cont(unsigned long freq) {
// Print a message to the LCD.
lcd.setCursor(0, 0);
lcd.print("Freq ");
lcd.setCursor(6, 0);
lcd.print(freq);
lcd.setCursor(12, 0);
SET_MT91(freq);
lcd.setCursor(16, 0);
lcd.print("SEND");
lcd.setCursor(0, 1);
lcd.print("CH ");
lcd.setCursor(2, 1);
lcd.setCursor(9, 1);
lcd.setCursor(16, 1);
lcd.setCursor(0, 2);
lcd.print("TX TUNE ");
lcd.setCursor(0, 3);
lcd.print("CH+ CH- MOD+ MOD- ");
}
void SET_MT91(unsigned long freq) {
//uint8_t MT91[8] = { B00000010, B11111111, B11111111, 0, 0, B11111111, B11111111, B00000011 };
MT91[3] = 0B00000000;
MT91[4] = 0B00000000;
uint8_t f010m = 0;
uint8_t f001m = 0;
Serial.println(freq);
Serial.print("\t");
//Serial.println("[[[ //100MHz ");
String str_freq = String(freq);
//Serial.println(str_freq);
// Serial.println(str_freq.charAt(0));
uint8_t f100m = str_freq.charAt(0);
// Serial.println(f100m,DEC);
if (f100m == 50 ) {
MT91[3] = 0b11000000;
}
if (f100m == 51 ) {
MT91[3] = 0b01000000;
}
// Serial.println(MT91[3], BIN);
// Serial.println(MT91[3], BIN);
// Serial.println("^^^^^^^^^^^^ ");
// Serial.print("MT 4 100M ]]]] ");
delay(1000);
// Serial.println("[[[[ //0.025MHz SSSSSSSSS");
// Serial.println(freq); //0.025MHz
str_freq = String(freq);
str_freq = str_freq.substring(4, 6);
// Serial.println(str_freq);
uint8_t f025k = str_freq.toInt();
// Serial.println(f025k);
if (f025k == 0 ) {
MT91[3] = MT91[3] | 0B00110000;
}
if (f025k == 25 ) {
MT91[3] = MT91[3] | 0B00100000;
}
if (f025k == 50 ) {
MT91[3] = MT91[3] | 0B00010000;
}
if (f025k == 75) {
MT91[3] = MT91[3] | 0B00000000;
}
// Serial.println(MT91[3], BIN);
// Serial.println("[[[[//0.5MHz SSSSSSSSS");
// Serial.println(freq); //0.5MHz
str_freq = String(freq);
// Serial.println(str_freq.charAt(3));
str_freq = String(str_freq.charAt(3));
uint8_t f500k = str_freq.toInt();
uint8_t st = str_freq.toInt();
//// Serial.println(f500k, BIN);
// Serial.println(MT91[3], BIN);
MT91[3] = MT91[3] | ( ~f500k & 0b1111);
//MT91[4] = ( ~f010m & 0b1111);
// MT91[4] = ( ( ~f010m & 0b1111) << 4 | (~f001m) & 0b1111);
// Serial.println(MT91[3], BIN);
// Serial.println("....//0.5MHz S]]]]]");
// Serial.println("SSSSSSS//10MHz SSSSSSSSS");
str_freq = String(freq);
// Serial.println(str_freq.charAt(1)); //10MHz
str_freq = String(str_freq.charAt(1));
f010m = str_freq.toInt();
// Serial.println(f010m, BIN);
// Serial.println(MT91[4], BIN);
MT91[4] = ( ~f010m & 0b1111) << 4;
// Serial.println(MT91[4], BIN);
// Serial.println("MT 5 10M ");
// delay(1000);
// Serial.println("SSSSSSS//1MHz SSSSSSSSS");
str_freq = String(freq);
// Serial.println(str_freq.charAt(2)); //1MHz
str_freq = String(str_freq.charAt(2));
f001m = str_freq.toInt() ;
MT91[4] = ( ~f001m & 0b1111);
MT91[4] = ( ( ~f010m & 0b1111) << 4 | (~f001m) & 0b1111);
// Serial.println(MT91[4], BIN);
// Serial.println(MT91[4], HEX);
// delay(1000);
// ora_send(4) = (f100m * 2 ^ 7) + (2 ^ 6) + (f010k * 2 ^ 4) + (conv10((f100k)))
//ora_send(5) = ((conv10((f010m))) * 16) + (conv10((f001m
// Serial.print("MT 5 1M ");
// Serial.println(MT91[4], BIN);
//MT91[4]|(s1)^0b1111000;
delay(1000);
Serial.println("YYYYY\t");
send[0] = MT91[0] ^ 0;
send[1] = MT91[1] ^ send[0];
send[2] = MT91[2] ^ send[1];
send[3] = MT91[3] ^ send[2];
send[4] = MT91[4] ^ send[3];
send[5] = MT91[5] ^ send[4];
send[7] = MT91[7] ^ send[5];
send[6] = 0 ^ send[7];
MT91[6] = send[6] ^ B11111111;
// for (int x = 0; x < 9; x++) { // ASCIIコード表を出力
// Serial.print("MT91 [");
// Serial.print(x + 1, HEX);
// Serial.print("\t");
// Serial.print(MT91[x], HEX); // ASCIIコードを十六進数で出力
// cc = cc + MT91[x];
// Serial.print("\t");
// Serial.print(MT91[x], BIN); // ASCIIコードを十六進数で出力
// Serial.print(" CC("); // 改行 Serial.print(cc, BIN); // ASCIIコードを十六進数で出力
// Serial.print(send[x], BIN); // ASCIIコードを十六進数で出力 Serial.println("]"); // 改行
// Serial.println(")"); // 改行 Serial.print(cc, BIN); // ASCIIコードを十六進数で出
// delay(200);
// }
cc = int8_t (~cc) + 1;
//hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
Serial.println(" 1 2 3 4 5 6 7 8 9 0 ");
cc = lng + 1;
Serial.print(" ");
Serial.print(freq);
for (int x = 0; x < 8; x++) { // ASCIIコード表を出力
// Serial.print(x, HEX);
Serial.print(" ");
Serial.print(MT91[x], HEX); // ASCIIコードを十六進数で出力
mySerial.print(MT91[x], HEX); // ASCIIコードを十六進数で出力
}
cc = int8_t (~cc) + 1;
Serial.print(" cc ");
Serial.print(cc);
Serial.print(" ");
Serial.println("............");
Serial.println(" //1 225.000MHz Rf on =0:$02,$FF,$FE,$FF,$DA,$FF,$25,$03");
Serial.println(" //1 234.250MHz Rf on =0:$02,$FF,$FE,$DD,$CB,$FF,$16,$03");
Serial.println(" //1 261.750MHz Rf on =0:$02,$FF,$FE,$D8,$9E,$FF,$46,$03");
Serial.println(" //1 234.250MHz Rf on =0:$02,$FF,$FE,$DD,$CB,$FF,$16,$03");
Serial.println(" //1 243.425MHz Rf on =0:$02,$FF,$FE,$EB,$BC,$FF,$57,$03");
Serial.println(" //1 252.625MHz Rf on =0:$02,$FF,$FE,$E9,$AD,$FF,$44,$03");
Serial.println(" //1 261.750MHz Rf on =0:$02,$FF,$FE,$D8,$9E,$FF,$46,$03");
Serial.println(" //1 271.050MHz Rf on =0:$02,$FF,$FE,$DF,$8E,$FF,$51,$03");
//1 243.425MHz Rf on =0:$02,$FF,$FE,$EB,$BC,$FF,$57,$03
//1 252.625MHz Rf on =0:$02,$FF,$FE,$E9,$AD,$FF,$44,$03
//1 261.750MHz Rf on =0:$02,$FF,$FE,$D8,$9E,$FF,$46,$03
//1 271.050MHz Rf on =0:$02,$FF,$FE,$DF,$8E,$FF,$51,$03
//1 280.250MHz Rf on =0:$02,$FF,$FE,$DD,$7F,$FF,$A2,$03
//1 289.475MHz Rf on =0:$02,$FF,$FE,$CB,$76,$FF,$BD,$03
//1 298.675MHz Rf on =0:$02,$FF,$FE,$C9,$67,$FF,$AE,$03
//1 307.850MHz Rf on =0:$02,$FF,$FE,$57,$F8,$FF,$AF,$03
}
byte decToBcd(byte val) {
return ( (val / 10 * 16) + (val % 10) );
}