Привет всем. Нужны два небольших скетча.

Dj_ArtOkisS

✩✩✩✩✩✩✩
2 Апр 2020
10
0
Необходимы 2 скетча для танка.. Что имеем:
Передатчик: Ардуино нано + 2 джойстика + nRF24L01
Приемник: Ардуино Уно + 2 движка + L298N + nRF24L01
Искал скетчи прям такого не нашел который надо. Идея такая что бы за каждый движок(гусеницу) отвечал 1 джойстик.
Вот на примере этих скетчей хотел загрузиться.
 

Вложения

Последнее редактирование:

Dj_ArtOkisS

✩✩✩✩✩✩✩
2 Апр 2020
10
0
@PiratFox, Привет. Да есть вопрос. Вот кусок из скетча приёмника.
if(joystick[3]<500)
{ pwm2 = map(joystick[3],500,0,0,255);
analogWrite(6,pwm2);
digitalWrite(18,HIGH);
digitalWrite(19,LOW);
что означают чифры 18 и 19? пинов таких нет на схеме
Да и еще, скетчи там написаны под 3 джойстика с кнопками на передатчике и двух драйверах L293D на прёмнике(их у меня нет). но можно и без них(смотрел на ютубе, автора не нашел)
 

Вложения

Dj_ArtOkisS

✩✩✩✩✩✩✩
2 Апр 2020
10
0
@PiratFox, Пробовал подключать все по схеме, в итоге работает только 1 дж на один двигатель, второй ни в какую.. Вот уже 3 день пытаюсь методом тыка переписывать скетч, безрезультатно.
Что выяснил: работает джойстик на пине А4 аналог на передатчике, который управляет движком через L298N через А4 и А5 на приёмнике.
Второй движок подключается почему то на А3 и !D10!!(на приёмнике), хотя он должен считывать аналог.
Прикладываю схему передатчика
 

Вложения

Старик Похабыч

★★★★★✩✩
14 Авг 2019
1,652
409
Москва
18 и 19 для ардуино уно и нано это пины A4 и А5. Да, так можно.
Но и возможен вариант. что это скетчи не для уно -нано
 

PiratFox

★★★✩✩✩✩
13 Фев 2020
478
105
Харьков
Сбивают с толку человека номера. А0 - так это цифровой 14. Ну и далее по порядку.
 
Последнее редактирование:

Dj_ArtOkisS

✩✩✩✩✩✩✩
2 Апр 2020
10
0
Спасибо мужики, теперь немного все прояснилось) буду пробовать)
 

Dj_ArtOkisS

✩✩✩✩✩✩✩
2 Апр 2020
10
0
@PiratFox,
Чет не хочет никак, все что не изменяет было удалено из скетча. Так же вращает 1 движок 1 джойстиком, второй не реагирует..
Скетч Передатчика(пульта):
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#define CE_PIN 9
#define CSN_PIN 10
#define JOYSTICK_1_Y A1
#define JOYSTICK_2_Y A4
const uint64_t pipe = 0xE8E8F0F0E1LL;
RF24 radio(CE_PIN, CSN_PIN);
int joystick[9];
void setup()
{

radio.begin();
delay(2);
radio.setChannel(9);
radio.setDataRate(RF24_250KBPS);
radio.setPALevel(RF24_PA_HIGH);
radio.openWritingPipe(pipe);
}
void loop()
{

joystick[1] = analogRead(JOYSTICK_1_Y);

joystick[3] = analogRead(JOYSTICK_2_Y);

radio.write( joystick, sizeof(joystick) );
}

Скетч Приёмника:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <Servo.h>
#define CE_PIN 2
#define CSN_PIN 9
int pwm = 0;
int pwm2 = 0;
const uint64_t pipe = 0xE8E8F0F0E1LL;
RF24 radio(CE_PIN, CSN_PIN);
int joystick[9];
//unsigned long time;
void setup()
{

delay(50);
radio.begin();
radio.setChannel(9);
radio.setDataRate(RF24_250KBPS);
radio.setPALevel(RF24_PA_HIGH);
radio.openReadingPipe(1,pipe);
radio.startListening();
}


