ARDUINO Автоматическое мусорное ведро. Обсуждение проекта

Bruzzer

★★★✩✩✩✩
23 Май 2020
476
137
@Gomerchik,
Внесены изменения, чтобы включить возможность плавного разгона и торможения заложенные в ServoSmooth
Закомментированные исходные строки помечены --Br
Добавленные строки помечены ++Br
Надо экспериментально подобрать значения SERVO_SPEED SERVO_ACCEL WAIT_FINISH
Длительность WAIT_FINISH должна быть достаточной для полного открывания или закрывания крышки. Но не слишком ИЗЛИШНЕ большой, чтобы не тратить батарейку.
В исходном коде на открывание или закрывание отводилось 1000 мс

У вас в скетче угол открытия и закрытия 5 и 180. Если это указано с сильно большим запасом и серва утыкается в препятствие сильно раньше,, то может не быть эффективного торможения.
 

Вложения

draydon

✩✩✩✩✩✩✩
24 Июн 2024
2
0
Доброго времени.
Не подскажите в чем кроется причина.
При включении серва открывается, ждёт и потом закрывается (как и должно). Потом при первом приближении к датчику серва открывается, ждёт заданное время, закрывается (как и должно). И по логике вещей должна уйти в сон (что она и делает), с ежесекундной проверкой датчика. Но система повторно больше не просыпается.
 

Bruzzer

★★★✩✩✩✩
23 Май 2020
476
137
По коду - МК должен засыпать сразу после стартового открытия. Т.к. команда спать - дается в начале каждого цикла loop
C++:
void loop() {
  LowPower.powerDown(SLEEP_1S, ADC_OFF, BOD_OFF);  // спать 1 секунду
Получается у вас первые просыпания происходят нормально, а потом перестают работать.
На первый взгляд, это скорее всего связано с питанием. Попробуйте запитать от блока питания.

Или можно на время поиска причин, вынуть батарейки, и питать от USB. (если серва не маломощная, то отключить ее)
Включить режим отладки, Заменив #define debug 0 на #define debug 1
И посмотреть в мониторе COM порта, что происходит.
 
Изменено:

draydon

✩✩✩✩✩✩✩
24 Июн 2024
2
0
@Bruzzer,
Попробовал, посмотрел.
Всё также.
Не просыпается после первого срабатывания от руки. - первый скрин
После первого срабатывания при включении с некоторым шансом происходит само срабатывание (причем вне зависимости от выставленной дистанции срабатывания).
Если закоментить ту часть про сон, то работает какое-то время нормально, но потом зависает после закрытия (из нескольких попыток получилось от 9 до 12 раз открыть/закрыть).
Скрин 2 - после 6 раза зависло при этом HC-SR04 дистанцию показывает +- правдивую.
Смена самой ардуино и HC-SR04 не чему не привели. (брал 1 платы нано на старом бутлоадере и 2 на новом)

first.PNGsecond.PNGthird.jpg
 

Bruzzer

★★★✩✩✩✩
23 Май 2020
476
137
@draydon,
Попробуйте полностью отключить серво. (Питание и управление). Если данные с УЗ датчика будут поступать без зависаний, то скорее всего зависает из-за серво.
На графиках COM порта не совсем понятно - после зависания, данные по COM порту совсем перестают поступать?