Программа "Orbitron" - это программа для слежения за спутниками (см. например
Интерфейс управления поворотным устройством),
предназначенная для радиолюбителей и любителей визуальных наблюдений. Ее также применяют
профессионалы-метеорологи и пользователи спутниковой связи. Программа показывает
положения спутников на любой заданный момент (как в реальном времени, так и в режиме
симуляции).
Для самодельного Контроллера поворотного
устройства на Arduino хотелось бы написать простую и надежную программу. И первая
задача - получать данные из программы "Orbitron".
#include <LiquidCrystal.h>
String datano,AZ,EL;
LiquidCrystal lcd(13, 12, 8, 7, 6, 5);
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
lcd.clear();
}
void loop() {
if (Serial.available()) {
datano = Serial.readString();
AZ = AZ+datano[1]+datano[2]+datano[3];
EL = EL+datano[5]+datano[6]+datano[7];
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("AZ:");
lcd.print(AZ);
lcd.setCursor(0, 1);
lcd.print("EL:");
lcd.print(EL);
AZ ="";
EL ="";
}
}
[Drivers] DDEOrbitronToSerial=C:\OTS\DDEOrbitronToSerial.exe
#include <LiquidCrystal.h>
LiquidCrystal lcd(13, 12, 8, 7, 6, 5);
extern uint8_t RusFont[];
extern uint8_t SmallFont[];
char data[100];
String datano, SN;
int separation;
float AZ, EL;
unsigned long DN, UP;
void treatment() {
char *datatreatment;
char *p = data;
while ((datatreatment = strtok_r(p, "/", &p)) != NULL) {
switch (separation) {
case 0:
SN = datatreatment;
break;
case 1:
AZ = atof(datatreatment);
break;
case 2:
EL = atof(datatreatment);
break;
case 3:
DN = atof(datatreatment);
break;
case 4:
UP = atof(datatreatment);
break;
}
separation++;
}
separation = 0;
}
void LCD_out() {
lcd.setCursor(0,0);
lcd.print("AZ:");
lcd.print(AZ);
lcd.setCursor(0,1);
lcd.print("EL:");
lcd.print(EL);
delay(3000);
lcd.setCursor(0,0);
lcd.print("DN:");
lcd.print(DN);
lcd.setCursor(0,1);
lcd.print("UP:");
lcd.print(UP);
}
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
lcd.clear();
}
void loop() {
if (Serial.available()) {
datano = Serial.readString();
datano.toCharArray(data, 100);
treatment();
LCD_out();
}
}