Сохранение позиции Servo в EEPROM
- Войдите на сайт для отправки комментариев
Ср, 04/01/2017 - 10:07
Не получается сделать сохранение и чтение позиции Серво в EEPROM.
Что бы при включении Автоповоротов Серво не уходил в позицию Ноль или 180 градусов.....
/*тут глобальные переменные */ int S; // переменная для преобразования автоповоротов серво nt E_1; // переменная для экономии ресурсов ОЗУ EEPROM /*Тут переменные из класса...(локальные)*/ Servo ServoPovoroti; // сервопривод int pos; // текущее положение сервы int AutoIncrement; // увеличиваем перемещение на каждом шаге для Автоповоротов nt updateInterval; // промежуток времени между обновлениями unsigned long lastUpdate; // последнее обновление положения Sweeper (int interval) //часть кода из класса... { updateInterval = interval; AutoIncrement = 1; // шаг приращения положения сервы для Автоповоротов } // тут идёт другой код... void Update() //Функция отвечающая за Автоповороты серво { // if (Auto_Povorot == true) E_2 = 1; // if (Auto_Povorot == false && E_2 == 1)EEPROM.write(3, S / 118), E_2 = 0; if ((millis() - lastUpdate) > updateInterval) // время обновлять { lastUpdate = millis(); // записываем в lastUpdate новое значение pos += AutoIncrement; // AutoIncrement прибавляем +1 и присваиваем pos'у ServoPovoroti.write(pos); // Поворачиваем положение Сервы в соответствии с pos. if ((pos >= 130) || (pos <= 0)) // конец вращения и обратно... { // обратное направление сервы AutoIncrement = -AutoIncrement; } } } void setup() { ServoPovoroti.Attach(9); // Servo подключён на цифровой вход (pin 9) /* После подключения питания или перезагрузки, читаем значение из ячейки №1 ОЗУ умножаем это значение на 118 и записываем его в переменную L делаем это в void setup то бишь только один раз в момент подключения питания*/ S = EEPROM.read(3) * 118; } void loop() { if (Auto_Povorot == true) { //Если Auto_Povorot истина... ServoPovoroti.Update(); // ...тогда включаем Автоповороты серво } // бла бла бла... }
Вы пытаетесь двухбайтовую переменную сохранять в одном байте. используйте не read/write, а get/put и всё будет.
Чёт не получается. Не пойму как с данным классом правильно сделать, что бы работало.
Вместо 44 строки.
EEPROM Get
Отлично, Всем спасибо за помощь! :)