Официальный сайт компании Arduino по адресу arduino.cc
ПОМОГИТЕ! Дергается мотор и сервопривод
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Ср, 09/12/2015 - 17:37
Здравствуйте! Мне очень нужна ваша помощь. Почему то дергается мотор назад и серво привод раз в минуту. Поескал на форумах и поспрашивал у друзей ни кто не знает. Питание менял не помогло. Код чатстично не я писал. Что делать скажите пожалуйста. Или расскажите что за 4 цифры у фунции. вот скеч:
#include <PS2X_lib.h> //for v1.6
#include <Servo.h>
PS2X ps2x;
int PS2 = 0;
Servo LXservo;
const int in1 = 2; // direction pin 1
const int in2 = 4; // direction pin 2
const int ena = 3; // PWM pin to change speed
int fspeed; // forward speed
void setup(){
LXservo.attach(6);
PS2 = ps2x.config_gamepad(13,11,10,12, true, true); //Настройка выводов: (clock, command, attention, data, true, true)
pinMode(in1, OUTPUT); // connection to L298n
pinMode(in2, OUTPUT); // connection to L298n
pinMode(ena, OUTPUT); // connection to L298n
pinMode(8, OUTPUT); // Фары
pinMode(9, OUTPUT); // Стопаки
pinMode(5, OUTPUT); // Стопаки от кнопки
pinMode(1, OUTPUT); // Поворот на лево
pinMode(7, OUTPUT); // Поворот на право
}
void loop(){
ps2x.read_gamepad();
if(ps2x.ButtonPressed(PSB_CIRCLE)) digitalWrite(8, HIGH);// круг
if(ps2x.ButtonPressed(PSB_TRIANGLE)) digitalWrite(8, LOW); // треугольник
if(ps2x.ButtonPressed(PSB_SQUARE)) digitalWrite(5, HIGH);// квадрат
if(ps2x.ButtonPressed(PSB_CROSS)) digitalWrite(5, LOW); //крестик
// if(ps2x.ButtonPressed(PSB_R1)) digitalWrite(7, HIGH);
// if(ps2x.ButtonPressed(PSB_R2)) digitalWrite(7, LOW);
if (ps2x.Analog(PSS_LY) == 128) {
analogWrite(ena, 0);
}
if (ps2x.Analog(PSS_LY) > 128){
fspeed = map(ps2x.Analog(PSS_LY), 129, 255 , 0, 255);
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
analogWrite(ena, fspeed);
// digitalWrite(9, HIGH);
// digitalWrite(1,HIGH);
// delay(500);
// digitalWrite(1,LOW);
}
if (ps2x.Analog(PSS_LY) < 128){
fspeed = map(ps2x.Analog(PSS_LY), 0, 127, 255, 0);
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
analogWrite(ena, fspeed);
digitalWrite(9, LOW);
}
LXservo.write(map(ps2x.Analog(PSS_RX), 0, 5, 5, 8));
if (ps2x.Analog(PSS_RX) < 120){
// digitalWrite(1, HIGH);
digitalWrite(7, LOW);
}
if (ps2x.Analog(PSS_RX) > 150){
digitalWrite(7, HIGH);
//digitalWrite(1, LOW);
}
if (ps2x.Analog(PSS_RX) > 120 && ps2x.Analog(PSS_RX) < 150){
// digitalWrite(1, LOW);
digitalWrite(7, LOW);
}
delay(50);
}
Дружище, ты его не то что бы частично не писал, ты в нем даже не пытался толком разбираться...
Совет, начинай с начала и сам раскоментируй все строки, что за что отвечает,
а когда сделаешь это, перестанешь вопросы глупые задавать.
да и чужие скетчи без комментов, мало кому интересно разбирать.
без обид. :)
по поводу твоих 4 цифр, тут телепатов мало, в глаза бросаются мало понятные, эти:
129, 255 , 0, 255
0, 127, 255, 0,
если да, то читай тут.
http://arduino.ru/Reference/Map
Удачи! :)