Smart Car Kit - вопрос по коду
- Войдите на сайт для отправки комментариев
Вс, 25/08/2019 - 15:23
Господа, купил себе сей набор. Собрал машину, которая на IR управлении работает. Собрал не так как в инструкции, а пины раскинул так как хотел и все испортилось. Правил уже код и так и эдак, не понимаю, что с ним не так.
На выходе крутятся только колеса левой стороны, правая не крутится.
Подаешь просто сигнал на пины, все движки работают, а в коде, который с IR пультом - крутится только левая сторона.
Помогите пожалуйста. Что с кодом не так?
#include <IRremote.h> // вариант переделанный на пины 2,3,4,5,6,7 int RECV_PIN = 12; // IN1=2; IN2=4; IN3=6; IN4=7; ENA=3; ENB=5; IRrecv irrecv(RECV_PIN); decode_results results; #define IR_Go 0x00ff629d #define IR_Back 0x00ffa857 #define IR_Left 0x00ff22dd #define IR_Right 0x00ffc23d #define IR_Stop 0x00ff02fd #define IR_ESC 0x00ff52ad int ENA=3; //adjusting speed int ENB=5; //adjusting speed // int IN2=4; // defining pin7 left rear int IN1=2; // defining pin6 left front int IN4=7; // defining pin4 right rear int IN3=6; // defining pin2 right front unsigned char Lpwm_val = 200; unsigned char Rpwm_val = 200; int Car_state=0; void M_Control_IO_config(void) { pinMode(IN2,OUTPUT); // pin7 pinMode(IN1,OUTPUT); // pin6 pinMode(IN4,OUTPUT); // pin4 pinMode(IN3,OUTPUT); // pin2 pinMode(ENA,OUTPUT); // pin3 (PWM) pinMode(ENB,OUTPUT); // pin5 (PWM) } void Set_Speed(unsigned char Left,unsigned char Right) { analogWrite(ENB,Left); analogWrite(ENA,Right); } void advance() // going forward { digitalWrite(IN4,LOW); // making motor move towards right rear digitalWrite(IN3,HIGH); digitalWrite(IN2,LOW); // making motor move towards left rear digitalWrite(IN1,HIGH); Car_state = 1; } void turnR() //turning right(dual wheel) { digitalWrite(IN4,LOW); //making motor move towards right rear digitalWrite(IN3,HIGH); digitalWrite(IN2,HIGH); digitalWrite(IN1,LOW); //making motor move towards left front Car_state = 4; } void turnL() //turning left(dual wheel) { digitalWrite(IN4,HIGH); digitalWrite(IN3,LOW ); //making motor move towards right front digitalWrite(IN2,LOW); //making motor move towards left rear digitalWrite(IN1,HIGH); Car_state = 3; } void stopp() //stop { digitalWrite(IN4,HIGH); digitalWrite(IN3,HIGH); digitalWrite(IN2,HIGH); digitalWrite(IN1,HIGH); Car_state = 5; } void back() //back up { digitalWrite(IN4,HIGH); //making motor move towards right rear digitalWrite(IN3,LOW); digitalWrite(IN2,HIGH); //making motor move towards left rear digitalWrite(IN1,LOW); Car_state = 2; } void IR_Control(void) { unsigned long Key; while(Key!=IR_ESC) { if(irrecv.decode(&results)) //judging if serial port receives data { Key = results.value; switch(Key) { case IR_Go:advance(); //forward break; case IR_Back: back(); //back break; case IR_Left:turnL(); //Left break; case IR_Right:turnR(); //Right break; case IR_Stop:stopp(); //stop break; default: break; } irrecv.resume(); // Receive the next value } } stopp(); } void setup() { M_Control_IO_config(); Set_Speed(Lpwm_val,Rpwm_val); irrecv.enableIRIn(); // Start the receiver Serial.begin(9600); //initializing serial port, Bluetooth used as serial port, setting baud ratio at 9600 stopp(); } void loop() { if (irrecv.decode(&results)) { if(results.value == IR_Stop )IR_Control(); irrecv.resume(); // Receive the next value } }
сей набор.
Какой "сей"?
Собрал не так как в инструкции, а пины раскинул так как хотел
Какая была схема в инструкции? Какую схему собрали Вы? Каков был оригинальный скетч?
Хрустальные шары тут запрещены, так что рисуйте, не ленитесь.
1. Набор
https://ru.aliexpress.com/item/32879857483.html?spm=a2g0s.9042311.0.0.274233edRxnE5U
2. Мануал
https://drive.google.com/file/d/1WyxGwQC6I_8SzjpixWWoVntEHE9ungMg/view?usp=sharing
3. Схема соединения Ардуины и сенсор шилда
https://drive.google.com/file/d/1LzT2f4A0vijz35W5lq6I3IBh7cL3h-Y1/view?usp=sharing
Схема сбора, которая в мануале. Честно скажу, что ее не тестил, захотел свою распиновку. С тех пор пытаюсь ее наладить.
Исходный код
Моя схема
Перерисовать не смогу...
пины на Ардуине и соответственно на L298N
ENA - 3
ENB - 5
IN1 - 2
IN2-4
IN3-6
IN4-7
Код по которому проверял сборку схемы. По данному коду все работает, сначала робот едет вперед, потом назад, потом поворачивается по часовой стрелке, потом против часовой.
Я не понял - если все работает, в чем вопрос тогда? И на схеме нагляднее - на слух нифига не понятно в чем разница подключений . Нарисуй хоть в тетради ручкой и сфотай.
Я не понял - если все работает, в чем вопрос тогда? И на схеме нагляднее - на слух нифига не понятно в чем разница подключений . Нарисуй хоть в тетради ручкой и сфотай.
Работает только когда простой код: ехать вперед, ехать назад итд.
В первом посте описание проблемы. Там код для управления робота с пульта кправления, он не работает.
Ок. Схему позже нарисую
Если в Вашем подключении моторы без ик управления работают нормально, то значит проблема с ик приёмником. Проверяйте, правильно ли он подключен - на те ли выводы подано питание, и к 12 ли пину ардуино подключен сигнал. Добавьте в скетч вывод полученного значения в монитор - получает ли Ваш приёмник что-то, и если получает, сравните полученное с ожидаемым (то, что в начале скетча в дефайнах).
мда.с таким кодом не берут в программисты.