02-01-2017, 15:40
Też robię rotor antenowy, ale bez sugerowania się rozwiązaniami z sieci, więc rozwiązania jakie zastosowałem są kompletnie inne.
To co mi się rzuciło w oczy to "EEPROM.write" w każdej pętli. Zastąp to chociaż "EEPROM.update" bo bardzo szybko wykończysz pamięć.
kolejna sprawa to :
eAz = EEPROM.read(0);
AZin = 255 * eAz;
przeliczanie azymutu (0-360) na (0-255) i odwrotnie wiąże się z zaokrąglaniem wyników do pełnych stopni co możne wprowadzać błędy 1 stopnia przy każdej zmianie pozycji rotora. Po kilkuset zmianach pozycja faktyczna będzie zupełnie inna niż wyświetlana (i kabelek możne ukręcić).
Do zapamiętywania pozycji wykorzystuj 2 komórki pamięci.
fragment mojego kodu:
pozAkt = pozDocel = (EEPROM.read (0) * 255 + EEPROM.read (1)); //odczyt
EEPROM.update (0, pozAkt / 255); EEPROM.update (1, pozAkt % 255); //zapis
Pozdrawiam
To co mi się rzuciło w oczy to "EEPROM.write" w każdej pętli. Zastąp to chociaż "EEPROM.update" bo bardzo szybko wykończysz pamięć.
kolejna sprawa to :
eAz = EEPROM.read(0);
AZin = 255 * eAz;
przeliczanie azymutu (0-360) na (0-255) i odwrotnie wiąże się z zaokrąglaniem wyników do pełnych stopni co możne wprowadzać błędy 1 stopnia przy każdej zmianie pozycji rotora. Po kilkuset zmianach pozycja faktyczna będzie zupełnie inna niż wyświetlana (i kabelek możne ukręcić).
Do zapamiętywania pozycji wykorzystuj 2 komórki pamięci.
fragment mojego kodu:
pozAkt = pozDocel = (EEPROM.read (0) * 255 + EEPROM.read (1)); //odczyt
EEPROM.update (0, pozAkt / 255); EEPROM.update (1, pozAkt % 255); //zapis
Pozdrawiam