Скетч из Aduino в Atmega328


вот такие выставлены

А зачем после чтения сохранял (записывал) фьюзы?

Ничего не делал ) нажал “Чтение” и все

Скриншот говорит об обратном. Ладно, пофик.

Покажи фото маркировки “голого” микроконтроллера.

пусть лучше руки покажет… не мыл небось.

Если без шуток - ставлю на то, что ТС где-то напортачил, да и все.
У него все через пень-колоду. Скриншоты путает, код неаккуратный.

… во фьюзах откровенных косяков нет.


Плохо видно, но обычная Atmega328P

Причем тут код, скриншот позже заметил, поправил. Если знаете в чем проблема помогите советом. Вопрос не в коде. Код работает на обычной Arduino, работает на прошитой Atmega на плате Arduino nano, не работает на голом камне и на Aduino Nano если выпаять кварц. Скетч Blink работает на голом камне без проблем

Я, из того что предоставлено, никаких «косяков» не вижу. Всё должно работать как положено.

В том то и дело, что явных косяков не видно, но… не работает. Вот это я и имел в виду, когда сказал про немытые руки.

Разобрался. Дело в том что потенциометр изначально находится не в 0 положении соответственно при отладке кода на макетке все работало, при переносе на голый камень значения в цикле case считывались не как для 0 и выполнение не запускалось. Разобрал корпус где стоит потенциометр открутил его дальше назад и все включилось. Нужно поправить чуть цикл case.
Почему так происходит для меня загадка. Может кто пояснит?
Сам потенциометр не возможно изначально в 0 выставить ввиду особенности корпуса где он находится

Ну вот, я же говорил. Все на соплях, потому и глючит.

И на мой вопрос в #15 вы так и не ответили, как связан диапазон потенциометра и ШИМ. Мне кажется, вы эти цифры сами не понимаете, поэтому и свитч - кейс у вас кривой.

Ну почему на соплях? Потенциометр там не выставить по другому он не в крайнем положении изначально. В зависимости от положения потенциометра идет плавная регулировка. В цикле case значения 190 максимальное потому что при отладке большего я не видел от сюда присваиваются значения от 0 до 255 для 8 уровней в переменную. Этот сигнал идет на транзистор который управляется логическим уровнем.
Если есть мысли как улучшить и не сталкиваться с такой проблемой буду рад послушать.
До другого я к сожалению не додумался.
Код конечно не идеальный, может и режет глаз, но как лучше это сделать я не знаю.
Любые советы приветствуются.

Слушайте, я уже скоро начну вас матом крыть. Ну как так можно написать двадцать строк и при этом не сказать ничего по сути.
На чем вы при отладке измеряли данные, когда вы увидели, что эти данные не более 190?

Через serial порт. Делал вывод данных в него и самой arduino ide смотрел. Исходя из данных обрезал диапазон и присваивал уже переменную каждому диапазону

&₽#@… каких данных?

Показаний потенциометра. Если из кода то значение переменной val_seat_1

Вместо D7 я ставлю DA

Вооот!
А теперь контрольный в голову.
Если у вас данные 0-190 на входе, так какого хрена вы эти 190 на выходе ограничиваете?

Судя по всему, у вас нет ни малейшего понимания, как работает эта строчка

и зачем она вообще нужна.

С помощью операции map() вы можете преобразовать любой диапазон данных с потенциометра в любой диапазон ШИМ. А не пихать эти 190 в третье место - оператор свитч, где оно вообще ни к селу ни к городу.

Измерьте, какие значения АЦП выдает потенциометр в крайних положениях ( когда он установлен в корпусе) и вставьте эти числа вместо 0 и 1023 в функцию МАП. А выходной ШИМ настройте на весь диапазоне 0-255, 190 там не к месту

2 лайка