Arduino Nano, сервоприводы не поворачиваются больше 10 градусов

Добрый день.

Есть 2 сервопривода mg90s и sg90. И Arduino Nano.

не могу заставить поворачиваться ни один сервопривод больше 10-ти градусов, если указываю. больше 10-ти сервопривод молчит.

/* Sweep
 by BARRAGAN <http://barraganstudio.com>
 This example code is in the public domain.

 modified 8 Nov 2013
 by Scott Fitzgerald
 https://www.arduino.cc/en/Tutorial/LibraryExamples/Sweep
*/

#include <Servo.h>

Servo myservo;  // create servo object to control a servo
// twelve servo objects can be created on most boards

int pos = 0;    // variable to store the servo position

void setup() {
  myservo.attach(11);  // attaches the servo on pin 9 to the servo object
}

void loop() {
  for (pos = 0; pos <= 180; pos += 0.5) { // goes from 0 degrees to 180 degrees
    // in steps of 1 degree
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(30);                       // waits 15 ms for the servo to reach the position
  }
  for (pos = 180; pos >= 0; pos -= 0.5) { // goes from 180 degrees to 0 degrees
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(30);                       // waits 15 ms for the servo to reach the position
  }
}

А зачем ты в цикле for используешь глобальную переменную ?
И мне вот даже интересно стало, что будет если с переменной типа int производить такие манипуляции:
pos+=0.5;
, даже в голову не приходило, что так стоит делать

#include <Servo.h>

Servo myservo;  // create servo object to control a servo
// twelve servo objects can be created on most boards

int pos = 0;    // variable to store the servo position

void setup() {
  myservo.attach(11);  // attaches the servo on pin 11 to the servo object
}

void loop() {
  
  for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
    // in steps of 1 degree
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
 delay(1500);
  for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
 delay(1500);
}

Скетч бракованный :slight_smile:

Как-то пропустил этот момент. Но все равно, даже с целыми числами такая же беда(
скетч типа

#include <Servo.h>

Servo myservo;  // create servo object to control a servo
// twelve servo objects can be created on most boards



void setup() {
  myservo.attach(11);  // attaches the servo on pin 11 to the servo object
 myservo.write(90); 
}

void loop() {
 
}

тоже не работает, при значении больше 10 серва просто не реагирует.

А, если сделать pinMode(11,OUTPUT);
?

1 лайк

код из примеров точно работал

/* Sweep
 by BARRAGAN <http://barraganstudio.com>
 This example code is in the public domain.

 modified 8 Nov 2013
 by Scott Fitzgerald
 https://www.arduino.cc/en/Tutorial/LibraryExamples/Sweep
*/

#include <Servo.h>

Servo myservo;  // create servo object to control a servo
// twelve servo objects can be created on most boards

int pos = 0;    // variable to store the servo position

void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}

void loop() {
  for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
    // in steps of 1 degree
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15 ms for the servo to reach the position
  }
  for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15 ms for the servo to reach the position
  }
}

Там случайно “+” с “-” не перепутан на серве? )

Нет(

  • Красный
    Земля коричневая

значит тока не хватает

1 лайк

:slight_smile:
Ещё не вечер. Качалка от руки с натягам должна вращаться, если нет надо перебрать механизм, между стенкой и мотором вставить полоску бумаги, собрать-качалка должна свободно вращать редуктор обратной тягой.


Во так вот! :slight_smile: