1)Включился, считал из EEPROM положения конденсаторов и частоту сигнала, номер антенны(1) 2)Получили сигнал "старт тюнер": 1.определяем частоту 2.номер антенны 3.ищем в памяти 4.ставим если нашли из памяти 4.1.проверяем, если плохо, то дальше. 5.Ищем минимум КСВ 6.Записываем в память частоту, положения, номер антенны Не могу дописать Код (Text): // Подключаем библиотеку дисплея: #include <LiquidCrystal.h> // Подключаем библиотеку шагового двигателя: #include <AccelStepper.h> // Создает класс шагового двигателя и объявляет какими ножками: AccelStepper stepper(AccelStepper::FULL4WIRE, 8, 9, 10, 11); AccelStepper stepper2(AccelStepper::FULL4WIRE, 2, 3, 4, 5); // Подключаем EEPROM - запоминать лучшее положение: #include <EEPROM.h> // Подключаем математические функции: #include "math.h" // Объявляем переменные и приводим их в порядок: float f = 0; float SWRpad = 0; float SWRotr = 0; float SWR = 0; // Прописываем пины индикатора: LiquidCrystal lcd(10, 11, 12, 13, 14, 15); void setup () { analogReference(DEFAULT); // Стандартное опорное напряжение 5 В. lcd.begin(16, 2); // Задаем размерность экрана, 2 строки по 16 символов. // Установление скорости оборотов двигателя в оборотах в минуту (RPM). stepper.setMaxSpeed(300.0); stepper.setAcceleration(100.0); stepper.moveTo(1000000); stepper2.setMaxSpeed(300.0); stepper2.setAcceleration(100.0); stepper2.moveTo(1000000); // Указываем скорость работы с портом: Serial.begin(9600); } void loop () { value = EEPROM.read(a); f = analogRead(A0); // Читаем частоту сигнала. SWRpad = analogRead(A2); // Читаем напряжение падающей волны. SWRotr = analogRead(A1); // Читаем напряжение отраженной волны. // Расчет и вывод КСВ: SWR = (SWRpad + SWRotr)/(SWRpad - SWRotr); // Определяем номер шага и значение SWR - сравниваем, что запомнили вначале, если новое значение лучше, то запоминаем новое и номер шага. // После полного оборота выбираем лучшее. lcd.setCursor(0, 0); lcd.print("SWR"); if (SWR < 1.3) { lcd.setCursor(4, 0); lcd.print("<1.3"); } else if (SWR > 3) { // Read new position int f = analogRead(A0); stepper.moveTo(f); stepper.setSpeed(100); stepper.runSpeedToPosition(); if (SWR < 1.3) { lcd.setCursor(4, 0); lcd.print(SWR) { delay(1000); // Задержка и очистка экрана: delay (100); lcd.clear(); }
надо еще полную прокрутку двигателя сделать до замыкания кнопки в крайнем положении. при включении контроллер не знает, в каком положении стоит двигатель. тюнер на шаговиках?