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