Arduino и nfr24l01 передача нажатия кнопки
- Войдите на сайт для отправки комментариев
Сб, 06/06/2020 - 18:43
Здравствуйте, сделал скетч по управлению 8мю сервоприводами и 2 двигателями дистанционно, работает замечательно, но когда аналогичным способом поробовал добавить управлять релюшкой то этот способ не работает. Подскажите куда двигаться. Кнопка подключаеться к D3 - это на стандартном Джостик шилд для ардуино Уно. Заранее благодарю за советы.
Код передатчика:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#define CE_PIN 9
#define CSN_PIN 10
#define pote0 A0 // x axis
#define pote1 A1 //y axis
//#define pote2 A2 //y axis
#define pote3 3 //y axis
//#define pote4 A4 //y axis
//#define pote5 A5 //y axis
//#define pote6 A6 //y axis
//#define pote7 A7 //y axis
//#define pote8 A8 //y axis
//#define pote9 A9 //y axis
const uint64_t pipe = 0xE8E8F0F0E1LL;
RF24 radio(CE_PIN, CSN_PIN);
int data[10];
void setup()
{
Serial.begin(9600);
radio.begin();
radio.openWritingPipe(pipe);
}
void loop()
{
data[0] = analogRead(pote0);
data[1] = analogRead(pote1);
//data[2] = analogRead(pote2);
data[3] = analogRead(pote3);
//data[4] = analogRead(pote4);
//data[5] = analogRead(pote5);
//data[6] = analogRead(pote6);
//data[7] = analogRead(pote7);
//data[8] = analogRead(pote8);
//data[9] = analogRead(pote9);
radio.write( data, sizeof(data) );
}
Код приемника:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <Servo.h>
#define CE_PIN 10
#define CSN_PIN 9
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
Servo servo5;
Servo servo6;
Servo servo7;
Servo servo8;
//int pos;
int fspeed; // forward speed
int bspeed; // backward speed
int fspeed1; // forward1 speed
int bspeed1; // backward1 speed
const int in1 = 2; // direction pin 14
const int in2 = 7; // direction pin 15
const int ena = 6; // PWM pin to change speed
//const int in3 = 6; // direction pin 6
//const int in4 = 5; // direction pin 5
//const int enb = 7; // PWM pin to change speed
int pot0=0;
int pot1=0;
int pot2=0;
int pot3=0;
int pot4=0;
int pot5=0;
int pot6=0;
int pot7=0;
int pot8=0;
int pot9=0;
const uint64_t pipe = 0xE8E8F0F0E1LL;
RF24 radio(CE_PIN, CSN_PIN);
int data[10];
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(5);
servo2.attach(A1);
//servo3.attach(10);
//servo4.attach(11);
//servo5.attach(12);
//servo6.attach(13);
//servo7.attach(3);
//servo8.attach(2);
radio.begin();
radio.openReadingPipe(1,pipe);
radio.startListening();
}
void loop() {
if ( radio.available() )
{
radio.read( data, sizeof(data) );
hareket(data[0],data[1],data[2],data[3],data[4],data[5],data[6],data[7],data[8],data[9]);
}
}
void hareket(int pote0, int pote1, int pote2, int pote3, int pote4, int pote5, int pote6, int pote7, int pote8, int pote9)
{
{
if (pote1 >=0 && pote1 <=450)pot1 = pote1,bspeed = map(pot1, 0, 450, 0, 255),backward(bspeed);
if (pote1 >=550 && pote1 <=1027)pot1 = pote1,fspeed = map(pot1, 550, 1027, 0, 255),forward(fspeed);
if (pote1 >451 && pote1 <549)pot1 = pote1, stop();
//if (pote1 >=0 && pote1 <=450)pot1 = pote1,bspeed1 = map(pot1, 0, 450, 255, 0),backward1(bspeed1);
//if (pote1 >=550 && pote1 <=1027)pot1 = pote1,fspeed1 = map(pot1, 550, 1027, 0, 255),forward1(fspeed1);
//if (pote1 >451 && pote1 <549)pot1 = pote1, stop();
}
pot0 = map(pote0,0,1023,0,255), servo1.write(pot0);
pot3 = map(pote3,0,1023,0,255), servo2.write(pot3);
// pot4 = map(pote4,0,1023,0,255), servo3.write(pot4);
//pot5 = map(pote5,0,1023,0,255), servo4.write(pot5);
//pot6 = map(pote6,0,1023,0,255), servo5.write(pot6);
//pot7 = map(pote7,0,1023,0,255), servo6.write(pot7);
//pot8 = map(pote8,0,1023,0,255), servo7.write(pot8);
//
// pot9 = map(pote9,0,1023,0,255), servo8.write(pot9);
}
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, LOW);
digitalWrite(in2, HIGH);
analogWrite(ena, bspeed);
//digitalWrite(in3, LOW);
// digitalWrite(in4, HIGH);
// analogWrite(enb, bspeed);
}
void backward(int bspeed)
{
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
analogWrite(ena, fspeed);
// digitalWrite(in3, HIGH);
// digitalWrite(in4, LOW);
// analogWrite(enb, fspeed);
}
void forward1(int fspeed1)
{
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
analogWrite(ena, fspeed1);
// digitalWrite(in3, LOW);
// digitalWrite(in4, HIGH);
//analogWrite(enb, fspeed1);
}
void backward1(int bspeed1)
{
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
analogWrite(ena, bspeed1);
//digitalWrite(in3, HIGH);
//digitalWrite(in4, LOW);
//analogWrite(enb, bspeed1);
}
В каких строках производится работа с кнопкой?
В передатчике
В приемнике
В передатчике кнопка через analogRead() - почему?
В приемнике pote3 пишется в servo2 - не похоже на работу с реле.
это реле на плате, я так сделал чтобы проще было управлять, но не работает. Я просто отсавил управление как было для серво. там 3 пина на плате с реле, вот на in и подаю.
все сделал, завтра скину.
Сделал как тут написано http://arduino.ru/forum/programmirovanie/upravlenie-mashinkoi-arduino-i-nrf24l01