NRF24L01 джостик L298N
- Войдите на сайт для отправки комментариев
Пт, 12/01/2018 - 21:59
Друзья, решил собрать машинку на Ардуино. Собрал по проводам и подключению все правильно, но когда джостик стоит в начальном положении мотор пищит, при наклоне джостика мотор перестает пищять, думаю дело в коде, помогите кто может!)
Машина
#include <SPI.h>
#include "RF24.h"
RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int msg[1];
int data;
int fspeed; // forward speed
int bspeed; // backward speed
int lspeed; // left speed
int rspeed; // right speed
const int in1 = 2; // direction pin 1
const int in2 = 4; // direction pin 2
const int ena = 5; // PWM pin to change speed
const int in3 = 7; // direction pin 3
const int in4 = 8; // direction pin 4
const int enb = 3; // PWM pin to change speed
void setup()
{
pinMode(in1, OUTPUT); // connection to L298n
pinMode(in2, OUTPUT); // connection to L298n
pinMode(ena, OUTPUT); // connection to L298n
pinMode(in3, OUTPUT); // connection to L298n
pinMode(in4, OUTPUT); // connection to L298n
pinMode(enb, OUTPUT); // connection to L298n
delay(50);
radio.begin();
radio.openReadingPipe(1,pipe);
radio.startListening();
}
void loop()
{
if (radio.available())radio.read(msg, 1);
if (msg[0] >=1 && msg[0] <=63)data = msg[0], rspeed = map(data, 126, 64, 0, 255), right(rspeed);
if (msg[0] >=64 && msg[0] <=127)data = msg[0], lspeed = map(data, 63, 1, 0, 255), left(lspeed);
if (msg[0] >=128 && msg[0] <=189)data = msg[0], bspeed = map(data, 255, 201, 0, 255), backward(bspeed);
if (msg[0] >=201 && msg[0] <=255)data = msg[0], fspeed = map(data, 189, 128, 0, 255), forward(fspeed);
if (msg[0] >190 && msg[0] <200)data = msg[0], stop();
}
void stop()
{
analogWrite(ena, 0);
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
}
void forward(int fspeed)
{
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
analogWrite(ena, fspeed);
}
void backward(int bspeed)
{
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
analogWrite(ena, bspeed);
}
void right(int rspeed)
{
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(enb, rspeed);
}
void left(int lspeed)
{
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
analogWrite(enb, lspeed);
}
пульт
#include <SPI.h>
#include "RF24.h"
RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int msg[1];
int potpin_1 = A0;
int val_1;
int potpin_2 = A1;
int val_2;
void setup(void){
radio.begin();
radio.openWritingPipe(pipe);
}
void loop() {
val_1 = analogRead(potpin_1),val_1 = map(val_1, 0, 1023, 0, 127),msg[0] = val_1,radio.write(msg, 1);
val_2 = analogRead(potpin_2),val_2 = map(val_2, 0, 1023, 128, 255),msg[0] = val_2,radio.write(msg, 1);
}
Забыл, на NRF24l01 конденсаторы не припаяны и на моторы тоже
1. Вы уверены, что Вы точно понимаете, что происходит в строка 17 и 18? Что Вы точно знаете. что означает ","?
Давайте Вы их разбьёте на нормальные операции, а потом Выведете в монитор порта считанные значения и полюбуете на них. Думаю, что все вопросы снимутся.
1. Вы уверены, что Вы точно понимаете, что происходит в строка 17 и 18? Что Вы точно знаете. что означает ","?
Давайте Вы их разбьёте на нормальные операции, а потом Выведете в монитор порта считанные значения и полюбуете на них. Думаю, что все вопросы снимутся.
Нужно ставить точки, а не занятые?
Вы где-то у меня увидели точки?
Сделали, что я сказал? Посмотрели?
Вы где-то у меня увидели точки?
Сделали, что я сказал? Посмотрели?
не гоните, дайте человеку с точками и запятыми разобраться))))