3대의 송신기와 하나의 수신기로 작동하는 걸 만들어 봅니다. 연결은 아래와 같습니다. 버튼은 6번 핀에 연결하고 수신쪽 led는 4,5,6번에 연결했습니다.
SCK -> 13
MISO -> 12
MOSI -> 11
CSN -> 10
CE -> 9
송신쪽에서 버튼을 누르면 각각에 해당하는 led에서 불이 들어오고 다시 누르면 꺼지는 토글방식입니다. 3가지 전부 불이 들어오는 이미지입니다.
// Load up the libraries #include#include #include // define the pins #define CE_PIN 9 #define CSN_PIN 10 // Create a Radio RF24 radio(CE_PIN, CSN_PIN); // Single radio pipe address for the 2 nodes to communicate. //const byte rxAddr[6] = "00001"; const uint64_t pipe = 0xF0F0F0F011LL; int LEDpins[3] = {4, 5, 6 }; int ledState[3] = {0, 0, 0}; int senderId = -1; void setup() { for (int i = 0; i < 3; i++) { pinMode(LEDpins[i], OUTPUT); digitalWrite(LEDpins[i], LOW); } // Start the serial Serial.begin(9600); while(!Serial); Serial.println("NRF24L01P Receiver Starting..."); // Start the radio. radio.begin(); // Power setting radio.setPALevel(RF24_PA_HIGH); // RF24_PA_MIN ,RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX radio.setDataRate( RF24_250KBPS ); // RF24_250KBPS, RF24_1MBPS, RF24_2MBPS // Set the reading pipe and start listening radio.openReadingPipe(0, pipe); radio.startListening(); } void loop() { if (radio.available()) { // the buffer to store the received message in // char senderId[10] = {0}; radio.read(&senderId, 2); ledState[senderId] = !ledState[senderId]; // Print the message out to the COM window Serial.println("Received Message: "); Serial.print(senderId); Serial.println(""); } for (int i = 0; i < 3; i++) { digitalWrite(LEDpins[i], ledState[i]); } }
// Load in the libraries #include#include #include #include // Set the CE & CSN pins #define CE_PIN 9 #define CSN_PIN 10 // Single radio pipe address for the 2 nodes to communicate. const uint64_t pipe = 0xF0F0F0F011LL; // Create a Radio RF24 radio(CE_PIN, CSN_PIN); const byte ON_PIN = 6; Button onBtn(ON_PIN); // define the buttons // CHANGE THIS PER EACH TRANSMITTER, from 0 to 2 const byte transmitterId = 2; void setup() { onBtn.begin(); // Start up the Serial connection while (!Serial); Serial.begin(9600); // Start the Radio! radio.begin(); // Power setting radio.setPALevel(RF24_PA_HIGH); // RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX // Slower data rate for better range radio.setDataRate( RF24_250KBPS ); // RF24_250KBPS, RF24_1MBPS, RF24_2MBPS // Stop listening, so we can send! radio.stopListening(); // Number of retries radio.setRetries(15, 15); radio.openWritingPipe(pipe); } void loop() { onBtn.read(); if (onBtn.wasPressed()) { radio.write(&transmitterId, 2); Serial.println(transmitterId); } // Wait a short while before sending the other one delay(100); }
'Arduino' 카테고리의 다른 글
Arduino Mega Camera (0) | 2019.01.08 |
---|---|
NRF24L01 통신하기 (0) | 2019.01.08 |
74HC595 쉬프트 레지스터 사용하기 (0) | 2019.01.08 |
IR Remote Test (0) | 2019.01.08 |
32×8 Matrix LED 시계 (0) | 2019.01.07 |