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

Steg 10: Modifierade exemplet skiss: led_remote.cpp

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

/ * Copyright (C) 2011 J. Coliz

Detta program är fri programvara; Du kan vidaredistribuera det och/eller
ändra den enligt villkoren i GNU General Public License
version 2 som offentliggörs av Free Software Foundation.
*
*
* ändrad 11/7/2015 ST
*
* Använder stift D2 och D3
*
* A2 till GND anger styrelsen som mottagare (LED Board)
*
*
*
*
*
* Exempel LED fjärrkontroll
*
* Detta är ett exempel på hur du använder klassen RF24 för att kontrollera en fjärrkontroll
* bank av lysdioder med knappar på en fjärrkontroll.
*
* På "remote", ansluta valfritt antal knappar eller växlar från
* en arduino pinnen till jord. Uppdatera 'button_pins' för att spegla den
* stift används.
*
* På "led" ombord, ansluta samma antal lysdioder från en
* arduino stift till ett motstånd till jord. Uppdatera "led_pins" för att återspegla
* stiften används. Även ansluta en separat pin för att marken och ändra
* den "role_pin". Detta säger skissen kör på LED styrelsen.
*
* Varje gång ändra knapparna på fjärrkontrollen, hela delstaten
* knappar skickas till ledde styrelsen som visar statusen.
*/

Standard ingress, med modifiering anteckning.

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

Ladda biblioteken

//
Maskinvarukonfigurationen
Ställa in nRF24L01 radio på SPI buss plus stift 7 & 8 (CE & CS)

RF24 radio(7,8);

CE och CSN stift, dessa jag modifierade som jag använder stift 7 och 8 inte 9 och 10.

anger rollen som denna enhet i hårdvara. Ansluta till GND vara "ledde" styrelsen mottagaren
Lämna öppet för att "remote" sändaren
CONST int role_pin = A2;

Jag ändrade Role_pin, som jag skulle vilja använda A0 för ett foto motstånd, men fortfarande behålla vissa kompatibilitet med denna modifierade koden.

Stiften på fjärrkontrollen för knappar
CONST uint8_t button_pins [] = {2,3};
CONST uint8_t num_button_pins = sizeof(button_pins);

Jag bara använder två knappar, mer än tillräckligt för mina ändamål och också kommer att ha några framtida ändamål.

Stiften på styrelsens LED för LED
CONST uint8_t led_pins [] = {2,3};
CONST uint8_t num_led_pins = sizeof(led_pins);

//
Topologi
Enda radio pipe adress för 2 noder kommunicera.
CONST uint64_t pipe = 0xE8E8F0F0E1LL;

//
Rollhantering
//
Ställ in roll. Denna skiss använder samma programvara för alla noder på denna
systemet. Gör så kraftigt förenklar testning. Själva hårdvaran anger
vilken nod som det är.
//
Detta sker genom role_pin
De olika roller som stöds av denna skiss
TypeDef fasttexttypen {role_remote = 1, role_led} role_e;

Debug-vänlig namnen på dessa roller
CONST char * role_friendly_name [] = {"ogiltig", "Remote", "LED Board"};

Rollen som den nuvarande rinnande skissen
role_e roll.

//
Nyttolast
//

uint8_t button_states [num_button_pins];
uint8_t led_states [num_led_pins];

//
Setup
//

void setup(void)
{
//
Roll
//

ställa in PIN-koden roll
pinMode (role_pin, ingång);
digitalWrite(role_pin,HIGH);
Delay(20); Bara för att få en gedigen läsning på roll stift

Läs adress pin, upprätta vår roll
om (digitalRead(role_pin))
roll = role_remote;
annat
roll = role_led;

//
Skriva ut ingress
//

Serial.BEGIN(57600);
printf_begin();
printf("\n\rRF24/examples/led_remote/\n\r");
printf ("roll: % s\n\r",role_friendly_name[role]);

//
Ställa in och konfigurera rf radio
//

radio.BEGIN();

radio.setDataRate(RF24_250KBPS); alternativen är; RF24_250KBPS, RF24_1MBPS, RF24_2MBPS

//
Öppet rör till andra noder för kommunikation
//

Denna enkla skiss öppnas en enda rör för dessa två noder kommunicera
fram och tillbaka. Man lyssnar på den, andra samtalen till den.

om (roll == role_remote)
{
radio.openWritingPipe(pipe);
}
annat
{
radio.openReadingPipe(1,pipe);
}

//
Börja lyssna
//

om (roll == role_led)
radio.startListening();

//
Dumpa konfigurationen för rf enheten för felsökning
//

radio.printDetails();

//
Ställ in knapparna / LED'S
//

Ställa in pull-up motstånd för alla knappar
om (roll == role_remote)
{
int jag = num_button_pins;
While(i--)
{
pinMode(button_pins[i],INPUT);
digitalWrite(button_pins[i],HIGH);
}
}

Slå LED tills vi börjar få nycklar
om (roll == role_led)
{
int jag = num_led_pins;
While(i--)
{
pinMode(led_pins[i],OUTPUT);
led_states [i] = hög;
digitalWrite(led_pins[i],led_states[i]);
}
pinMode(4,OUTPUT);
digitalWrite(4,LOW);
}

}

