#1 2022-04-19 15:17:15

Cossack
Учасник
Зареєстрований: 2022-04-14
Повідомлень: 30

Не могу найти ошибку в коде

Всім привіт я студент колледжа і я роблю робочу модель дрона але під час тесту кодов ничего не происходить.
Код пишется у меня на 2 ардуино на нано и на Мега 2560.
Если кратко то он должен был работать так:
Мы подключаемся через блютуз к телефону и запускаем предложение "Bluetooth RC Controller" сигнал из телефона передается до Мега и тот сигнал передается до NRF24L01 до другого NRF24L01 на Нано а потом идет до  L298N по  и управляем двухколёсным дроном.

Кажу сразу это мой первый такой большой проект потому много чего не знаю как и что делать.
Если кому то надо то вот что входить в саму схему:

  • плата L298N

  • Bluetooth Module HC-06

  • Arduino Nano v3.0

  • NRF24L01

  • Arduino MEGA2560 R3

  • Два моторчика

    вот если что ссылка на гугл диск из изображением:

    https://drive.google.com/drive/u/0/folders/1jv2ChBbfHb0L0RCttW1MjeegEqy7mvmd

Мега
нано и моторчики
Эти схемы я делал в симуляции сам кроме схемы моторчиков.
НУ а если коротко то оно подключено так
Подключение NRF24L01 до Мега:
VCC >> до земли
GND >> до 3.3в
CE >> до 2 пина
SCK >> до 52 пина
CSN >> до 53 пина
MOSI(MO) >> до 51 пина
MISO(MI) >> до 50 пина

Подключение блютуза  Module HC-06 до Мега:
VCC >> до 5в
GND >> до земли
TXD >> до 19 пина
RXD >> до 18 пина


подключение NRF24L01 до Нано:
GND >> до земли
CE >> до Д7
SCK >> до Д13 
MISO(MI) >> до Д12
VCC >> до 3.3в
CSN >> до Д8
MOSI(MO) >> до Д11

Подключення Нано до  L298N:
ENA >> до Д9
In1 >> до Д6
In2 >> до Д2
In3 >> до Д4
In4 >> до Д3
ENB >> до Д5
GND >> до GND
5в >> до 5в





код на Mega:

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <SoftwareSerial.h>
#include <Arduino.h>


SoftwareSerial Peredacha(19,18);
RF24 radio(52, 51); // CE, CSN
const byte address[6] = "00002";
char data;

void setup() {
  Peredacha.begin(9600);
  radio.begin();
  radio.openWritingPipe(address);
  radio.setPALevel(RF24_PA_MIN);
  radio.stopListening();
}
void loop() {
  if (Peredacha.available() > 0) 
    {
    data = Peredacha.read();
    }

  //int values[1] = {data};
  radio.write(&data, sizeof(data));
}

Код на Nano:

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#define enA 9
#define in1 6
#define in2 2
#define in3 4
#define in4 3
#define enB 5
char rx;
char motorspeed;

RF24 radio(7, 8); // CE, CSN
const byte address[6] = "00002";
void setup() {
  pinMode(enA, OUTPUT);
  pinMode(enB, OUTPUT);
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
  radio.begin();
  radio.openReadingPipe(0, address);
  radio.setPALevel(RF24_PA_MIN);
  radio.startListening();
}
void loop() {
  if (radio.available()) 
  {
    radio.read(&rx, sizeof(rx));
  }
   if (rx = 8) 
    {
      digitalWrite(in1,LOW);
      digitalWrite(in2, HIGH);
      digitalWrite(in3,LOW);
      digitalWrite(in4,HIGH);
      motorspeed = 100;
    }
   else if (rx = 2)
    {
      digitalWrite(in1,HIGH);
      digitalWrite(in2, LOW);
      digitalWrite(in3,HIGH);
      digitalWrite(in4,LOW);
      motorspeed = 100;
    }
    else if (rx = 6) 
    {
      digitalWrite(in1,LOW);
      digitalWrite(in2, HIGH);
      digitalWrite(in3,HIGH);
      digitalWrite(in4,LOW);
      motorspeed = 100;
    }
     else if (rx = 4) 
    {
      digitalWrite(in1,HIGH);
      digitalWrite(in2, LOW);
      digitalWrite(in3,LOW);
      digitalWrite(in4,HIGH);
      motorspeed = 100;
    }
    else 
    {
      motorspeed = 0;
    }
    if(rx = 1)
      motorspeed = 0;
    analogWrite(enA,motorspeed);
    analogWrite(enB,motorspeed);
    
  
}

