Capteur Radio ATmega328P-PU de NRF24L01 + (10 / 11 étapes)

Étape 10 : Modifier l’exemple de croquis : led_remote.cpp

Fichier : RF24/examples/Usage/led_remote/led_remote.pde

 /*Copyright (C) 2011 J. Coliz This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation. * * * modified 11/7/2015 ST * * Using pins D2 and D3 * * A2 to GND sets board as receiver (LED Board) * * * * * * Example LED Remote * * This is an example of how to use the RF24 class to control a remote * bank of LED's using buttons on a remote control. * * On the 'remote', connect any number of buttons or switches from * an arduino pin to ground. Update 'button_pins' to reflect the * pins used. * * On the 'led' board, connect the same number of LED's from an * arduino pin to a resistor to ground. Update 'led_pins' to reflect * the pins used. Also connect a separate pin to ground and change * the 'role_pin'. This tells the sketch it's running on the LED board. * * Every time the buttons change on the remote, the entire state of * buttons is sent to the led board, which displays the state. */ 

Préambule standard, avec note de modification.

 #include #include "nRF24L01.h" #include "RF24.h" #include "printf.h" 

Charger les bibliothèques

 // // Hardware configuration // Set up nRF24L01 radio on SPI bus plus pins 7 & 8 (CE & CS) RF24 radio(7,8); 

CE et CSN pin affectations, ceux-ci j’ai modifié comme je suis en utilisant les broches 7 et 8 pas les 9 et 10.

 // sets the role of this unit in hardware. Connect to GND to be the 'led' board receiver // Leave open to be the 'remote' transmitter const int role_pin = A2; 

J’ai modifié la Role_pin, que je voudrais utiliser A0 pour une résistance de photo, mais toujours maintenir une compatibilité avec cette modification du code.

 // Pins on the remote for buttons const uint8_t button_pins[] = { 2,3 }; const uint8_t num_button_pins = sizeof(button_pins); 

