Опять и снова плавный пуск движков
- Войдите на сайт для отправки комментариев
Вс, 02/02/2020 - 15:54
Народ, делаю танк с аля автопилотом и уткнулся в проблему плавного пуска и торможения. Подскажите способ записи который не будет постоянно сбрасываться и не будет зацикливаться только на одной ситуации.
Проблема в том, что как только я пытаюсь вписать плавный разгон. Он либо начинает плавно разгоняться и сбрасывать скорость, либо просто разгонится и при появлении препятствия не видит его. Это рабочая версия кода, без плавностей
Moderator : пожалуйста, вставьте код правильно (возможно, новым сообщением в тему),
Вставьте код правильно. Как это сделать - есть приколоченная тема на форуме.
#include <NewPing.h> #define PIN_TRIG 12 #define PIN_ECHO 11 #define MAX_DISTANCE 400 #define SMOOTH_TIME 200 NewPing sonar(PIN_TRIG, PIN_ECHO, MAX_DISTANCE); unsigned long currentTime; const int PIN_IK_LEFT = 6; const int PIN_IK_RIGHT = 7; // Данные с датчика Y63 void setup() { delay(400); Serial.begin(9600); pinMode (5, OUTPUT); pinMode (4, OUTPUT); pinMode (8, OUTPUT); pinMode (2, OUTPUT); pinMode (PIN_TRIG, OUTPUT); pinMode (PIN_ECHO, INPUT); pinMode(PIN_IK_LEFT, INPUT); pinMode(PIN_IK_RIGHT, INPUT); } void loop() { // Получаем значение от датчика расстояния и сохраняем его в переменную unsigned int distance = sonar.ping_cm(); // Печатаем расстояние в мониторе порта //Serial.print(distance); //Serial.println("см"); boolean left = digitalRead(PIN_IK_LEFT); boolean right = digitalRead(PIN_IK_RIGHT); if (millis() - currentTime > 50) { currentTime = millis(); if (distance >= 11 && left == true && right == true) { Serial.print(distance); Serial.println("см"); digitalWrite (8, HIGH); digitalWrite (5, HIGH); digitalWrite (4, LOW); digitalWrite (2, LOW); } else if (distance < 10 && left == true && right == true) { Serial.println("смAAAAAA"); digitalWrite (8, LOW); digitalWrite (5, HIGH); digitalWrite (4, LOW); digitalWrite (2, LOW); } else if (distance >= 11 && left == false && right == true) { Serial.println("bbbbb"); Serial.println("BBBBB"); digitalWrite (8, LOW); digitalWrite (5, HIGH); digitalWrite (4, HIGH); digitalWrite (2, LOW); } else if (distance < 10 && left == false && right == true) { Serial.println("ccccccc1"); Serial.println("CCCCCCC12"); digitalWrite (8, LOW); digitalWrite (5, HIGH); digitalWrite (4, HIGH); digitalWrite (2, LOW); } else if (distance >= 11 && left == true && right == false) { Serial.println("12"); Serial.println("21"); digitalWrite (8, HIGH); digitalWrite (5, LOW); digitalWrite (4, LOW); digitalWrite (2, HIGH); } else if (distance < 10 && left == true && right == false) { Serial.println("rrrrrrr2"); Serial.println("RRRRRRR23"); digitalWrite (8, HIGH); digitalWrite (5, LOW); digitalWrite (4, LOW); digitalWrite (2, HIGH); } else if (distance < 10 && left == false && right == false) { Serial.println("zzzzz3"); Serial.println("ZZZZZ34"); digitalWrite (8, LOW); digitalWrite (5, LOW); digitalWrite (4, HIGH); digitalWrite (2, HIGH); } else if (distance >= 10 && left == false && right == false) { Serial.println("xxxxx4"); Serial.println("XXXXX45"); digitalWrite (8, HIGH); digitalWrite (5, LOW); digitalWrite (4, LOW); digitalWrite (2, HIGH); } } }Проблема в том, что как только я пытаюсь вписать плавный разгон.
Т.е. проблема в плавном разгоне?
Это рабочая версия кода, без плавностей
И что она здесь делает? Нахрена она нам, если она не показывает проблемы?