سلام.بنده قصد دارم با دو تاNRF24L01ودو عددARDUINO nanoیه موتور سروو رو باmpu کنترل کنم.طبیعتا یه فرستنده داریم و یک گیرنده همونطور که معلومه تو فرستنده ازmpu6050,nrf,nanoباید استفاده کنیم من برنامش رو به صورت زیر نوشتم
دوستان یه نظری در مورد کلیتش بدن.در مورد بستن مدار هم برای زاویه سنج SDAبهA4وSCLبهA5برای NRFهمCE__D9وCSN__D10,SCK__D13,MOSI__D11,MISO__D12و صل کردم
فقط یه قسمتیش به نظرم خیلی میلنگه اونم اینه که طبق برنامه هایی که دیدم برای اتصالNRFبه نانو باید CE__D9,CSN__D10ولی وقتی تو برنامه این کار رو میکردم خطا میگرفت به خاطر همین به جای D9,D10از9و10استفاده کردم!
کد:
#include<Wire.h> #include <SPI.h> #include <nRF24L01.h> #include <RF24.h> const int MPU=0x68; // I2C address of the MPU-6050 const uint64_t pipe = 0xE8E8F0F0E1LL; int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ; #define CE_PIN 9 #define CSN_PIN 10 #define JOYSTICK_X A0 #define JOYSTICK_Y A1 RF24 radio(CE_PIN, CSN_PIN); int joystick[2]; void setup(){ Serial.begin(9600); radio.begin(); radio.openWritingPipe(pipe); Wire.begin(); Wire.beginTransmission(MPU); Wire.write(0x6B); // PWR_MGMT_1 register Wire.write(0); // set to zero (wakes up the MPU-6050) Wire.endTransmission(true); Serial.begin(9600); } void loop(){ Wire.beginTransmission(MPU); Wire.write(0x3B); // starting with register 0x3B (ACCEL_XOUT_H) Wire.endTransmission(false); Wire.requestFrom(MPU,14,true); // request a total of 14 registers AcX=Wire.read()<<8|Wire.read(); // 0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L) AcY=Wire.read()<<8|Wire.read(); // 0x3D (ACCEL_YOUT_H) & 0x3E (ACCEL_YOUT_L) Serial.print("AcX = "); Serial.print(AcX); Serial.print(" | AcY = "); Serial.print(AcY); joystick[0] =AcX; joystick[1] =AcY; radio.write( joystick, sizeof(joystick) ); delay(333); }
فقط یه قسمتیش به نظرم خیلی میلنگه اونم اینه که طبق برنامه هایی که دیدم برای اتصالNRFبه نانو باید CE__D9,CSN__D10ولی وقتی تو برنامه این کار رو میکردم خطا میگرفت به خاطر همین به جای D9,D10از9و10استفاده کردم!