Радиоуправляемый катер из потолочки

LYNX
Offline
Зарегистрирован: 21.03.2014

Все отключил, оставил толкьо модуль. Что то реакции ноль.

Возник вопрос, а как вообще определить что модуль работает если он 1?

Apolsys
Apolsys аватар
Offline
Зарегистрирован: 07.06.2016

Ну ты предыдущий пост мой почитай, там написано название скетча из примеров библиотеки нрф24 для проверки.

LYNX
Offline
Зарегистрирован: 21.03.2014

У тебя наверно в библиотеке щел пример, можешь скинуть?

AndreyS
Offline
Зарегистрирован: 26.06.2016

Я делал следующим образом: есть програмка в ардуину, она прослушивает все каналы и выдает на порт результат в виде заполнения каналов, когда ставишь тел в режим точка доступа вифи сразу 5-6 каналов забиваются

AndreyS
Offline
Зарегистрирован: 26.06.2016

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

Apolsys
Apolsys аватар
Offline
Зарегистрирован: 07.06.2016

примеры есть в библиотеке если ты библеотеку скачал! примеры можно найти так: Файл - Примеры - RF24 - "название примера на выбор"

AndreyS
Offline
Зарегистрирован: 26.06.2016
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
 
RF24 radio(9,10); // Для Уно 9-CE , 10-CSN
//RF24 radio(9,53);// Для Меги
const uint8_t num_channels = 128;
uint8_t values[num_channels];
void setup(void)
{
  Serial.begin(57600);
  printf_begin();
  radio.begin();
  radio.setAutoAck(false);
  radio.startListening();
 
  radio.printDetails();  // Вот эта строка напечатает нам что-то, если все правильно соединили.
  delay(5000);              // И посмотрим на это пять секунд.
 
  radio.stopListening();
  int i = 0;    // А это напечатает нам заголовки всех 127 каналов
  while ( i < num_channels )  {
    printf("%x",i>>4);
    ++i;
  }
  printf("\n\r");
  i = 0;
  while ( i < num_channels ) {
    printf("%x",i&0xf);
    ++i;
  }
  printf("\n\r");
}
const int num_reps = 100;
 
void loop(void)
{
  memset(values,0,sizeof(values));
  int rep_counter = num_reps;
  while (rep_counter--) {
    int i = num_channels;
    while (i--) {
      radio.setChannel(i);
      radio.startListening();
      delayMicroseconds(128);
      radio.stopListening();
      if ( radio.testCarrier() )
        ++values[i];
    }
  }
  int i = 0;
  while ( i < num_channels ) {
    printf("%x",min(0xf,values[i]&0xf));
    ++i;
  }
  printf("\n\r");
}
int serial_putc( char c, FILE * ) {
  Serial.write( c );
  return c;
}
 
void printf_begin(void) {
  fdevopen( &serial_putc, 0 );
}
 
LYNX
Offline
Зарегистрирован: 21.03.2014

Кинь библиотеку, а то с гитхаба устанавливаться не хочет

LYNX
Offline
Зарегистрирован: 21.03.2014

SE8117T33 в качестве стабилизатора с 7.4В на 3.3В пойдет, подскажите?

vlad123419
Offline
Зарегистрирован: 25.03.2016

Привет!

Я тоже делаю лодку, уже склеил, сделал управление и т.п.

Теперь разбераюсь с электроникой, есть два модуля NRF24L01, один без усилителя (обычный) на UNO, а второй с усилителем и антенной на Нано, питание через переходники, стабилизаторы...

Вот серва работает, а бессколекторный мотор через пень колоду...

Залил вот такие скетчи:

Это приемник:

// Необходимо установить библиотеку для радиомодуля nRF24
#include <Servo.h>
#include <SPI.h>
#include "RF24.h"
Servo servo1;
Servo servo2;

RF24 radio(9,10);
const uint64_t pipe = 0xF0F0F0F000LL; 
int msg[1]; 
int data; 
int pos;
int fspeed;           // forward speed 
int bspeed;           // backward speed

void setup()
{
  
servo1.attach(3); 
servo2.attach(5); 
delay(50);
radio.begin();
radio.openReadingPipe(1,pipe); 
radio.startListening();
}

void loop()
{
  if (radio.available())radio.read(msg, 1);
  if (msg[0] <127 && msg[0] >-1)data = msg[0], pos = map(data, 0, 126, 0, 180),servo1.write(pos);
  
  if (msg[0] <=255 && msg[0] >=128)data = msg[0], pos = map(data, 129, 254, 147, 7),servo2.write(pos);
  
}

Это передатчик:

#include <SPI.h>
#include "RF24.h" 
RF24 radio(9,10);
const uint64_t pipe = 0xF0F0F0F000LL; 
int msg[1]; 
int potpin_1 = A0; 
int val_1; 
int potpin_2 = A1; 
int val_2; 

void setup(){
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);

  
}

Мне кажется что с модулями проблем нет, вот там что то напутано с функцией map, это я так думаю, а там кто знает?

Прошу указать мне на мои ошибки, заранее спасибо!

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

я только приехал. 19 часов на машине. сейчас не в состоянии. завтра. пью коньяк))

LYNX
Offline
Зарегистрирован: 21.03.2014

Отлично. С возвращением. Мы тебя все ждем

vlad123419
Offline
Зарегистрирован: 25.03.2016

Привет, с возвращением!!!

Это все понятно, всё работает и нули не выдает, два модуля конектят...

Но вот только помоги с кодом , точнее с ESC, ни как не могу добиться его четкой работы...

Вот серва работает как часы , а ESC работает но не совсем четко...

Помоги мне пожалуйста с кодом , точнее с функцией map 

Код подправил:

Это передатчик:

#include <SPI.h>
#include "RF24.h" 
const uint64_t pipe = 0xF0F1F2F3F4LL; 
RF24 radio(9,10);
byte msg[2]; 
int potpin_1 = A0; 
int val_1; 
int potpin_2 = A1; 
int val_2; 

void setup(){
radio.begin();
delay(50);
radio.setChannel (9);
radio.setPayloadSize (8);
radio.setRetries (1,1);
radio.setDataRate (RF24_250KBPS);
radio.setPALevel (RF24_PA_HIGH);
radio.openWritingPipe(pipe); 

}
void loop() {
val_1 = analogRead(potpin_1),val_1 = map(val_1, 0, 1023, 0, 127),msg[0] = val_1;
val_2 = analogRead(potpin_2),val_2 = map(val_2, 0, 1023, 128, 255),msg[1] = val_2;
radio.write (&msg, sizeof (msg));
  
}

Это приемник:

// Необходимо установить библиотеку для радиомодуля nRF24
#include <Servo.h>
#include <SPI.h>
#include "RF24.h"
Servo servo1;
Servo servo2;
const uint64_t pipe = 0xF0F1F2F3F4LL; 
RF24 radio(9,10);
byte msg[2]; 
int data; 
int pos;
int fspeed;           // forward speed 
int bspeed;           // backward speed

void setup()
{
  
servo1.attach(3); 
servo2.attach(5); 

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

void loop()
{
  if (radio.available())radio.read(msg, 2);
  if (msg[0] <127 && msg[0] >-1)data = msg[0], pos = map(data, 0, 126, 0, 180),servo1.write(pos);
  
  if (msg[1] <=255 && msg[1] >=128)data = msg[1], pos = map(data, 129, 254, 147, 7),servo2.write(pos);
  
}

Кстати, вот сылка на форум, там все подробно человек расписывает  

http://forum.amperka.ru/threads/nrf24l01-%D0%BF%D0%BE%D0%B1%D0%B5%D0%B6%...

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

Пожалуй начну радиомодуля nRF24L01. Ему минимум нужно 5 пинов плюс питание. Питание только 3.3В. Из этих 5 пинов 3 это SPI, на обычной ардуине это пины которые не поменять, так сделано в самом микроконтроллере

там где подписано цифрами нужно подключать только так на ардуино уно, нано, мини. а вот SCN и CE можно выбирать, и как раз они указаны в инициализации

RF24 radio(9,10);  // для библиотеки NRF
или
wireless.setPins(9,10); // для библиотеки для пульта от квардрокоптера

еще необходимо напаять конденсатор по питанию прямо на модуль между пинами 3.3В и GND. я обычно паяю 10мкф керамику

далее будут даваться примеры и объяснятся для библиотек:

RF24 для связи между двумя  nRF24L01. Разговор будет идти только об этой либе по моей ссылке, если у Вас уже есть либа с таким названием, можете переместить ее в другую папку, удалить, как хотите

V202 для связи nRF24L01 и пульта от квадрокоптера. пульт по ссылке у меня работает, если у Вас какой то другой пульт я вам помочь не смогу, можете переделать пульт

В библиотеке RF24 есть несколько примеров:

nRF24L01_status нужен для проверки отдельного радиомодуля

nRF24L01_scanner для поиска свободного канала если связь будет например в жилом доме

nRF24L01_RX_test и nRF24L01_TX_test для организации связи между 2 ардуинами

Начнем:

Пункт 1. проверяем радиомодуль, правильность подключения и что модуль не дохлый

- загружаем пример nRF24L01_status. подключаем по картинке. пины CE и SCN можно оставить как в примере 9 и 10

RF24 radio(9,10);

в терминале (скорость 57600) если получите следующее значит все подключено правильно:

STATUS		 = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1	 = 0xe7e7e7e7e7 0xe8e8f0f0e1
RX_ADDR_P2-5	 = 0xc3 0xc4 0xc5 0xc6
TX_ADDR		 = 0xe7e7e7e7e7
RX_PW_P0-6	 = 0x00 0x20 0x00 0x00 0x00 0x00
EN_AA		 = 0x3f
EN_RXADDR	 = 0x02
RF_CH		 = 0x40
RF_SETUP	 = 0x27
CONFIG		 = 0x0f
DYNPD/FEATURE	 = 0x03 0x06
Data Rate	 = 250KBPS
Model		 = nRF24L01+
CRC Length	 = 16 bits
PA Power	 = PA_MAX

если получили:

STATUS		 = 0x00 RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=0 TX_FULL=0
RX_ADDR_P0-1	 = 0x0000000000 0x0000000000
RX_ADDR_P2-5	 = 0x00 0x00 0x00 0x00
TX_ADDR		 = 0x0000000000
RX_PW_P0-6	 = 0x00 0x00 0x00 0x00 0x00 0x00
EN_AA		 = 0x00
EN_RXADDR	 = 0x00
RF_CH		 = 0x00
RF_SETUP	 = 0x00
CONFIG		 = 0x00
DYNPD/FEATURE	 = 0x00 0x00
Data Rate	 = 1MBPS
Model		 = nRF24L01
CRC Length	 = Disabled
PA Power	 = PA_MIN

проверить подключение, пины в инициализации поменять местами, должно заработать. Порядок 9,10 или 10,9 запомнить/записать чтобы каждый раз не проверять

Пункт 2. Не совсем обязательный, просто загрузить пример nRF24L01_scanner и посмотреть свободные каналы

Если нужна связь между 2 ардуинами (например самодельный пульт) использовать примеры nRF24L01_RX_test и nRF24L01_TX_test. один загрузить в приемник, другой в передатчик. В примере двухсторонней связи нет!

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

привет vlad123419 спасибо. подкорректируй код. пожалуйста не пиши в одну строку, трудно же понять как работают условия. а то подскажу, а окажется неправильно понял код

и кстати заранее проверил esc? среднее положение, задний ход и передний нужные углы

LYNX SE8117T33 подойдет. насчет вопроса в 635 посте. у тебя мотор не управляется как у меня, а как сервой. но серва должна работать. проверял? и на пульте слева сверху с торца есть снопка установки максимальных значений управления. выстави на 100%. кстати чтобы пульт начал работать нужно стикером газа один раз вверх вниз и на экране появится значок передачи данных

AndreyS vlad123419 если код большой прошу сворачивать его

vlad123419
Offline
Зарегистрирован: 25.03.2016

Да, ESC проверил, полностью исправен, проверял без NRF, просто подключил к ардуино, работает без нареканий...

ESC кстати от самолетов, у него нет заднего хода, только передний....

Код какой показывал, не можешь разъяснить про map, это функция преобразует, но как то непонятно мне в скетче, объясни пожалуйста...

Про NRF24L01 всё более или менее понятно 

Это передатчик:

#include <SPI.h>
#include "RF24.h" 
const uint64_t pipe = 0xF0F1F2F3F4LL; 
RF24 radio(9,10);
byte msg[2]; 

int potpin_1 = A0; 
int val_1; 

int potpin_2 = A1; 
int val_2; 

void setup(){
radio.begin();
delay(50);
radio.setChannel (9);

radio.setPayloadSize (8);
radio.setRetries (1,1);

radio.setDataRate (RF24_250KBPS);
radio.setPALevel (RF24_PA_HIGH);
radio.openWritingPipe(pipe); 

}
void loop() {
val_1 = analogRead(potpin_1),val_1 = map(val_1, 0, 1023, 0, 127),msg[0] = val_1;

val_2 = analogRead(potpin_2),val_2 = map(val_2, 0, 1023, 128, 255),msg[1] = val_2;

radio.write (&msg, sizeof (msg));
  
}
 

Это приемник

// Необходимо установить библиотеку для радиомодуля nRF24
#include <Servo.h>
#include <SPI.h>
#include "RF24.h"

Servo servo1;
Servo servo2;

const uint64_t pipe = 0xF0F1F2F3F4LL; 
RF24 radio(9,10);
byte msg[2];
 
int data; 
int pos;
int fspeed;           // forward speed 
int bspeed;           // backward speed

void setup()
{
  
servo1.attach(3); 
servo2.attach(5); 

radio.begin();
delay(50);
radio.setChannel (9);

radio.setPayloadSize (8);
radio.setRetries (1,1);

radio.setDataRate (RF24_250KBPS);
radio.setPALevel (RF24_PA_HIGH);

radio.openReadingPipe(1,pipe); 
radio.startListening();
}

void loop()
{
  if (radio.available())radio.read(msg, 2);

  if (msg[0] <127 && msg[0] >-1)data = msg[0], pos = map(data, 0, 126, 0, 254),servo1.write(pos);
  
  if (msg[1] <=255 && msg[1] >=128)data = msg[1], pos = map(data, 129, 254, 147, 7),servo2.write(pos);
  
}
jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

из кода непонятно какие углы нужны для сервы, да и воообще где серва, а где мотор. поправил для передатчика

#include <SPI.h>
#include "RF24.h" 

#define servo_pin A0
#define motor_pin A1

const uint64_t pipe = 0xF0F1F2F3F4LL; 
RF24 radio(9,10);
byte msg[2]; 

void setup(){
  radio.begin();
  delay(50);
  radio.setChannel (9);
  radio.setPayloadSize (8);
  radio.setRetries (1,1);
  radio.setDataRate (RF24_250KBPS);
  radio.setPALevel (RF24_PA_HIGH);
  radio.openWritingPipe(pipe); 
}

void loop(){
  msg[0] = map(analogRead(servo_pin), 0, 1023, 0, 180);
  msg[1] = map(analogRead(motor_pin), 0, 1023, 0, 180);
  radio.write (&msg, sizeof (msg));
}

 

vlad123419
Offline
Зарегистрирован: 25.03.2016

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

Проблема с ESC, там надо подобрать к нему цифры....
Поправь если можно, спасибо!

Вот я передаю с передатчика через map, например 0, 1023, 0, 180. Это я преобразовал, приёмник словил, и дальше там идёт, ещё какое то преобразование через map, вот этого я недопонимаю!

Кстати, подскажи, есть NRF24L01 с антенной, подключаю через переходник на AMS1117, 3,3, или как он там, не суть...
Подключаю и микросхема усилителя на модуле начинается греться, причём сигнал ( пакеты) уходят...
Видно, что там ножки микросхемы плохо разведены, будто там некоторые ножки замкнуты...
Они такие маленькие, что их и не поправить...
Это критично, уже заказал новый модуль?

Спасибо за поправленный код передатчика!

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

так там не твой код? просто в приемнике фигня написана. оставь все преобразование в передатчике, мой код короче, а в приемнике все что принято сразу на серву и мотор, без преобразований, там уже преобразованные значения

vlad123419
Offline
Зарегистрирован: 25.03.2016

Да, как бы основа кода не моя, но там много моих исправлений, сначала код вообще голый был...

Да, согласен с тобой про преобразование в передатчике, попробую, покажу что получится!

vlad123419
Offline
Зарегистрирован: 25.03.2016

А если ESC сделать не как серву а как ... лампочку?

ну не 180 как серва , а до 255?

Переделал приемник :

// Необходимо установить библиотеку для радиомодуля nRF24
#include <Servo.h>
#include <SPI.h>
#include "RF24.h"

Servo servo1;
Servo servo2;

const uint64_t pipe = 0xF0F1F2F3F4LL; 
RF24 radio(9,10);
byte msg[2];
 
int data; 
int pos;


void setup()
{
  
servo1.attach(3); 
servo2.attach(5); 

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

void loop()
{
  if (radio.available())radio.read(msg, 2);

 int pos = msg[0];
 servo1.write(pos);

 int pos2 = msg [1];
   servo2.write(pos2);
  
}

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

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

// Необходимо установить библиотеку для радиомодуля nRF24
#include <Servo.h>
#include <SPI.h>
#include "RF24.h"

Servo servo;
Servo motor;

const uint64_t pipe = 0xF0F1F2F3F4LL; 
RF24 radio(9,10);
byte msg[2];

void setup(){
  servo.attach(3); 
  motor.attach(5); 

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

void loop(){
  if (radio.available()){
    radio.read(msg,2);
    servo.write(msg[0]);
    motor.write(msg[1]);
  }
}

 

vlad123419
Offline
Зарегистрирован: 25.03.2016

А что это защита будет делать?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

останавливать катер если пропадет связь

vlad123419
Offline
Зарегистрирован: 25.03.2016

А доставать его как?))

vlad123419
Offline
Зарегистрирован: 25.03.2016

Попробывал залить коды, которые ты скинул, не знаю почему, но система бредит...

И серва перестала себя нормально вести...

Возвожно из за радиомодуля, т.к. он греется...

А так вроде бы код нормальный, спасибо тебе, до завтра!

Серва поддёргивается, такое ощущение, что перемыкаются каналы сервы и мотора...

Как это убрать, не знаю...

Я так и грешу на неисправность NRF24L01, заказал уже новую, должа придти, но не факт , что будет работать...

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

то есть ты сразу моторами и сервой хочешь управлять? даже в терминал не отправляешь данные для проверки?

радиомодуль греться не должен

vlad123419
Offline
Зарегистрирован: 25.03.2016

В терминал это надо SerialBegin?
Ну а как я буду по отдельности управлять? Вот я давлю на газ, и одновременно поворачиваю...

Да, модуль заказал, должен придти недели через 3

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

да оно самое. тебе надо сначала с основами разобраться. пройди уроки джереми блюма. на ютубе найдешь

я имел в виду ты не знаешь что нужно на серву и мотор подать сразу подаешь с радиомодуля

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

vlad123419
Offline
Зарегистрирован: 25.03.2016

Да, Блюма видел и частично смотрел, не понял про серва и мотор, что сразу нужно подавать, разъясни, пожалуйста!

vlad123419
Offline
Зарегистрирован: 25.03.2016

Аааа, понял, надо сначала без радиомодуля попробовать с одной Ардуино, а потом уже зная значения map, и цифры, уже организовать связь через радиомодуль, так?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

да))

vlad123419
Offline
Зарегистрирован: 25.03.2016



Код для бк двигателя (ESC) такой подходит

#include <Servo.h> 

Servo motor_teft;
Servo motor_right;

int mot_pin_left = 7;    //Подключаем левый мотор к пину 7
int mot_pin_right = 8;   //Подключаем правый мотор к пину 8

int js_position = 1500;  //Начальная позиция, всегда 1.5 мс для регуляторов бесколлекторных двигателей
int max_position = 2300; //Максимальное значение ШИМ 2.3 мс
int min_position = 800;  //Минимальное значени ШИМ 0.8 мс

int start = 1;  //Флаг задержки запуска

void setup() 
{
  motor_teft.attach(mot_pin_left, js_position, max_position);    //Инициальзация левого мотора (порт, начальная позиция, максимальная позиция)       !!!
  motor_right.attach(mot_pin_right, js_position, max_position);  //Инициальзация правого мотора (порт, начальная позиция, максимальная позиция)      !!!
} 

void loop() 
{
  //Начальная установка регуляторов в нулевое положение
  if(start == 1) {
    motor_teft.write(js_position);
    motor_right.write(js_position);
    
    delay(700);
    start = 0;
  }
  
  js_position = analogRead(A0);  //Считывание положения потенциометра
  
  js_position = map(js_position, 0, 1023, 75, 140);  //Преобразование положения потенциометра в угол поворота
  motor_left.write(js_position);     //Записываем положение и отправляем на регулятор левого мотора
  motor_right.write(js_position);    //Записываем положение и отправляем на регулятор правого мотора
  
  delay(20);  //Задержка цикла 20 мс
}

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

должно быть все проще. проверяй

#include <Servo.h> 

Servo motor_left;
Servo motor_richt;

int val;    // variable to read the value from the analog pin 

void setup(){ 
  motor_left.attach(7);
  motor_richt.attach(8); 
} 

void loop(){ 
  val = map(analogRead(A0), 0, 1023, 0, 180);
  motor_left.write(val);
  motor_richt.write(val);
  delay(15);
} 

ты бесколлекторными моторами хоть раз управлял? игрушка или еще что то?

vlad123419
Offline
Зарегистрирован: 25.03.2016

Нет, не управлял)

Какая игрушка?

vlad123419
Offline
Зарегистрирован: 25.03.2016

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

Я подключаю аккум к регулятору, он молчит, сдвигаю джойстик примерно на половину, он пропищал, разблокировался, и на этом всё закончилось...

Стоит и молчит, кстати код в инете нашел и у меня один мотор...

Код поправил пою один мотор, стал код таким :

#include <Servo.h> 

Servo motor_left;


int val;    // variable to read the value from the analog pin 

void setup(){ 
  motor_left.attach(3);

} 

void loop(){ 
  val = map(analogRead(A1), 0, 1023, 0, 180);
  motor_left.write(val);

} 

И с твоим кодом также , что может быть?

Спасибо за помощь!

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

если есть что дополнить измени предыдущее сообщение. просьба

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

vlad123419
Offline
Зарегистрирован: 25.03.2016

Исправил, посмотри!

Подскажи, вот в джойстике как бы два потенциомера, да?

Если так, то как сделать, чтобы середина джойскика была 0 , а верхнее положение 180?

Через map, какие цифры должны быть?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

видео сними и кинь сюда ссылку. проверь подключение. ссылку на мотор, драйвер и аккумулятор. фото как собрал

параллельно мотору подключи к тому же пину серву. она должна работать

#include <Servo.h> 

Servo motor_left;


int val;    // variable to read the value from the analog pin 

void setup(){ 
  motor_left.attach(3);

} 

void loop(){ 
  val = map(analogRead(A1), 0, 1023, 0, 180);
if(val<90) val=90;
  motor_left.write(val);

} 

 

vlad123419
Offline
Зарегистрирован: 25.03.2016

Ура!!!! Все заработало!!!!

Серво подкюлчал всё работало!!!

vlad123419
Offline
Зарегистрирован: 25.03.2016
jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

значит контакта где то не было. теперь тоже самое плюс серва от отдельного резистора. далее тоже самое, только по радиоканалу и все)

vlad123419
Offline
Зарегистрирован: 25.03.2016

Видео видел?

От какого резистора??? В код её сделать?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

видел видео. у тебя же 2 резистора вроде будет

vlad123419
Offline
Зарегистрирован: 25.03.2016

Какие резисторы?

Они сопротевние образуют, куда их ставить???

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

переменные резисторы)) управление газом и поворотом. может тебе передохнуть

vlad123419
Offline
Зарегистрирован: 25.03.2016

Ааа, понятно, ну да , два, джойстика два , в каждом джойстике по два резистора...

Я использую по одному, в газе ось Y, в управлении рулем X

vlad123419
Offline
Зарегистрирован: 25.03.2016

а как там в джойстиках получается , например по оси Y, на себя это 0, а от себя до упора это 1023?

Если да, то как мне сделать чтобы середина была 0?

AndreyS
Offline
Зарегистрирован: 26.06.2016
jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

vlad123419 да программно измени диапазон, делов то, к тому же я давал как

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