//
Loop
//

void loop(void)
{
//
Remote roll. Om tillståndet för någon knapp har förändrats, skicka hela delstaten
alla knappar.
//

om (roll == role_remote)
{
Få aktuell status för knappar, och
Testa om det aktuella läget skiljer sig från den förra staten skickade vi
int jag = num_button_pins;
bool olika = false;
While(i--)
{
uint8_t state =! digitalRead(button_pins[i]);
om (statligt! = button_states [i])
{
olika = sant;
button_states [i] = staten.
}
}

Skicka tillståndet för knapparna till LED styrelsen
om (olika)
{
printf ("nu skicka...");
bool ok = radio.write (button_states, num_button_pins);
om (ok)
printf("ok\n\r");
annat
printf("failed\n\r");
}

Försök igen en kort stund
Delay(20);
}

//
LED roll. Får tillståndet för alla knappar, och återspegla i lysdioder
//

om (roll == role_led)
{
om det finns data redo
om (radio.available())
{
Dumpa nyttolasterna tills vi har fått allt
samtidigt (radio.available())
{
Hämta nyttolasten och se om detta var den sista.
radio.Read (button_states, num_button_pins);

Spy det
printf ("fick 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);

Ange en läsa på digital stift 4, till den Läs Blixtindikator ledde, innan du trycker på knappen ändrar läget för de andra två ledde enligt.

För varje knapp, om knappen nu, sedan växla LED
int jag = num_led_pins;
While(i--)
{
om (button_states [i])
{
led_states [i] ^ = hög;
digitalWrite(led_pins[i],led_states[i]);
}
}
}
}
}
}
vim: ai: cin:sts = 2 sw = 2 ft = cpp

Se Steg
Relaterade Ämnen

Raspberry Pi nRF24L01 + Data Collector använder Google former

En huvudlös Raspberry Pi med en nRF24L01 + 2,4 GHz radio sändtagare, ansluten till internet. Ta emot trådlösa datapaket från fjärrsensorer och presentera data i Google formulär för efterföljande visning och presentation.Data bokförs till formuläret G...

Raspberry Pi Temperaturlogger via Radio

Detta projekt gör använda en raspberry pi, för att läsa av temperaturen i flera radio sensorer, och lagra dem på en Sqlite databas.Den samma raspberry pi används att tjäna webbsidor med grafen av förvärvade temperaturerna.Se live demo här.Steg 1: Ins...

Motorcykel/PushBike larmsystem

En vän till mig har köpt en ny motorcykel nyligen, tillsammans med det han också köpt ett larm. Men eftersom han bor i en andra berättelse lägenhet var han orolig att om larmet ljud, han inte skulle kunna höra det.Han frågade om jag kunde komma med n...

DIY Remote Controller för Hexdrake

Hej, jag är David och detta är min andra instructable :).Det är en fortsättning på min första instructable, där jag visat dig hur jag byggde min lilla hexapod, Hexdrake:I detta nya instructable jag ska visa dig hur jag gjorde detta protoype controlle...

DIY handgjorda Hexapod med arduino (Hexdrake)

Hej, jag är David och i detta instructable ska jag visa hur jag gjorde detta hexapod vars namn är Hexdrake.Sedan jag var 16 blev jag intresserad av elektronisk och senare i robotteknik. Efter att få någon nivå och programmeringskunskaper använder ard...

Raspberry Pi + WebCam + IR fjärrkontroll hemma Controller

