Нужен совет по поводу сервы

JesterKING
Offline
Зарегистрирован: 09.03.2021

Всем привет. У меня такой вопрос: есть снова на 360 градусов, можно ли управлять вращением сервы с помощью потенциометра?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

можно!

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Можно даже с помощью волшебной палочки.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Или крепкого слова. 

JesterKING
Offline
Зарегистрирован: 09.03.2021
#include <Servo.h>

Servo servo1;



void setup() {
servo1.attach(5);
}

void loop() {
int potent = analogRead(A0);
potent = map(potent,0,1023,0,90);
servo1.write(potent);
}

Каким образом усовершенствовать код, чтобы когда потенциометр стоял в среднем положении серва не крутиласть, когда повернут в лево или право то серва крутится по часовой или против? Подскажите пожайлуста

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

в момент, когда резистор посредине, сказать ему "Стой!!! Раз-два."

JesterKING
Offline
Зарегистрирован: 09.03.2021

То есть написать условие? Через if?

sadman41
Offline
Зарегистрирован: 19.10.2016

Так не работает?

potent = map(potent,0,1023,-90,90);

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Так на сколько должна крутиться серва?

На 90?

На 180?

На 360?

JesterKING
Offline
Зарегистрирован: 09.03.2021

360

lilik
Offline
Зарегистрирован: 19.10.2017

Нужно определить угол при котором вал неподвижен.

JesterKING
Offline
Зарегистрирован: 09.03.2021
#include <Servo.h>

Servo servo1;



void setup() {
Serial.begin(9600);
servo1.attach(6);
}

void loop() {
int potent = analogRead(A0);
potent = map(potent,0,1024,0,90);
servo1.write(potent);

 При этом коде серва вообще не крутится

lilik
Offline
Зарегистрирован: 19.10.2017
#include <Servo.h> // подключение библиотеки Servo
Servo servo1;
const int pinServo=8; // Пин для подключения сервопривода
const int POT=0; // Аналоговый вход A0 для подключения потенциометра
int valpot = 0; // переменная для хранения значения потенциометра
int angleServo = 0; // переменная для хранения угла поворота сервы
void setup()
{
Serial.begin(9600); // подключаем последовательный порт  
servo1.attach(pinServo);// подключить переменную servo к выводу pinServo
}
void loop()
{
valpot = analogRead(POT); // чтение данных потенциометра
delay(50); // пауза для ожидания 
if(abs(valpot - analogRead(POT))>5){
valpot = analogRead(POT); // повторное чтение данных потенциометра 
Serial.print("ДАННЫЕ С ПОТЕНЦИОМЕТРА         ");Serial.print(valpot);Serial.println();
angleServo=map(valpot,0,1023,0,180);// масштабируем значение к интервалу 0-180
;Serial.print("УГОЛ ПОВОРОТА СЕРВОПРИВОДА    ");Serial.print(angleServo);Serial.println();
servo1.write(angleServo);// поворот сервопривода на полученный угол
}
}

Недели 3 назад на кружке с детьми баловались вот этим скетчем.