Новичек! Проблема с Adafruit motor shield

uuuux
Offline
Зарегистрирован: 27.01.2015

Приобрел Adafruit motor shield.

Примеры работы с ним взял с http://zelectro.cc/Adafruit_motor_shield все примеры работают (шилд целый, рабочий). Решил слелать машинку на ИК управлении.

Пример взял с https://arduino.ru/forum/proekty/robot-upravlyaemyi-s-lyubogo-ik-pulta

ближе к концу есть готовый скетч для моего шилда. Автор скетча упоминал про глюк возникший при перемешении выходовмоторов связаный с глюком библиотек. тем не менее у него работает а у меня скетч компилируется но робот ездить отказывается.

Плюнул! отработал управление светодиодами с ИК пульта. Получается! Светодиоды моргают!

Скомбинировал скетчи. Компилируются, грузятся, но движки не шевелятся!

Я его утюгом (тестером) пины отвечающие за движение не реагируют только на 4 пине 4.5вольт.

В чем глюк понять не могу!

выкладываю два варианта скетча

 #include <IRremote.h> // https://github.com/shirriff/Arduino-IRremote
#include <AFMotor.h>
#include <CyberLib.h>
#include <avr/wdt.h> 
#define RECV_PIN 10 // IR приемник


#define KEY1 0x20DF02FD
#define KEY2 0x20DF827D
#define KEY3 0x20DF8877
#define KEY4 0x20DF609F
#define KEY5 0x20DFE01F

AF_DCMotor motor1(1);
AF_DCMotor motor2(2);

	#define robot_go{motor1.run(FORWARD);motor2.run(FORWARD);}
	#define robot_back{motor1.run(BACKWARD);motor2.run(BACKWARD);}
	#define robot_left{motor1.run(FORWARD);motor2.run(BACKWARD);}
	#define robot_right{motor1.run(BACKWARD);motor2.run(FORWARD);}
	#define robot_stop{motor1.run(RELEASE);motor2.run(RELEASE);}
	
IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
  irrecv.enableIRIn(); 
  irrecv.blink13(true);  // включить мигание светодиода при приеме
  motor1.setSpeed(255);
  motor1.run(RELEASE);
  motor2.setSpeed(255);
  motor2.run(RELEASE);
}
int i;
void loop() { 
  if (irrecv.decode(&results)) {
    if (results.value == KEY1) {robot_go}
    else if (results.value == KEY2) {robot_back;} 
    else if (results.value == KEY3) {robot_left;}
    else if (results.value == KEY4) {robot_right;}
    else if (results.value == KEY5) {robot_stop;}
    
      irrecv.resume();  
  }
}

второй код (то же самое чуть чуть исправленное)

#include <IRremote.h> // https://github.com/shirriff/Arduino-IRremote
#include <AFMotor.h>

#define RECV_PIN 10 // IR приемник


#define KEY1 0x20DF02FD
#define KEY2 0x20DF827D
#define KEY3 0x20DF8877
#define KEY4 0x20DF609F
#define KEY5 0x20DFE01F

AF_DCMotor motor1(1);
AF_DCMotor motor2(2);

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
  irrecv.enableIRIn(); 
  irrecv.blink13(true);  // включить мигание светодиода при приеме
  motor1.setSpeed(255);
  motor1.run(RELEASE);
  motor2.setSpeed(255);
  motor2.run(RELEASE);
}
int i;
void loop() { 
  if (irrecv.decode(&results)) {
    if (results.value == KEY1) {motor1.run(FORWARD); motor2.run(FORWARD); motor1.setSpeed(255); motor2.setSpeed(255);}
    else if (results.value == KEY2) {motor1.run(RELEASE); motor2.run(RELEASE);} 
    else if (results.value == KEY3) {motor1.run(BACKWARD); motor2.run(BACKWARD); motor1.setSpeed(255); motor2.setSpeed(255);}
    else if (results.value == KEY4) {motor1.run(FORWARD);motor1.run(BACKWARD); motor1.setSpeed(155); motor2.setSpeed(155);}
    else if (results.value == KEY5) {motor1.run(BACKWARD);motor1.run(FORWARD); motor1.setSpeed(155); motor2.setSpeed(155);}
    
      irrecv.resume();  
  }
}

 

tesak47
Offline
Зарегистрирован: 22.01.2015

Такая же беда! Только у меня код маленько другой. На 7 пине 4,5в остальные тоже не реагируют. С драйвером на L298 все работало отменно. Кажется что косяк в конфликте библиотек.