Приобрел motor shield и моторы gekko. Попытался поуправлять ими, но столкнулся с проблемой. Моторы начинают двигаться только тогда, когда на них подаешь максимальную скорость, используя ШИМ-управление (т.е. подаю значение 255). Иначе, при меньшем значении, например 150, моторы стоят, а шилд пищит... Но если сначала подал 255, то потом можно уменьшить скорость вплоть до 70, но если моторы снова вдруг встали на скорости 60 или ниже, то их нельзя запустить, не подав на них снова 255. Кто нибудь знает в чем может быть проблема??
Значит просто не хватает питания, спасибо. А как тогда мне их подключить к аккумуляторам? и какие лучше использовать? я приобрел также держатель на 4 батарейки АА...у меня просто есть как раз аккумуляторы обычные пальчиковые, но я так понимаю их не хватит чтобы запитать все?
Не факт. Попробуйте с одним моторчиком. Посмотрите вольтметром при "заклинившем" моторчике напряжение питания(+5V).
Если всё-таки будете подключать аккумулятор, то есть 2 варианта: 0) Вся ардуина питается от аккумулятора 1)От аккумулятора питается motor shield.
Если 0 вариант, то нельзя превышать 5 вольт(если ардуина не имеет LMки, иначе можно). Если 1 - то убедиться, что ардуино это позволяет.
Чуть не забыл - проблема может быть куда проще - попробуйте понизить частоту(не скважность, а именно частоту) PWM. Может просто драйвер двигателей не успевает.
Хороший вопрос. В нормальном AVR просто делитель выставляется, который перед счетчиком таймера. Как это сделать в ардуино хз. Покажите ваш код. А по этой библиотеке ардуино документация есть?
Да тут даже и библиотеки то нет подключаемой. Все пишется настандартном языке для ардуино(библиотеки есть стандартные). Я вот нашел одну подключаемую для мотор шилда, но не знаю подойдет ли она к моему. Называется . А мой код предельно прост:
Код
int EN1 = 6; // пин(скорость первого мотора)
int EN2 = 5; // пин(скорость второго)
int IN1 = 7; // пин(направление первого)
int IN2 = 4; // пин(направление вторго)
void Motor1(int pwm, boolean reverse) // pwm - значение скорости от 0 до 255, reverse - направление
{
analogWrite(EN1,pwm);
if(reverse) digitalWrite(IN1,HIGH);
else digitalWrite(IN1,LOW);
}
void Motor2(int pwm, boolean reverse)
{
analogWrite(EN2,pwm);
if(reverse) digitalWrite(IN2,HIGH);
else digitalWrite(IN2,LOW);
}
void forward()
{
Motor1(255,true);
Motor2(255,false);
delay(1500);
Motor1(0,true);
Motor2(0,false);
}
void setup()
{
int i;
for(i=5;i<=8;i++)
pinMode(i, OUTPUT);
Serial.begin(9600);
}
void loop()
{
char val;
while(1)
{
val = Serial.read();
if(val!=-1)
{
switch(val)
{
case 'w':
forward();
break;
}
}
}
}
Не понимаю за что все так любят это ардуино(особенно среду разработки). Для стандартного функционала - замечательно. Но как только шаг в сторону - куча неудобств.
Дмитрий Тимошенко пишет: неподскажите где можно найти программы для уравления ардуйно спомощью АРС 220?
Вы документацию прочитали? Она написана очень понятно. Если вкратце: оба модуля настраиваете с компьютера на одинаковые параметры. На ардуине: подключаете к uart. EN,SET - high. AUX - высокий при отправке, низкий при приёме. baudrate везде поставьте 9600.