void loop()
{
if ( radio.available() )
{
bool done = false;
while (!done)
{
done = radio.read( joystick, sizeof(joystick) );

if(joystick[1]>500 && joystick[1]<524)
{ digitalWrite(A2,LOW);
digitalWrite(A3,LOW);
}
if(joystick[1]>524)
{ pwm = map(joystick[1], 524,1024,0,255);
analogWrite(5,pwm);
digitalWrite(A2,LOW);
digitalWrite(A3,HIGH);
}
if(joystick[1]<500)
{ pwm = map(joystick[1],500,0,0,255);
analogWrite(5,pwm);
digitalWrite(A2,HIGH);
digitalWrite(A3,LOW);
}

if(joystick[3]>500 && joystick[3]<524)
{ digitalWrite(A4,LOW);
digitalWrite(A5,LOW);
}
if(joystick[3]>524)
{ pwm2 = map(joystick[3], 524,1024,0,255);
analogWrite(6,pwm2);
digitalWrite(A4,LOW);
digitalWrite(A5,HIGH);
}
if(joystick[3]<500)
{ pwm2 = map(joystick[3],500,0,0,255);
analogWrite(6,pwm2);
digitalWrite(A4,HIGH);
digitalWrite(A5,LOW);
}
}
}
else
{
}
}
 

Старик Похабыч

★★★★★✩✩
14 Авг 2019
1,652
409
Москва
Ну ты проверь, что получаешь хотя бы. Есть ли какие данные на воходе.
подключи приемник к монитору порта и после строки
done = radio.read( joystick, sizeof(joystick) );
вставь строку
Serial.print(joystick[1] );Serial.print(" ");Serial.println(joystick[3] );

Не забудь в setup добавить
Serial.begin(9600)

Выводить должно 2 числа, которые при изменении положения джойстиков должны меняться
 

Старик Похабыч

★★★★★✩✩
14 Авг 2019
1,652
409
Москва
Уже пол дела сделано. Тогда проверяй соединение от аналоговых пинов А4 А5 и цифрового 6 к драйверу. если есть мультиметр, то можно промерить значения между А4 и А5, а так же значение между 6 и землей.

А кстати. что то не вижу настройеи пинов на вывод. добавь в setup на всякий случай
pinMode(6,OUTPUT);
pinMode(A4,OUTPUT);
pinMode(A5,OUTPUT);
 

Dj_ArtOkisS

✩✩✩✩✩✩✩
2 Апр 2020
10
0
@Старик Похабыч,
pinMode(A4,OUTPUT);
pinMode(A5,OUTPUT); Это на приемнике получается выводы на in1 и in2 (на драйвер 298), то биш на один движок.

Значит
pinMode(5,OUTPUT);
pinMode(A2,OUTPUT);
pinMode(A3,OUTPUT) Будет на второй движок верно?
 

Старик Похабыч

★★★★★✩✩
14 Авг 2019
1,652
409
Москва
Да, иногда без явного объявления работы не пашет вавод. у меня вот 13 пин (что со встроенным светодиодом) работал на вывод , а у другого человека нет. Может и от версии ардуино иде зависить
 

Dj_ArtOkisS

✩✩✩✩✩✩✩
2 Апр 2020
10
0
Здесь не чат! Сообщения можно редактировать
@Старик Похабыч, странно, сейчас поменял местами in1-2 на in3-4. что бы проверить 298.. почему то все равно крутит тот же движок, хотя по логике оно должно было переключится на другой движок... эх вот мультиметра нет под рукой

@Старик Похабыч, мультиметра нет, использовал светодиод, на ENA и ENB есть постоянная масса, на in1,3,4 только при движении джойстиком, а вот на in2 постоянка. точнее сказать что с пина А3 постоянка идет

@Dj_ArtOkisS, Разобрался с постоянкой на in2, отрегулировал инфу с джойстика с помощью монитора порта... теперь круг подозреваемых сузился) из приемника на 298 выходят адекватные аналоги, но один двиг так и не хочет работать, думаю уж не перегорел ли пин на 298.

Да, проверил.. драйверу 298 хана ((
 

Старик Похабыч

★★★★★✩✩
14 Авг 2019
1,652
409
Москва