Остання редакція Cossack (2022-04-19 23:53:50)

Неактивний

#2 2022-04-19 18:56:51

г0сть
Гість

Re: Не могу найти ошибку в коде

Cossack пише:

Если кратко то он должен был работать так:

А как работает на самом деле?

#3 2022-04-19 20:45:48

zDimaby
Учасник
З Хмельницкий
Зареєстрований: 2017-09-09
Повідомлень: 10

Re: Не могу найти ошибку в коде

Привіт), а де навчаєшся ?
Скажи в чом помилка ? бо ми не будемо збирати це все..звучить страшновато lol lol wink Тиш будеш провіряти на свої моделі.. і сам осмислювати в чому нам для тебе підсказати..

Остання редакція zDimaby (2022-04-19 20:51:31)

Неактивний

#4 2022-04-19 21:35:54

Cossack
Учасник
Зареєстрований: 2022-04-14
Повідомлень: 30

Re: Не могу найти ошибку в коде

zDimaby пише:

Привіт), а де навчаєшся ?
Скажи в чом помилка ? бо ми не будемо збирати це все..звучить страшновато lol lol wink Тиш будеш провіряти на свої моделі.. і сам осмислювати в чому нам для тебе підсказати..

Привіт навчаюсь у Полтаві в "Полтавський політехнічний фаховий коледж Національного технічного університету "Харківський політехнічний інститут" а якщо коротко в (ВСП "ППФК НТУ "ХПІ")
Спеціальність 123: Компютерна інженарія
Іду на Системного адміністратора
3 курс із 4
Це моя курсова робота просто в якій у мене по бажанню є створення моделі

Остання редакція Cossack (2022-04-19 21:39:07)

Неактивний

#5 2022-04-19 21:41:22

Cossack
Учасник
Зареєстрований: 2022-04-14
Повідомлень: 30

Re: Не могу найти ошибку в коде

г0сть пише:
Cossack пише:

Если кратко то он должен был работать так:

А как работает на самом деле?

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

Неактивний

#6 2022-04-19 21:47:43

г0сть
Гість

Re: Не могу найти ошибку в коде

Cossack пише:

и сделал тест для диода что бы нажать вперед диод должен загореться.
Но и это не работает

Показывай этот тест
з/ы и зачем ты на Меге, у которой 4 аппаратных сериала, используешь softserial? Легких путей не ищешь? smile

#7 2022-04-19 21:55:29

Cossack
Учасник
Зареєстрований: 2022-04-14
Повідомлень: 30

Re: Не могу найти ошибку в коде

г0сть пише:
Cossack пише:

и сделал тест для диода что бы нажать вперед диод должен загореться.
Но и это не работает

Показывай этот тест
з/ы и зачем ты на Меге, у которой 4 аппаратных сериала, используешь softserial? Легких путей не ищешь? smile

Я делал модель которую нашел на ютубе ток там замест блютуз управления использовали модуль двухосевой XY джойстик KY-023

int val;
void setup()
{
Serial.begin(9600);

pinMode(13, OUTPUT); // 13 пин – светодиод, объявляется как выход
}
void loop()
{
if (Serial.available()) // проверка поданных команд
{
val = Serial.read();
if (val == '8') {digitalWrite(13, HIGH);} // при 1 включается светодиод
if (val == '2') {digitalWrite(13, LOW);}  // при 0 выключается светодиод
}
}

