Не могу разобраться почему не работает код
- Войдите на сайт для отправки комментариев
Ср, 19/05/2021 - 01:34
Здравствуйте, нужна помощь, не понимаю почему не работает код
Должно быть так что при -14 по цельсию левый мотор крутиться влево с 7500 О/М, а правый стоит.
При +20 левый стоит, а правый крутиться в диапозоне от 0 до 7500 о/м
При +80 оба крутятся вправо с 7500 о/м
Левый должен менять обороты от 7500 до 0 и от 0 до 7500 в зависимости от температуры
const int EN=7; const int EN2=4; const int LMotor1=5; // Вход 1 управления двигателем const int LMotor2=3; // Вход 2 управления двигателем const int RMotor1=6; const int RMotor2=9; double x; double val; double maxSpeed = 7500.0; void setup() { pinMode(EN2, OUTPUT); pinMode(EN, OUTPUT); pinMode(LMotor1, OUTPUT); pinMode(LMotor2, OUTPUT); pinMode(RMotor1, OUTPUT); pinMode(RMotor2, OUTPUT); analogWrite(EN,255); analogWrite(EN2,255); } void loop(){ double s=(255.0*maxSpeed)/16000.0; val = analogRead(A4); val = constrain(val, 76, 268); if (val<145) { x=map(val,76,145,-s,0); digitalWrite(LMotor1,HIGH); digitalWrite(LMotor2,LOW); analogWrite(EN,-x); } if (val==76) { digitalWrite(RMotor1,LOW); digitalWrite(RMotor2,LOW); } if (val>76) { digitalWrite(RMotor2,HIGH); digitalWrite(RMotor1,LOW); x=map(val,76,268,0,s+1); analogWrite(EN2,x); } if (val>145) { digitalWrite(LMotor2,HIGH); digitalWrite(LMotor1,LOW); x=map(val,145,268,0,s+1); analogWrite(EN,x); }} if (val==145) digitalWrite(LMotor1,LOW); digitalWrite(LMotor2,LOW); }
Здравствуйте, нужна помощь, не понимаю почему не работает код
Должно быть так
отлично, как оно должно быть - вы рассказали, теперь расскажите, как этот код работает на самом деле
А на самом деле он просто отказывается работать при любом значении s кроме 255, если s=255 он работает при полных оборотах.
И не при тех значениях меняет свое направление, то есть не при +20, а например при +40
а плата какая - Уно?
У Уно на 4 и 7 пине нет PWM, соответственно у вас всегда подается или полные обороты, или нуль
Я могу прикрепить ссылку на тинкеркад
https://www.tinkercad.com/things/7sz1icyRoxe-copy-of-dvigateli/editel?sharecode=A_M4NgtjdIELazQZD5uwOOysH5ZcaZEsOYwflPvkSto
Я могу прикрепить ссылку на тинкеркад
с какой целью? Вы лучше на вопрос о типе ардуины ответьте
Да, исправил, спасибо, теперь хотя бы подает признаки жизни, но почему то не выполняет все условия, то есть при обороты не ограничиваются
Да, уно, я не видел, уже исправил с пинами ошибку
ну дальше разбирайтесь со своими пропорциями, для меня так они выглядят очень сомнительными, там запросто может оказаться ошибка или выход за диапазон.
И не понятно, зачем у вас величина S рассчитывается с такими огромными коэффициентами и в double - множители можно сократить на тысячу, а вещественный тип тут не нужен, все равно фунция map() считает в целых
Спасибо, все заработало, я ошибся, основная проблема была с пинами. Все работает, огромное спасибо.