سلام دوباره.
یک سوال دیگه برام پیش اومده دوستان. ممنون میشم کمک کنید.
کد زیر رو من برای گیرنده استفاده کردم:
موقع کامپایل کردن به کد زیر گیر میده:کد:/* YourDuinoStarter Example: nRF24L01 Receive Joystick values - WHAT IT DOES: Receives data from another transceiver with 2 Analog values from a Joystick or 2 Potentiometers Displays received values on Serial Monitor - SEE the comments after "//" on each line below - CONNECTIONS: nRF24L01 Modules See: http://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo 1 - GND 2 - VCC 3.3V !!! NOT 5V 3 - CE to Arduino pin 9 4 - CSN to Arduino pin 10 5 - SCK to Arduino pin 13 6 - MOSI to Arduino pin 11 7 - MISO to Arduino pin 12 8 - UNUSED - V1.00 11/26/13 Based on examples at http://www.bajdi.com/ Questions: terry@yourduino.com */ /*-----( Import needed libraries )-----*/ #include <SPI.h> #include <nRF24L01.h> #include <RF24.h> /*-----( Declare Constants and Pin Numbers )-----*/ #define CE_PIN 9 #define CSN_PIN 10 // NOTE: the "LL" at the end of the constant is "LongLong" type const uint64_t pipe = 0xE8E8F0F0E1LL; // Define the transmit pipe /*-----( Declare objects )-----*/ RF24 radio(CE_PIN, CSN_PIN); // Create a Radio /*-----( Declare Variables )-----*/ int joystick[2]; // 2 element array holding Joystick readings void setup() /****** SETUP: RUNS ONCE ******/ { Serial.begin(9600); delay(1000); Serial.println("Nrf24L01 Receiver Starting"); radio.begin(); radio.openReadingPipe(1,pipe); radio.startListening();; }//--(end setup )--- void loop() /****** LOOP: RUNS CONSTANTLY ******/ { if ( radio.available() ) { // Read the data payload until we've received everything bool done = false; while (!done) { // Fetch the data payload done = radio.read( joystick, sizeof(joystick) ); Serial.print("X = "); Serial.print(joystick[0]); Serial.print(" Y = "); Serial.println(joystick[1]); } } else { Serial.println("No radio available"); } }//--(end main loop )--- /*-----( Declare User-written Functions )-----*/ //NONE //*********( THE END )***********
خطایی که میده اینه:کد:done = radio.read( joystick, sizeof(joystick) );
من تو آموزشایی که تو اینترنت گذاشتن نگاه کردم دیدم همین کد رو بدون مشکل استفاده کردن و همچین خطایی نداشتن. اگر چیزی به ذهنتون میرسه خوشحال میشم بدونم. بازم ممنونکد:reseiver.ino: In function 'void loop()': reseiver.ino:59:12: error: void value not ignored as it ought to be Error compiling.
من یک جفت از این ماژول ها رو راه اندازی کردم ولی مشکل این جاست که ارتباط یک طرفه است. یعنی مثلا برای من فقط میتونم روی com6 بنویسم و روی com8 بخونم ولی وقتی روی com8 مینویسم چیزی رو com6 نشون نمیده.
کسی نظری یا راه حلی سراغ داره؟؟/
سلام دوستان
من میخوام با ماژول NRF یک فرستنده گیرنده راه بندازم که هنگامی که در برد اول پایه ی 14 یک شد در برد دوم این پایه یک بشه
من از دو تا آردوینو 2560 و دو تاماژول NRF24L01 استفاده کردم
برنامه برد اول که فرستنده است رو این طور نوشتم:
#include <SPI.h>
#include <Mirf.h>
#include <NRF24L01.h>
#include <MirfHardwarespiDriver.h>
int led = 14;
int i;
void setup() {
pinMode(led, INPUT);
Serial.begin(9600);
Mirf.spi=&MirfHardwareSpi;
Mirf.init();
Mirf.setRADDR((byte*)"clie2");
Mirf.setTADDR((byte*)"clie1");
Mirf.payload=sizeof(unsigned long);
Mirf.config();
byte rf_setup=0;
Mirf.readRegister(RF_SETUP , &rf_setup,sizeof(rf_setup));
if(rf_setup!=0)
Serial.println("beginning");
else
{Serial.println("no signal");
while(rf_setup=0);}
delay(1000);
}
void loop() {
pinMode(led, INPUT);
if(digitalRead(led)==HIGH)
{
i=0;
Mirf.send((byte*)&i);
}
}
برنامه برد دوم که گیرنده هست رو این طور نوشتم:
#include <SPI.h>
#include <Mirf.h>
#include <NRF24L01.h>
#include <MirfHardwarespiDriver.h>
int led = 14;
int i;
void setup() {
pinMode(led, OUTPUT);
Serial.begin(9600);
Mirf.spi=&MirfHardwareSpi;
Mirf.init();
Mirf.setRADDR((byte*)"clie1");
Mirf.setTADDR((byte*)"clie2");
Mirf.payload=sizeof(unsigned long);
Mirf.config();
byte rf_setup=0;
Mirf.readRegister(RF_SETUP , &rf_setup,sizeof(rf_setup));
if(rf_setup!=0)
Serial.println("beginning");
else
{Serial.println("no signal");
while(rf_setup=0);}
delay(1000);
}
void loop() {
while(!Mirf.dataReady())
{
Mirf.getData((byte *) &i);
digitalWrite(led, HIGH);
}
}
اما هیچ جوابی نمیگیرم . به محض اتصال برد دوم به تغذیه LED متصل به پایه 14 برد دوم روشن میشه و روشن میمونه
اگه کسی در این مورد میدونه لطفا بگه من چه کار کنم؟؟؟؟؟؟؟؟؟؟![]()
دوستان من هم به مشکلی شبیه به دوستمون برخودم که اطلاعات چهار بایتی دریافت میشن
با توجه به اینکه طول داده را در هر دو برد 16 تعریف کردم ولی در سمت گیرنده اطلاعات به اندازه ه چها بایت اول داده ارسالی دریافت و به اندازه ی طول داده ی ارسالی؛اون چهار بایت اول کپی میشن در ارایه ی دریافتی
مثلا اگه ارسال کنم: "mohammad"
این دریافت میشه: "mohamoha"
دوست من شما هم به فروم nrf سر بزنید و از اون کداستفاده کنید
من عینا از کد اول فروم استفاده کردمولی
دوسن من این ماژول ها 3.3 هستند شما که به 5 وصل نکردید انشاءالله
سلام
ببخش بردم اگر 5 باشه چطور 3.3 کنم