#1 Re: Програмування Arduino » Помогите с кодом управления для дрона » 2022-05-06 15:42:56

ard125 пише:

Кто ж тебя знает чего ты хочешь. У тебя во всех твоих темах один и тот же код. То ты дрона собираешь, то машинку. Собери, проверь. Тебе уже практически все разжевали

Так у меня двухколёсный дрон

#2 Re: Програмування Arduino » Помогите с кодом управления для дрона » 2022-05-06 13:42:22

ard125 пише:
Cossack пише:

Да настраивал под "Arduino bluetooth controller"

Arduino bluetooth controller в отличии от Bluetooth RC Car не умеет "отпускать" кнопку

Понятно
а так код будет работать как я хочу?

#3 Re: Програмування Arduino » Помогите с кодом управления для дрона » 2022-05-06 00:21:10

ard125 пише:
Cossack пише:

Предложения которые я использую
"Bluetooth RC Car"

Гугл? Не, не слышал.
Ты приложение то хоть настроил под свой код (или код под приложение)?

Да настраивал под "Arduino bluetooth controller"

#4 Програмування Arduino » Помогите с кодом управления для дрона » 2022-05-05 12:38:48

Cossack
відповідей: 11

Здраствуйте я делаю код управления  для двухколёсного дрона.
Але я не очень хорош в программировании.
Проблема в том что он работает не так как я думал.
Я хотел сделать так пока я держу кнопку он будет ехать и когда отпускаю ее он останавливается
но у меня не очень получилось его сделать.
Код пишется у меня для придложения для телефона.

Предложения которые я использую
"Bluetooth RC Car"
и также
"Arduino bluetooth controller"


int val;
int enA = 9;
int in1 = 6;
int in2 = 2;
int in3 = 4;
int in4 = 3;
int enB = 5;
void setup()
{
Serial1.begin(9600);
pinMode(enA, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(13, OUTPUT); 
pinMode(enB, OUTPUT);
}

void acc(){
  for(int i=0; i<256; i++){
    analogWrite(enB, i);
    analogWrite(enA, i);
    delay(40);
  }
}

void dec(){
    for(int i=255; i>0; --i){
    analogWrite(enB, i);
    analogWrite(enA, i);
    delay(40);
}}
void(* resetFunc) (void) = 0;

void loop()
{
if (Serial1.available()) // проверка поданных команд
{
val = Serial1.read();
if (val == '8') //вперед
  {
digitalWrite(13, HIGH);
digitalWrite(in1,LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3,LOW);
digitalWrite(in4, HIGH);
acc();
dec();
delay(40);
  }
if (val == '4') //ліво
  {
digitalWrite(13, HIGH);
digitalWrite(in1,HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3,LOW);
digitalWrite(in4, HIGH);
acc();
dec();
delay(40);
  }
if (val == '6') //право
  {
digitalWrite(13, HIGH);
digitalWrite(in1,LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3,HIGH);
digitalWrite(in4, LOW);
acc();
dec();
delay(40);
  }
if (val == '2') //назад
  {
digitalWrite(13, HIGH);
digitalWrite(in1,HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3,HIGH);
digitalWrite(in4, LOW);
acc();
dec();
delay(40);
  } 
if(val =='1')
  {
resetFunc();
  }
}
}

#5 Апаратні питання » Проблемка из питанием » 2022-05-04 15:52:33

Cossack
відповідей: 1

Добрый день еще раз возникла еще одна у меня маленькая проблемка и на этот раз из питанием блютуз модуля HC-06.
Проблема в том что диод только горить тогда когда подключено из ноутбука к Мега а если убрать провод а подключить к разъёму для питания батарейку крону 9 В. То индикатор не загорается.

  • плата L298N

  • Bluetooth Module HC-06

  • Arduino MEGA2560 R3

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

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

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

int val;
int enA = 9;
int in1 = 6;
int in2 = 2;
int in3 = 4;
int in4 = 3;
int enB = 5;
void setup()
{
Serial1.begin(9600);
pinMode(enA, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(13, OUTPUT); 
pinMode(enB, OUTPUT);
}

void acc(){
  for(int i=0; i<256; i++){
    analogWrite(enB, i);
    analogWrite(enA, i);
    delay(40);
  }
}

void dec(){
    for(int i=255; i>0; --i){
    analogWrite(enB, i);
    analogWrite(enA, i);
    delay(40);
}}

void(* resetFunc) (void) = 0;

void loop()
{
if (Serial1.available()) // проверка поданных команд
{
val = Serial1.read();
if (val == '8') 
	{
digitalWrite(13, HIGH);
digitalWrite(in1,LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3,LOW);
digitalWrite(in4, HIGH);
acc();
dec();
delay(40);
	}
if (val == '4') 
	{
digitalWrite(13, HIGH);
digitalWrite(in1,HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3,LOW);
digitalWrite(in4, HIGH);
acc();
dec();
delay(40);
	}
if (val == '6') 
	{
digitalWrite(13, HIGH);
digitalWrite(in1,LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3,HIGH);
digitalWrite(in4, LOW);
acc();
dec();
delay(40);
	}
if (val == '2') 
	{
digitalWrite(13, HIGH);
digitalWrite(in1,HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3,HIGH);
digitalWrite(in4, LOW);
acc();
dec();
delay(40);
	} 
if(val =='1')
	{
resetFunc();
	}
}
}

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

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

#6 Re: Програмування Arduino » Не могу найти ошибку в коде » 2022-04-20 13:30:24

г0сть пише:

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

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

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

#7 Re: Програмування Arduino » Не могу найти ошибку в коде » 2022-04-20 13:24:06

г0сть пише:

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

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

#8 Re: Програмування Arduino » Не могу найти ошибку в коде » 2022-04-20 13:19:42

г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" тож ничего

#9 Re: Програмування Arduino » Не могу найти ошибку в коде » 2022-04-20 13:11:29

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

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

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

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

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

#10 Re: Програмування Arduino » Не могу найти ошибку в коде » 2022-04-20 12:51:14

г0сть пише:

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

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

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

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

#11 Re: Програмування Arduino » Не могу найти ошибку в коде » 2022-04-20 12:33:08

г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 выключается светодиод
}
}