Неактивний

#8 2022-04-19 22:36:02

г0сть
Гість

Re: Не могу найти ошибку в коде

Cossack пише:
int val;
void setup()
{
Serial.begin(9600);

pinMode(13, OUTPUT); // 13 пин – светодиод, объявляется как выход
}
void loop()
{
if (Serial.available()) // проверка поданных команд
{
val = Serial.read();
if (val == '8') {digitalWrite(13, HIGH);} // при 1 включается светодиод
if (val == '2') {digitalWrite(13, LOW);}  // при 0 выключается светодиод
}
}

Этот код ты заливал в мегу или в нану? Как подключал?
Если честно, мне уже надоедает все вытягивать клещами. Хочешь помощи - расписывай все подробно. Выше уже тебе сказали - за тебя все это собирать и проверять никто не будет потому что

Cossack пише:

Если кому то надо

кроме тебя - никому не надо.

#9 2022-04-19 23:02:47

Cossack
Учасник
Зареєстрований: 2022-04-14
Повідомлень: 30

Re: Не могу найти ошибку в коде

г0сть пише:
Cossack пише:
int val;
void setup()
{
Serial.begin(9600);

pinMode(13, OUTPUT); // 13 пин – светодиод, объявляется как выход
}
void loop()
{
if (Serial.available()) // проверка поданных команд
{
val = Serial.read();
if (val == '8') {digitalWrite(13, HIGH);} // при 1 включается светодиод
if (val == '2') {digitalWrite(13, LOW);}  // при 0 выключается светодиод
}
}

Этот код ты заливал в мегу или в нану? Как подключал?
Если честно, мне уже надоедает все вытягивать клещами. Хочешь помощи - расписывай все подробно. Выше уже тебе сказали - за тебя все это собирать и проверять никто не будет потому что

Cossack пише:

Если кому то надо

кроме тебя - никому не надо.

Это в мегу
а как оно подключено я же фото прикрепил(для открытия надо нажать ПКМ\ открыть изображения в другой вкладке)
view?usp=sharing

Неактивний

#10 2022-04-19 23:08:24

г0сть
Гість

Re: Не могу найти ошибку в коде

Cossack пише:

а как оно подключено я же фото прикрепил(для открытия надо нажать ПКМ открыть изображения в другой вкладке)
https://drive.google.com/file/d/16vGsC8ip2JeJAlPx5seT0KjJWu9TLqZ3/view?usp=sharing

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

#11 2022-04-19 23:46:37

г0сть
Гість

Re: Не могу найти ошибку в коде

Cossack пише:

Это в мегу

Почитай про Serial, особенно про мегу
https://doc.arduino.ua/ru/prog/Serial

#12 2022-04-19 23:52:35

Cossack
Учасник
Зареєстрований: 2022-04-14
Повідомлень: 30

Re: Не могу найти ошибку в коде

г0сть пише:
Cossack пише:

а как оно подключено я же фото прикрепил(для открытия надо нажать ПКМ открыть изображения в другой вкладке)
https://drive.google.com/file/d/16vGsC8ip2JeJAlPx5seT0KjJWu9TLqZ3/view?usp=sharing

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

Эти схемы я делал в симуляции сам кроме схемы моторчиков.
НУ а если коротко то оно подключено так
Подключение NRF24L01 до Мега:
VCC >> до земли
GND >> до 3.3в
CE >> до 2 пина
SCK >> до 52 пина
CSN >> до 53 пина
MOSI(MO) >> до 51 пина
MISO(MI) >> до 50 пина

Подключение блютуза  Module HC-06 до Мега:
VCC >> до 5в
GND >> до земли
TXD >> до 19 пина
RXD >> до 18 пина


