
نوشته اصلی توسط
sniper-70
سلام
درساخت سخت افزار مشکلی ندارم .بیشتر در بحث برنامه نویسی مشکل دارم.چند تا کد توی نت پیدا کردم.میزارم اگه براتون مقدوره در توسعه برنامه بهم کمک کنید
برای 25 کلید از این میشه استفاده کرد
اره میتونی با همین کد انجام بدی
سمت فرستنده کافیه به جای هر سوئیچت یه if اضافه کنی:
مثلا برای حالت دو کلیدی فرستنده این کد رو ببین و تا آخر پیش برو :
کد:
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
int msg[2];
RF24 radio(8,10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int SW1 = 2;
int SW2=3;
void setup(void){
Serial.begin(9600);
radio.begin();
radio.openWritingPipe(pipe);}
void loop(void){
if (digitalRead(SW1) == HIGH){
msg[0] = 111;
radio.write(msg, 2);}
if (digitalRead(SW2)==HIGH) {
msg[1]=222;
radio.write(msg, 2);
} }
گیرنده :
کد:
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#define CE_PIN 9
#define CSN_PIN 10
int msg[2];
const uint64_t pipe = 0xE8E8F0F0E1LL;
RF24 radio(CE_PIN, CSN_PIN);
int LED1 = 3;
int led=2;
void setup(){
Serial.begin(9600);
radio.begin();
radio.openReadingPipe(1,pipe);
radio.startListening();
pinMode(LED1, OUTPUT);
pinMode(2,OUTPUT);
}
void loop(void){
if ( radio.available() )
{
// Read the data payload until we've received everything
bool done = false;
while (!done)
{
done = radio.read( msg, sizeof(msg) );
if(msg[0]==111) {
digitalWrite(3,HIGH);
Serial.print("Message recived ");
} else
{
digitalWrite(3,LOW);
}
if(msg[1]==222){
digitalWrite(2,HIGH) ;
}
else {
digitalWrite(2,LOW);
}
}
}
}