Новичек! Проблема с Adafruit motor shield
- Войдите на сайт для отправки комментариев
Приобрел 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(); } }
Такая же беда! Только у меня код маленько другой. На 7 пине 4,5в остальные тоже не реагируют. С драйвером на L298 все работало отменно. Кажется что косяк в конфликте библиотек.