серва
- Войдите на сайт для отправки комментариев
Сб, 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