Je suis seulement en utilisant deux boutons, plus que suffisant pour mon application et aussi ont un but futur.

 // Pins on the LED board for LED's const uint8_t led_pins[] = { 2,3}; const uint8_t num_led_pins = sizeof(led_pins); 
 // // Topology // Single radio pipe address for the 2 nodes to communicate. const uint64_t pipe = 0xE8E8F0F0E1LL; 
 // // Role management // // Set up role. This sketch uses the same software for all the nodes in this // system. Doing so greatly simplifies testing. The hardware itself specifies // which node it is. // // This is done through the role_pin // The various roles supported by this sketch typedef enum { role_remote = 1, role_led } role_e; // The debug-friendly names of those roles const char* role_friendly_name[] = { "invalid", "Remote", "LED Board"}; // The role of the current running sketch role_e role; // // Payload // 
 uint8_t button_states[num_button_pins]; uint8_t led_states[num_led_pins]; 
 // // Setup // 
 void setup(void) { // // Role // // set up the role pin pinMode(role_pin, INPUT); digitalWrite(role_pin,HIGH); delay(20); // Just to get a solid reading on the role pin // read the address pin, establish our role if ( digitalRead(role_pin) ) role = role_remote; else role = role_led; 
 // // Print preamble // 
 Serial.begin(57600); printf_begin(); printf("\n\rRF24/examples/led_remote/\n\r"); printf("ROLE: %s\n\r",role_friendly_name[role]); 
 // // Setup and configure rf radio // 
 radio.begin(); 
 radio.setDataRate(RF24_250KBPS); // options are; RF24_250KBPS, RF24_1MBPS, RF24_2MBPS 
 // // Open pipes to other nodes for communication // 
 // This simple sketch opens a single pipes for these two nodes to communicate // back and forth. One listens on it, the other talks to it. 
 if ( role == role_remote ) { radio.openWritingPipe(pipe); } else { radio.openReadingPipe(1,pipe); } 
 // // Start listening // 
 if ( role == role_led ) radio.startListening(); 
 // // Dump the configuration of the rf unit for debugging // 
 radio.printDetails(); 
 // // Set up buttons / LED's // 
 // Set pull-up resistors for all buttons if ( role == role_remote ) { int i = num_button_pins; while(i--) { pinMode(button_pins[i],INPUT); digitalWrite(button_pins[i],HIGH); } } 
 // Turn LED's ON until we start getting keys if ( role == role_led ) { int i = num_led_pins; while(i--) { pinMode(led_pins[i],OUTPUT); led_states[i] = HIGH; digitalWrite(led_pins[i],led_states[i]); } pinMode(4,OUTPUT); digitalWrite(4,LOW); } } 
 // // Loop // 
 void loop(void) { // // Remote role. If the state of any button has changed, send the whole state of // all buttons. // if ( role == role_remote ) { // Get the current state of buttons, and // Test if the current state is different from the last state we sent int i = num_button_pins; bool different = false; while(i--) { uint8_t state = ! digitalRead(button_pins[i]); if ( state != button_states[i] ) { different = true; button_states[i] = state; } } 
 // Send the state of the buttons to the LED board if ( different ) { printf("Now sending..."); bool ok = radio.write( button_states, num_button_pins ); if (ok) printf("ok\n\r"); else printf("failed\n\r"); } 
 // Try again in a short while delay(20); } 
 // // LED role. Receive the state of all buttons, and reflect that in the LEDs // 
 if ( role == role_led ) { // if there is data ready if ( radio.available() ) { // Dump the payloads until we've gotten everything while (radio.available()) { // Fetch the payload, and see if this was the last one. radio.read( button_states, num_button_pins ); 
 // Spew it printf("Got buttons\n\r"); digitalWrite(4,HIGH); delay(20); digitalWrite(4,LOW); delay(30); digitalWrite(4,HIGH); delay(20); digitalWrite(4,LOW); delay(30); digitalWrite(4,HIGH); delay(20); digitalWrite(4,LOW); 

Indiquer une lecture sur la broche numérique 4, à clignoter l’indicateur de lecture dirigée, avant la modification de l’état de l’autre deux conduit de selon la presse de bouton.

 // For each button, if the button now on, then toggle the LED int i = num_led_pins; while(i--) { if ( button_states[i] ) { led_states[i] ^= HIGH; digitalWrite(led_pins[i],led_states[i]); } } } } } } // vim:ai:cin:sts=2 sw=2 ft=cpp 

Articles Liés

Sans fil capteur nœud avec le NRF24L01

Sans fil capteur nœud avec le NRF24L01

Dans cet 5 partie Instructable, nous examinons comment concevoir un nœud de capteurs sans fil flexible du concept à la configuration PCB. Pour la conception, nous utiliserons Arduino et l'émetteur/récepteur de faible coût nRF24L01. Pour accéder le co
Raspberry Pi nRF24L01 + collecteur de données à l’aide des formulaires de Google

Raspberry Pi nRF24L01 + collecteur de données à l’aide des formulaires de Google

Un headless Raspberry Pi avec un nRF24L01 + émetteur-récepteur radio 2,4 GHz, connecté à internet. Réception de paquets de données sans fil de capteurs à distance et présentation des données à un formulaire Google pour visionnement ultérieur et prése
Enregistreur de température Pi framboise par Radio

Enregistreur de température Pi framboise par Radio

Ce projet fait usage d'un pi de framboise, de lire la température de plusieurs capteurs radio et rangez-les sur une base de données Sqlite.Le même pi framboise est utilisé pour servir des pages Web avec le graphique des températures acquises.Voir la
Couleur extrême orgue

Couleur extrême orgue

Salut tous ! J'ai voulu faire quelque chose de fun avec ma chambre pendant un certain temps maintenant et du faire il défi lueur m'a donné une raison de le faire. Il y a quelques mois, que j'ai acquis un chapelet de lumières de GE-35 effets de couleu
Fijibot

Fijibot

Fijibot est autonome, autonome en charge photovore. J'ai construit lui en utilisant un 1,5 litre, bouteille d'eau de Fidji, un Arduino Uno, panneau solaire 6v (et diverses autres parties) de Radio Shack, un bouclier de Proto Arduino (ainsi que divers
Mise en route avec Arduino - Nordic Radios NRF24L01

Mise en route avec Arduino - Nordic Radios NRF24L01

Dans ce tutoriel, nous allons utiliser une paire de Nordic NRF24L01 Radios pour communiquer entre deux Arduinos distincts.NRF24L01 radios sont des conseils très bon marchés, idéales pour les communications à courte portée entre plusieurs périphérique
Capteur de LoRa Arduino avec Radio InAir9B

Capteur de LoRa Arduino avec Radio InAir9B

Ici je vais décrire étape par étape comment faire travail capteur LoRa avec pile LoRaWAN issu d'inAir9B module et Arduino UNO (même peut être appliqué aux méga).N'avez pas trouvé un tutoriel complet n'importe où sur le Web et a décidé de le rendre.En
Radiomessagerie NRF24L01 avec une modification de l’antenne dipôle DIY.

Radiomessagerie NRF24L01 avec une modification de l’antenne dipôle DIY.

La situation est que j'étais seulement capable de transmettre et de recevoir par l'intermédiaire de 2 ou 3 murs avec une distance d'environ 50 pieds, à l'aide de modules standard nRF24L01 +. Cela ne suffisait pas pour mon usage prévu.J'avais déjà ess
AtoZ de modelisme + bricolage radio avec ARDUINO

AtoZ de modelisme + bricolage radio avec ARDUINO

Wikipedia définit RC-véhiculeUn véhicule de contrôle à distance est un véhicule qui est contrôlé à distance par un moyen qui ne limite pas son mouvement avec une origine externe à l'appareil. Il s'agit souvent d'un dispositif de commande radio, câble
RASPBERRY PI nRF24L01 + Mini-Hat/Proto-Conseil

RASPBERRY PI nRF24L01 + Mini-Hat/Proto-Conseil

Je voulais un conseil personnalisé pour ajouter des radios nRF24L01 + à mon Raspberry Pi. Je voulais que la solution soit raisonnablement élégant et s'adaptent dans mon cas de Pi sans enlever la possibilité d'ajouter un appareil photo et autres acces
Un capteur solaire

Un capteur solaire

J'ai fait ce instructable pour montrer comment bon marché et il est devenu facile pour faire un nœud de capteurs sans fil qui fonctionne sans piles ! J'ai profité de la nouvelle BrownDogGadgets USB chargeur solaire, un achat précis, à seulement 30 $
La vérité sur l’émetteur/récepteur Nrf24L01

La vérité sur l’émetteur/récepteur Nrf24L01

Jimmy Wales a dit: « nous sommes dans les débuts de l'internet. Permet d'utiliser à bon escient"La vérité sur l'émetteur/récepteur nrf24L01 est qu'il est très facile à utiliser et agréable de travailler avec if vous faire certaines choses correctemen
Comment pirater émetteur RC voiture Via 2,4 GHz NRF24L01 Arduino Part1 Tx

Comment pirater émetteur RC voiture Via 2,4 GHz NRF24L01 Arduino Part1 Tx

Cette instruction vous conseille vous hack 3 canaux RC transmitter(Tx). La télécommande standard de voiture RC, bateau aujourd'hui.Les voitures gaz ou électrique RC standards sont directionnelles, commandé par un servo électrique que déplacement méca
Comment modifier les RC voiture via 2,4 GHz nRF24L01 Arduino Part1 Transmitter(Tx)

Comment modifier les RC voiture via 2,4 GHz nRF24L01 Arduino Part1 Transmitter(Tx)

Cette instruction vous présentera comment modifier les voitures rc à bas prix en utilisant le module nRF24L01 2 .4GHz avec contrôleur Arduino UNO.Jouet de voiture rc ordinaire utiliser AM / FM radiocommande 20-50 MHz, qui ont seulement portée de 5 à