Помогите переделать скетч
- Войдите на сайт для отправки комментариев
Чт, 07/07/2016 - 07:30
Помогите переделать скетч из аналог крутилок серво в кнопки лев-прав серво
пример что надо https://yadi.sk/i/akZdm0Pct4zZE
скетч под крутилки
#include <Servo.h>
Servo servo1;
Servo servo2;
Servo servo3;
void setup()
{
servo1.attach(3);
servo2.attach(4);
servo3.attach(5);
Serial.begin(9600);
}
void loop()
{
int analog1 = map(analogRead(A0), 0, 1050, 0, 180);
int analog2 = map(analogRead(A1), 0, 1050, 0, 180);
int analog3 = map(analogRead(A2), 0, 1050, 0, 180);
servo1.write(analog1);
servo2.write(analog2);
servo3.write(analog3);
Serial.print("analog 1: ");
Serial.print(analog1);
Serial.print("analog 2: ");
Serial.print(analog2);
Serial.print("analog 3: ");
Serial.print(analog3);
delay(1000);
}
чувствую тебя щас направят в тему про обработку кнопок
логика такова что тебе надо взять 2 кнопки на каждую серву и опрашивать,есть переменная если брать твою же analogservo1, допустим первую кнопку нажал у тебя прибавилась единичка к analogservo1, нажал другую кнопку у тебя отнялась единичка от analogservo1
если по простому то вот так....только надо задержку небольшую ставить после инкременда декремента чтобы серва двигалась не очень быстро
if(digitalRead(knopka1,LOW)&&servoanalog1<180){ servoanalog1++; } if(digitalRead(knopka2,LOW)&&servoanalog1>0){ servoanalog1--; }управление серво двумя кнопками через два канала у меня работало, а вот именно как сделать чтобы через один аналог канал работало две кнопки на серву? еще и шагово?
аналогия такая же analogreed(knopka1=допустим 1000); делаем код ++...... дальше если analogreed(knopka1=допустим 500); то делаем код --.....
что то типа такого только чтобы через аналог
#include <Servo.h> #define ServoPin 9 //пин сервы #define BUT_1 4 //BUT_1 и BUT_2 - кнопки управления сервой (тут пин 4) #define BUT_2 5 //BUT_1 и BUT_2 - кнопки управления сервой (тут пин 5) #define SHAG 1 //шаг поворота сервы, в градусах Servo myServo; int angle = 0; //начальный угол void setup() { myServo.attach(ServoPin); myServo.write(angle); //состояние после включения pinMode(BUT_1, INPUT); //для считывания состояний кнопок pinMode(BUT_2, INPUT); //для считывания состояний кнопок // кнопки соединены с ардуиной стягивающим резистором! (т.е. когда не нажато 0 В) } void loop() { if (digitalRead(BUT_1)) angle = angle + SHAG; //если первая кнопка увеличим угол if (digitalRead(BUT_2)) angle = angle - SHAG;//если вторая уменьшим if (angle > 180) angle = 180; //ограничим угол сервы 0..180 if (angle < 0) angle = 0; myServo.write(angle); //задаем получившийся угол delay(300); // подождем перед следующим опросом }что то типа такого только чтобы через аналог
#include <Servo.h> #define ServoPin 9 //пин сервы #define BUT_1 4 //BUT_1 и BUT_2 - кнопки управления сервой (тут пин 4) #define BUT_2 5 //BUT_1 и BUT_2 - кнопки управления сервой (тут пин 5) #define SHAG 1 //шаг поворота сервы, в градусах Servo myServo; int angle = 0; //начальный угол void setup() { myServo.attach(ServoPin); myServo.write(angle); //состояние после включения pinMode(BUT_1, INPUT); //для считывания состояний кнопок pinMode(BUT_2, INPUT); //для считывания состояний кнопок // кнопки соединены с ардуиной стягивающим резистором! (т.е. когда не нажато 0 В) } void loop() { if (digitalRead(BUT_1)) angle = angle + SHAG; //если первая кнопка увеличим угол if (digitalRead(BUT_2)) angle = angle - SHAG;//если вторая уменьшим if (angle > 180) angle = 180; //ограничим угол сервы 0..180 if (angle < 0) angle = 0; myServo.write(angle); //задаем получившийся угол delay(300); // подождем перед следующим опросом }значения из воздуха смотри сам какое у тебя там будет значение и поставь диапазон...
if(analogRead(knopka)==1000){ servo++; } if(analogRead(knopka)==500){ servo--; }