подключение NRF24L01 до Нано:
GND >> до земли
CE >> до Д7
SCK >> до Д13 
MISO(MI) >> до Д12
VCC >> до 3.3в
CSN >> до Д8
MOSI(MO) >> до Д11

Подключення Нано до  L298N:
ENA >> до Д9
In1 >> до Д6
In2 >> до Д2
In3 >> до Д4
In4 >> до Д3
ENB >> до Д5
GND >> до GND
5в >> до 5в

Неактивний

#13 2022-04-19 23:58:38

Cossack
Учасник
Зареєстрований: 2022-04-14
Повідомлень: 30

Re: Не могу найти ошибку в коде

г0сть пише:
Cossack пише:

Это в мегу

Почитай про Serial, особенно про мегу
https://doc.arduino.ua/ru/prog/Serial

Прочитал ну если коротко про меня то я накосячил из виводами да?

Хз почему но теория по ардуино мне сложно дается чем практика

Неактивний

#14 2022-04-20 00:32:20

г0сть
Гість

Re: Не могу найти ошибку в коде

Cossack пише:

Прочитал ну если коротко про меня то я накосячил из виводами да?

Ну если бы не накосячил то не было бы этой темы. Еще раз прочитай про serial и посмотри как он объявляется для меги и как он объявлен у тебя в тестовом коде. И второй момент - у тебя есть два устройства. У каждого есть два вывода: вход Rx и выход Тх. Подумай как их нужно соединить чтобы устройства могли общаться между собой.

#15 2022-04-20 12:33:08

Cossack
Учасник
Зареєстрований: 2022-04-14
Повідомлень: 30

Re: Не могу найти ошибку в коде

г0сть пише:
Cossack пише:

Прочитал ну если коротко про меня то я накосячил из виводами да?

Ну если бы не накосячил то не было бы этой темы. Еще раз прочитай про serial и посмотри как он объявляется для меги и как он объявлен у тебя в тестовом коде. И второй момент - у тебя есть два устройства. У каждого есть два вывода: вход Rx и выход Тх. Подумай как их нужно соединить чтобы устройства могли общаться между собой.

собрал макет для теста работает или нет оно.
Подключение блютуза  Module HC-06 до Мега:
VCC >> до 5в
GND >> до земли
TXD >> до 0 пина
RXD >> до 1 пина

прикол в том что работает если написать "1" в Мониторе портов то диод загорится а если написать в блютуз терминале на телефоне то нет ответа от меги хоть телефон нашел его и подключился

#include <SoftwareSerial.h>
int val;
void setup()
{
Serial.begin(9600);
pinMode(13, OUTPUT); // 13 пин – светодиод, объявляется как выход

}

void loop()

{
if (Serial.available()) // проверка поданных команд
{
val = Serial.read();
if (val == '1') {digitalWrite(13, HIGH);} // при 1 включается светодиод
if (val == '0') {digitalWrite(13, LOW);}  // при 0 выключается светодиод
}
}

Неактивний

#16 2022-04-20 12:43:58

г0сть
Гість

Re: Не могу найти ошибку в коде

В качестве компенсации(я там немного накосячил)

int val;
void setup()
{
Serial1.begin(9600);

pinMode(13, OUTPUT); // 13 пин – светодиод, объявляется как выход
}
void loop()
{
if (Serial1.available()) // проверка поданных команд
{
val = Serial.read();
if (val == '8') {digitalWrite(13, HIGH);} // при 1 включается светодиод
if (val == '2') {digitalWrite(13, LOW);}  // при 0 выключается светодиод
}
}

И еще один совет - пин Rx блютуза или не подключай вообще(если он у тебя нигде не используется) или подключи через делитель иначе есть шанс сжечь модуль. У него уровни 3,3В. С меги прилетает 5

#17 2022-04-20 12:51:14

Cossack
Учасник
Зареєстрований: 2022-04-14
Повідомлень: 30

Re: Не могу найти ошибку в коде

