В продложение темы:
Макет радиостанции на модуле DRA818V
Принципиальная схема радиостанции:
Фото радиостанции:
Скетч:
#define CLK 4 // Логический пин на энкодере
#define DT 2 // Логический пин на энкодере
#define SW 5 // Кнопка на энкодере
#include <GyverEncoder.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SoftwareSerial.h>
#include <EEPROM.h>
SoftwareSerial mySerial(6, 7);
Encoder enc1(CLK, DT, SW); // Инициализация энкодера
LiquidCrystal_I2C lcd(0x27, 16, 2);
long freq_VHF = 1455000;
double ftx; // tx frequency in MHz (134.0000 - 174.0000)
double frx; // rx frequency in MHz (134.0000 - 174.0000)
String tx_ctcss = "0000"; // ctcss frequency ( 0000 - 0038 ); 0000 = "no CTCSS"
String rx_ctcss = "0000"; // ctcss frequency ( 0000 - 0038 ); 0000 = "no CTCSS"
int squ = 1;
int bw = 0;
void setup() {
mySerial.begin(9600);
Serial.begin(9600);
pinMode(CLK, INPUT_PULLUP); // Открываем пины энкодера
pinMode(DT, INPUT_PULLUP);
pinMode(10, OUTPUT);
enc1.setType(TYPE1);
lcd.init(); // Инициализация дисплея
lcd.backlight();
Hz();
}
void Hz() {
ftx = freq_VHF / 10000.0; frx = ftx;
mySerial.print("AT+DMOSETGROUP=");
mySerial.print(bw);
mySerial.print(",");
mySerial.print(ftx, 4);
mySerial.print(",");
mySerial.print(frx, 4);
mySerial.print(",");
mySerial.print(tx_ctcss);
mySerial.print(",");
mySerial.print(squ);
mySerial.print(",");
mySerial.println(rx_ctcss);
lcd.setCursor(0, 0);
lcd.print(freq_VHF);
lcd.setCursor(7, 0);
lcd.print(" ");
}
void loop() {
enc1.tick(); // Считываем энкодер
if (enc1.isClick()) Hz();
if (enc1.isRight() || enc1.isFastR() ) {
freq_VHF += 2500 ;
lcd.setCursor(0, 0);
lcd.print(freq_VHF);
lcd.setCursor(7, 0);
lcd.print("*");
}
else if (enc1.isLeft() || enc1.isFastL()) {
freq_VHF -= 2500 ;
lcd.setCursor(0, 0);
lcd.print(freq_VHF);
lcd.setCursor(7, 0);
lcd.print("*");
}
}
Тема форума:
https://forum.msevm.ru/index.php?topic=45
Copyright © R9AL 2024 Все права защищены