Программа "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(); } }