WebCam + IR-fjärrkontrollen hemFlyttalsrenderingsmål:1. HomeWebCam2. IR-fjärrkontroll3. raspberry PiHur man gör?Se ovan bilderHur fungerar det?Använd din hem WemCam programvara för att kontrollera och Visa.När Laser pekaren pekar på enheten, fjärrkon...

Vintage tandborste Timer

mitt senaste besök till tandläkaren övertygat mig om att jag verkligen bör borsta tänderna minst två minuter. Jag bestämde mig att bygga en speciell tandborste timer: det skulle upptäcka när en borste tas, mäta två minuter och meddela när tiden är sl...

Att göra en flexibel ring av lysdioder

en flexibel ring av lysdioder är relaterad till saker som LED-kuben. Denna ring är avsedd för användning med textilier i kläder. Ringen skulle kunna användas på andra sätt också, som ett armband, eller som en ring utan som en flexibel raka utbud av l...

Räkna med IR och LCD-

Hej alla!Idag har jag ska presentera en min gamla projekt, mellan januari och februari för 2015. Det är en enkel räknare, baserat på Atmega328p och IR-sensor vassa 2Y0A21.Arbeta med små automatiska maskiner, i ett skede av tester, behövde jag räkna b...

Radiokontrollerad stoppur

Som lärare och medlem av olika idrottsorganisationer, har jag observerat olika olika system, från de traditionella fristående stoppur till mer avancerade (och dyrt) samordnade system som samtidigt tid, sedan rekord ras data. Systemet är fortfarande u...

Förbättrad NRF24L01 radio med en DIY-antenn modifiering.

Situationen var att jag kunde bara för sändning och mottagning genom 2 eller 3 väggar med ett avstånd av ca 50 fot, med standard nRF24L01 + moduler. Detta var otillräcklig för min avsedda användning.Jag hade tidigare försökt att lägga till rekommende...

Trådlös Sensor noden med NRF24L01

I detta 5 del Instructable titta vi på hur man utformar en flexibel trådlös sensor nod från koncept till mönsterkortslayout. För design använder vi Arduino och låg kostnad nRF24L01 sändtagaren. Tillgång till koden och örn PCB filer från detta projekt...

Komma igång med Arduino - nordiska NRF24L01 radio

I denna handledning kommer vi använder ett par av nordiska NRF24L01 radio för att kommunicera mellan två separata Arduinos.NRF24L01 radioapparater är mycket billiga brädor, idealisk för kort räckvidd kommunikation mellan flera enheter.Vi kommer att s...

Arduino LoRa Sensor med InAir9B Radio

Här kommer jag att beskriva steg för steg hur man gör arbeta LoRa sensor med LoRaWAN stack baserade på inAir9B modul och Arduino UNO (samma får tillämpas på Mega).Har inte hittat en komplett handledning någonstans på webben och bestämde sig för att g...

AtoZ av RC hobby + DIY radio med ARDUINO

Wikipedia definierar RC-fordon somEn fjärrkontroll fordon är några fordon som kontrolleras distans ett sätt som inte begränsar sin rörelse med ett yttre ursprung till enheten. Detta är ofta en radio kontroll enhet, kabel mellan kontroll och fordon, e...

RASPBERRY PI nRF24L01 + Mini-Hat/Proto-styrelse

Jag ville ha en anpassad styrelsen att lägga till nRF24L01 + radioapparater i min Raspberry Pi. Jag ville ha lösningen vara någorlunda elegant och passar in i min Pi fall utan att ta bort möjligheten att lägga till en kamera och andra tillbehör. Dett...

SANNINGEN om Nrf24L01 sändtagaren

Jimmy Wales sade: "vi är i den allra första början av internet. Kan använda den klokt"Sanningen om nrf24L01 sändtagaren är att det är mycket lätt att använda och roligt att arbeta med om du gör vissa saker på rätt sätt. Tyvärr innehåller interne...

Arduino använder NRF24L01 Rf modul

Jag kommer att diskutera NRF24L01 transceiver modulen av de modeller som vanligen används i trådlös kommunikation.Du kan använda den enkelt till din användning av denna modul är mycket lätt och bra utbud av projekt. Dessutom är priset också överkomli...

1979 bang & Olufsen Raspberry Pi Internet Radio

detta är en 1979 Bang & Olufsen Beocord 1500 kassettbandspelare som jag har konverterat in i en fristående Raspberry Pi internetradio. De analoga VU-mätarna drivs av Pi via en DAC (Digital till analog omvandlare) krets, med aktuell tid, station och s...