NRF24L01 + ATmega328P-PU Radio Sensor (10 / 11 stap)

Stap 10: Voorbeeld schets bewerkt: led_remote.cpp

Bestand: 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. */ 

Standaard preambule, met nota van wijziging.

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

Laden van de bibliotheken

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

CE en CSN pin-toewijzingen, die ik heb gewijzigd als ik ben met behulp van pin 7 en 8 niet 9 en 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; 

Ik bewerkt de Role_pin, als ik willen zou gebruiken A0 voor een foto-weerstand, maar nog steeds sommige compatibiliteit met deze gewijzigde code.

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

Ik ben alleen met behulp van twee knoppen hebben meer dan genoeg voor mijn doeleinden, en ook zal een toekomstige doel.

 // 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); 

Geven een Lees verder digital pin 4, knipperen de Lees indicator leidde, voordat de druk op de knop wijzigen van de status van de andere twee leidde de volgens.

 // 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 

Gerelateerde Artikelen

Raspberry Pi nRF24L01 + gegevensverzamelaarset met behulp van Google formulieren

Raspberry Pi nRF24L01 + gegevensverzamelaarset met behulp van Google formulieren

Een headless Raspberry Pi met een nRF24L01 + 2,4 GHz radio transceiver, verbonden met het internet. Ontvangen van draadloze gegevenspakketten van externe sensoren en presenteren van de gegevens aan een Google formulier voor latere weergave en present
DIY afstandsbediening voor Hexdrake

DIY afstandsbediening voor Hexdrake

Hallo, ik ben David en dit is mijn tweede instructable :).Het is een voortzetting van mijn eerste instructable, waar ik u laten zien hoe ik mijn kleine hexapod hexapod, Hexdrake gebouwd:In dit nieuwe instructable ik zal je laten zien hoe ik deze uitg
Vintage tandenborstel Timer

Vintage tandenborstel Timer

mijn laatste bezoek aan de tandarts mij ervan overtuigd dat ik moet echt poets mijn tanden minstens twee minuten. Heb ik besloten om het bouwen van een speciale tandenborstel timer: het zou detecteren wanneer een borstel is genomen, meten van twee mi
Tellen met IR en LCD

Tellen met IR en LCD

Hoi allemaal!Vandaag presenteer ik je een mijn oude project, gemaakt tussen januari en februari van 2015. Het is een eenvoudige teller, gebaseerd op Atmega328p en IR sensor scherpe 2Y0A21.Werken met kleine automaten, tijdens de stadia van het testen,
Verbeterde NRF24L01 radio met een DIY dipoolantenne wijziging.

Verbeterde NRF24L01 radio met een DIY dipoolantenne wijziging.

De situatie was dat ik was alleen in staat om te verzenden en ontvangen via 2 of 3 muren met een afstand van ongeveer 50 voet, met behulp van standaard nRF24L01 + modules. Dit was niet voldoende voor mijn beoogde gebruik.Ik had eerder probeerde toevo
Aan de slag met Arduino - Nordic NRF24L01 Radio's

Aan de slag met Arduino - Nordic NRF24L01 Radio's

In deze tutorial zullen we een paar Nordic NRF24L01 Radio's gebruiken om te communiceren tussen twee afzonderlijke Arduinos.NRF24L01 Radio's zijn erg goedkoop planken, ideaal voor korte reeks communicatie tussen meerdere apparaten.Wij zal opzetten ee
Arduino LoRa Sensor met InAir9B Radio

Arduino LoRa Sensor met InAir9B Radio

Hier zal ik beschrijven stap voor stap hoe te maken werken LoRa sensor met LoRaWAN stack op basis van de inAir9B module en Arduino UNO (hetzelfde kan worden toegepast op Mega).Heb niet gevonden een volledige tutorial overal op het Web en besloot om h
RASPBERRY PI nRF24L01 + Mini-Hat/Proto-Board

RASPBERRY PI nRF24L01 + Mini-Hat/Proto-Board

Ik wilde een gebruikersspecifieke nRF24L01 + Radio's toevoegen aan mijn Raspberry Pi's. Ik wilde de oplossing redelijk elegant en passen in mijn Pi gevallen zonder het verwijderen van de mogelijkheid van het toevoegen van een camera en andere accesso
AtoZ van RC hobby + DIY radio met ARDUINO

AtoZ van RC hobby + DIY radio met ARDUINO

Wikipedia omschrijft RC-voertuig alsEen afstandsbediening voertuig is een voertuig dat op afstand wordt bestuurd door een betekent dat de beweging met een externe oorsprong niet tot het apparaat beperkt. Dit is vaak een bedieningsorgaan radio, kabel
Telemetrie radio voor een Model Rocket

Telemetrie radio voor een Model Rocket

vliegen model raketten is leuk, maar er is altijd de vraag hoe hoog het deed gaan. Met behulp van een programmeerbare micro-controller en sommige sensoren, u kunt het controleren van de gehele fase van de vlucht en versnelling van de maatregel en hoo
Ocean Plastic Sensor

Ocean Plastic Sensor

Sinds 1940 hebben wij produceren en vervreemden steeds meer plastic in de Oceaan. In 2013 alleen schatten wij om ongeveer 300 miljoenen tonnen plastic - hetzelfde gewicht van de gehele mensheid (vlees en beenderen) in plastic, alleen in één jaar hebb
How to Hack RC Car zender Via 2,4 GHz NRF24L01 Arduino Part1 Tx

How to Hack RC Car zender Via 2,4 GHz NRF24L01 Arduino Part1 Tx

Deze instructie zal advies u kappen 3-kanaals RC transmitter(Tx). De standaard afstandsbediening van RC auto en boot vandaag.De standaard Gas of elektrische RC auto's directionele gecontroleerd door een elektro-servo dat bewegende mechanische voorwie
Het wijzigen van de RC auto Via 2,4 GHz NRF24L01 Arduino Part2 Reciever(Rx)

Het wijzigen van de RC auto Via 2,4 GHz NRF24L01 Arduino Part2 Reciever(Rx)

Dit is de voortdurende instructie of "How to Modify RC auto Via 2,4 GHz NRF24L01 Arduino Part1 Transmitter(Tx)"De instructie zal advies hoe het bouwen van 2,4 GHz systeem ontvanger die in principe gebruikt in rc auto vandaag.Dank aan arduino-inf
Het wijzigen van de RC auto via 2,4 GHz nRF24L01 Arduino Part1 Transmitter(Tx)

Het wijzigen van de RC auto via 2,4 GHz nRF24L01 Arduino Part1 Transmitter(Tx)

Deze instructie laat u kennismaken met het wijzigen van goedkope rc auto met behulp van 2,4 GHz nRF24L01 module met Arduino controller UNO.Gewone rc auto speelgoed gebruiken AM / FM 20-50 MHz RadioControle hebben slechts 5-10 m. externe bereik en law