#12 Re: Програмування Arduino » Не могу найти ошибку в коде » 2022-04-19 23:58:38

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

Это в мегу

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

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

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

#13 Re: Програмування Arduino » Не могу найти ошибку в коде » 2022-04-19 23:52:35

г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в

#14 Re: Програмування Arduino » Не могу найти ошибку в коде » 2022-04-19 23:02:47

г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

#15 Re: Програмування Arduino » Не могу найти ошибку в коде » 2022-04-19 21:55:29

г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 выключается светодиод
}
}

#16 Re: Програмування Arduino » Не могу найти ошибку в коде » 2022-04-19 21:41:22

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

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

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

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

#17 Re: Програмування Arduino » Не могу найти ошибку в коде » 2022-04-19 21:35:54

zDimaby пише:

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

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

#18 Програмування Arduino » Не могу найти ошибку в коде » 2022-04-19 15:17:15

Cossack
відповідей: 23

Всім привіт я студент колледжа і я роблю робочу модель дрона але під час тесту кодов ничего не происходить.
Код пишется у меня на 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);
    
  
}

#19 Re: Апаратні питання » Прошу допомоги проблема із схемою моторів » 2022-04-17 16:20:17

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

Что из фразы вместо кроны непонятно?

а еще один вопрос минус впихать в землю ?

да

спасибо !!
все работает проблема была в питании

#20 Re: Апаратні питання » Прошу допомоги проблема із схемою моторів » 2022-04-16 15:43:32

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

из зарядки проводом впихнуть в розьем в ардуино нано там где под подключать провод для прошивки верно ?

Что из фразы вместо кроны непонятно?

а еще один вопрос минус впихать в землю ?

#21 Re: Апаратні питання » Прошу допомоги проблема із схемою моторів » 2022-04-16 15:36:25

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

из зарядки проводом впихнуть в розьем в ардуино нано там где под подключать провод для прошивки верно ?

Что из фразы вместо кроны непонятно?

Наверно то как именно впихнуть у меня ток есть USB кабель

#22 Re: Апаратні питання » Прошу допомоги проблема із схемою моторів » 2022-04-16 12:23:09

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

Ну туда идет батарека крона 9 вольт

куда - "туда"?
Возьми для начала зарядку от мобильника и воткни вместо кроны. Полярность тока не перепутай!

из зарядки проводом впихнуть в розьем в ардуино нано там где под подключать провод для прошивки верно ?

#23 Re: Апаратні питання » Прошу допомоги проблема із схемою моторів » 2022-04-15 21:11:35

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

Ну туда идет батарека крона 9 вольт

куда - "туда"?
Возьми для начала зарядку от мобильника и воткни вместо кроны. Полярность тока не перепутай!

Туда это на Драйвер двигателя L298N

#24 Re: Апаратні питання » Прошу допомоги проблема із схемою моторів » 2022-04-15 20:52:50

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

Нормальним это каким ?

Максимум сколько вольт акумулятор или матарейка можно взять ?

Зависит от рабочего напряжения и тока потребления твоих моторов - см. ответ #5.

p/s мотор напрямую от твоей кроны работает?

Ну туда идет батарека крона 9 вольт
еще 5 вольт от ардуино нано

..

Что бы показалась фотка (ПКМ//Открыть изображение в новой вкладке)

#25 Re: Апаратні питання » Прошу допомоги проблема із схемою моторів » 2022-04-15 20:28:19

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

Не знаю как но заработало ток не так гладко как казалось мне.
Что би он закрутился сам надо было еще самом руками допомогти за крутитися и то прокрутилось секунт 10 и зупинилось

сказано же было

гость пише:

Запитай моторы от нормального БП, а не от батарейки

Нормальним это каким ?
Я не знаю каким именно запитать
Максимум сколько вольт акумулятор или матарейка можно взять ?

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