г0сть пише:

В качестве компенсации(я там немного накосячил)

И еще один совет - пин Rx блютуза или не подключай вообще(если он у тебя нигде не используется) или подключи через делитель иначе есть шанс сжечь модуль. У него уровни 3,3В. С меги прилетает 5

а если подключить VCC  до 3.3в ?
тогда можно будет подключать Rx

(Мы на парах не проходили просто блютуз и так далее тому для меня очень сложно разобраться)

Неактивний

#18 2022-04-20 12:58:39

г0сть
Гість

Re: Не могу найти ошибку в коде

Cossack пише:

а если подключить VCC  до 3.3в ?
тогда можно будет подключать Rx

(Мы на парах не проходили просто блютуз и так далее тому для меня очень сложно разобраться)

Нет. Если у меги будет питание 3,3 - тогда можно. Rx у тебя нигде не задействован(по крайнее мере в том коде что ты выложил) поэтому просто не подключай его. Или ты собираешься что-то отправлять на телефон по синезубу?
з/ы у мну там еще одна очепятка - val = Serial1.read();

#19 2022-04-20 13:11:29

Cossack
Учасник
Зареєстрований: 2022-04-14
Повідомлень: 30

Re: Не могу найти ошибку в коде

г0сть пише:
Cossack пише:

а если подключить VCC  до 3.3в ?
тогда можно будет подключать Rx

(Мы на парах не проходили просто блютуз и так далее тому для меня очень сложно разобраться)

Нет. Если у меги будет питание 3,3 - тогда можно. Rx у тебя нигде не задействован(по крайнее мере в том коде что ты выложил) поэтому просто не подключай его. Или ты собираешься что-то отправлять на телефон по синезубу?
з/ы у мну там еще одна очепятка - val = Serial1.read();

ага то есть Rx отвечает за отправку на телефон
а TXD з телефона на пк
Верно?

Неактивний

#20 2022-04-20 13:19:42

Cossack
Учасник
Зареєстрований: 2022-04-14
Повідомлень: 30

Re: Не могу найти ошибку в коде

г0сть пише:

В качестве компенсации(я там немного накосячил)

int val;
void setup()
{
Serial1.begin(9600);

pinMode(13, OUTPUT); // 13 пин – светодиод, объявляется как выход
}
void loop()
{
if (Serial1.available()) // проверка поданных команд
{
val = Serial.read();
if (val == '8') {digitalWrite(13, HIGH);} // при 1 включается светодиод
if (val == '2') {digitalWrite(13, LOW);}  // при 0 выключается светодиод
}
}

И еще один совет - пин Rx блютуза или не подключай вообще(если он у тебя нигде не используется) или подключи через делитель иначе есть шанс сжечь модуль. У него уровни 3,3В. С меги прилетает 5

Отключил Rx и загрузил твой код из отпечаткой тож розобрался
пишу в монитор портов и через телефон "1" ничего не происходить пишу тож "8" тож ничего

Неактивний

#21 2022-04-20 13:22:30

г0сть
Гість

Re: Не могу найти ошибку в коде

к каким пинам подключал?

#22 2022-04-20 13:24:06

Cossack
Учасник
Зареєстрований: 2022-04-14
Повідомлень: 30

Re: Не могу найти ошибку в коде

г0сть пише:

к каким пинам подключал?

Тх до 0
а Rx не подключал

Неактивний

#23 2022-04-20 13:26:18

г0сть
Гість

Re: Не могу найти ошибку в коде

Ссылку смотрю ты читал по диагонали. Serial1 - это 18,19 пины

#24 2022-04-20 13:30:24

Cossack
Учасник
Зареєстрований: 2022-04-14
Повідомлень: 30

Re: Не могу найти ошибку в коде

г0сть пише:

Ссылку смотрю ты читал по диагонали. Serial1 - это 18,19 пины

Ааа.. блин вот я дурак

теперь заработало

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму