#1 2018-04-30 11:15:15

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

Скетч без ошибок, подключил всё правильно, а ничего не работает!

Народ, всем привет! Нужна помощь! Загрузил простенький скетч на управление двумя моторами и сервой через nrf24l01 и раньше всё работало (пробовал на uno. nano и mega, но ничего не помогает). Раньше всё работало, с точно таким же скетчем, с этими же самими платами, микроконтроллеры лежали в нетронутом месте, если что. Я в этом деле новичок, по этому прошу совет. Ардуино последней версии. Ошибок при загрузке скетча никаких не вылетает. Скетч компилируется нормально, обьём не более 15% из всей памяти флеш. Переферийные устройства те же, не менял. Приёмопередатчики так же и всех их по отдельности проверял - всё работает. После загрузки скетча на плату приёмника и на плату передатчика и изменения, после этого, положения джойстика, ничего не происходит. Может я что то упускаю... Не знаю, прошу помощи! Скетчи прилагаются!

##################################### скетч приёмника

#include <RF24.h>
#include <Servo.h>
#include <SPI.h>
#include "RF24.h"
Servo servo1;
RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int msg[1];
int data;
int pos;
int fspeed;           // forward speed
int bspeed;           // backward speed
const int ena = 2;    // PWM pin to change speed
const int in1 = 3;    // direction pin 1
const int in2 = 4;    // direction pin 2
const int in3 = 5;    // direction pin 3
const int in4 = 6;    // direction pin 4
const int enb = 7;    // 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
  servo1.attach(8);
  delay(0);
  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, 7, 47), servo1.write(pos);


  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);
  analogWrite(enb, 0);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
}

void forward(int fspeed)
{

  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  analogWrite(ena, fspeed);
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
  analogWrite(enb, fspeed);
}

void backward(int bspeed)
{

  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);
  analogWrite(ena, bspeed);
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);
  analogWrite(enb, bspeed);
}


################################# скетч передатчика

#include <nRF24L01.h>
#include <printf.h>
#include <RF24.h>
#include <RF24_config.h>
#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);
}

Неактивний

#2 2018-04-30 14:07:13

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Скетч без ошибок, подключил всё правильно, а ничего не работает!

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

example

if (radio.available()) {
  radio.read(msg, 1);
serial.write ("hello\r\n"); 
}

ардуиновский компилятор єто правильно интерпретирует?  что там gcc ?

if (msg[0] > 190 && msg[0] < 200) data = msg[0], stop();

сделайте доброе дело , пишите проще )

if (msg[0] > 190 && msg[0] < 200)  { data = msg[0];  stop(); }

Паша, а как модули линкуются?

Неактивний

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

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

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