серва
- Войдите на сайт для отправки комментариев
Сб, 03/02/2018 - 17:28
Ребята подскажите - двигаю серво вперед - все ок. если хочу обратно то не срзу срабатывает. если только угол на 15едениц больше. если прыгаю на 20 градусов то нормально вращается в любую сторону.
как бы получается можно добавлять градусы а серва не регирует. диапазон ее от 0 до 180
#include <Servo.h> Servo myservo; int pos,oldpos = 0; int mov=0; #include <IRremote.h> // подключаем библиотеку //цифры #include "Four7Seg74hc595.h" esl::Four7Seg74hc595 Micrometer(10,11,12); //10 SCLK //11 RCLK //12 DIO char sbuf[5]; //отображение цифр IRrecv irrecv(8); decode_results results; void setup() { Serial.begin(112500); irrecv.enableIRIn(); // запуск приемника myservo.attach(9); } void loop() { // постоянно считываем данные с приемника if (irrecv.decode(&results)) { // выводим в консольку, что получили, число в 16-ричном виде Serial.println(results.value, HEX); //FFE01F - //FFA857 + //FFFFFFFF повтор oldpos=pos; if(results.value == 0xFFE01F) {pos--; mov=0; } if(results.value == 0xFFA857) {pos++; mov=1 ;} if(results.value == 0xFF30CF) {pos=10; mov=2 ;} if(results.value == 0xFF18E7) {pos=30; mov=2 ;} if(results.value == 0xFF7A85) {pos=50; mov=2 ;} if(results.value == 0xFF10EF) {pos=70; mov=2 ;} if(results.value == 0xFF38C7) {pos=90; mov=2 ;} if(results.value == 0xFF5AA5) {pos=110; mov=2 ;} if(results.value == 0xFF42BD) {pos=130; mov=2 ;} if(results.value == 0xFF4AB5) {pos=150; mov=2 ;} if(results.value == 0xFF52AD) {pos=170; mov=2 ;} if(results.value == 0xFFFFFFFF) { if(mov ==0) {pos--; } if(mov== 1) {pos++; } } if (pos<=0) {pos=0;} if (pos>=180) {pos=180;} irrecv.resume(); // готовы принимать следующий сигнал Serial.println(pos); Serial.println(mov); } myservo.write(pos); delay(15); sprintf( sbuf, "%04u", String(pos).toInt() ); Micrometer.setDigits( sbuf, 4 ); Micrometer.update(); //показываем данные на дисплее //микрометер }
А сама машинка исправная? Если просто в цикле её туда сюда покрутить?
В цикле это не заметно будет. Стандартный пример беру и тоже самое. Серв новый. Библиотека видимо не очень
То что новый ничего не гарантирует, если в цикл засунуть задержки, должно быть заметно.
А еще я может чего-то не понимаю, но нафига тут вообще библиотека?
Серва подключается к выводу с PWM и ей можно управлять просто через analogWrite(); , только не будет красивых градусов а при значениях 0 и 255 будут крайние положения.
И всё таки начинать мучения нужно с проверки железа. Потому что скетч простой и начудить в нем негде.
Серва подключается к выводу с PWM и ей можно управлять просто через analogWrite(); , только не будет красивых градусов а при значениях 0 и 255 будут крайние положения.
Зачем такие извращения?
Для проверки достаточно примерно такого:
серв похоже действительно не рабочий - другой мелкий подкинул - заработало как ожидалось
То что новый ничего не гарантирует, если в цикл засунуть задержки, должно быть заметно.
А еще я может чего-то не понимаю, но нафига тут вообще библиотека?
Серва подключается к выводу с PWM и ей можно управлять просто через analogWrite(); , только не будет красивых градусов а при значениях 0 и 255 будут крайние положения.
И всё таки начинать мучения нужно с проверки железа. Потому что скетч простой и начудить в нем негде.
Бред.
Серво и ШИМ имеют общим только то что и там и там идут импульсы.
Главное тут - какие они.
https://www.raspberrypi.org/forums/viewtopic.php?f=37&t=113728