Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
pir1_sensor.cpp@5:fbd5b1e953e6, 2017-01-05 (annotated)
- Committer:
- pannaannap
- Date:
- Thu Jan 05 11:05:03 2017 +0000
- Revision:
- 5:fbd5b1e953e6
- Parent:
- 4:aa25f65395e3
- Child:
- 6:98401b545e0c
master
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| pannaannap | 5:fbd5b1e953e6 | 1 | #include "mbed.h" |
| pannaannap | 5:fbd5b1e953e6 | 2 | |
| pannaanna | 2:6541a391bdbd | 3 | #include "common.h" |
| pannaanna | 2:6541a391bdbd | 4 | |
| pannaanna | 2:6541a391bdbd | 5 | // ***** SETTINGS START ***** |
| pannaanna | 2:6541a391bdbd | 6 | |
| pannaannap | 5:fbd5b1e953e6 | 7 | const unsigned long long RX_ADDRESS = PIR1_ADDRESS; |
| pannaannap | 5:fbd5b1e953e6 | 8 | const unsigned long long TX_ADDRESS = MASTER_ADDRESS; |
| pannaanna | 2:6541a391bdbd | 9 | const double SEND_INTERVAL = 5.0; |
| pannaanna | 2:6541a391bdbd | 10 | const uint8_t SENSOR_ID = PIR1; |
| pannaanna | 2:6541a391bdbd | 11 | |
| pannaanna | 2:6541a391bdbd | 12 | // ***** SETTINGS END ***** |
| pannaanna | 2:6541a391bdbd | 13 | |
| pannaanna | 2:6541a391bdbd | 14 | Serial pc(USBTX, USBRX); // tx, rx |
| pannaanna | 2:6541a391bdbd | 15 | nRF24L01P radio(PB_15, PB_14, PB_13, PB_12, PB_1, PB_2); // mosi, miso, sck, csn, ce, irq |
| pannaanna | 2:6541a391bdbd | 16 | DigitalIn sensor(PA_10); |
| pannaanna | 2:6541a391bdbd | 17 | |
| pannaanna | 2:6541a391bdbd | 18 | Ticker sender; |
| pannaanna | 2:6541a391bdbd | 19 | bool send_acc_results = false; |
| pannaanna | 2:6541a391bdbd | 20 | |
| pannaanna | 2:6541a391bdbd | 21 | void set_send() { |
| pannaanna | 2:6541a391bdbd | 22 | send_acc_results = true; |
| pannaanna | 2:6541a391bdbd | 23 | } |
| pannaanna | 2:6541a391bdbd | 24 | |
| pannaanna | 2:6541a391bdbd | 25 | void init() { |
| pannaanna | 2:6541a391bdbd | 26 | sensor.mode(PullDown); |
| pannaanna | 2:6541a391bdbd | 27 | pc.baud(115200); |
| pannaanna | 2:6541a391bdbd | 28 | sender.attach(&set_send, SEND_INTERVAL); |
| pannaanna | 2:6541a391bdbd | 29 | radio_init(&radio, RX_ADDRESS, TX_ADDRESS); |
| pannaanna | 2:6541a391bdbd | 30 | } |
| pannaanna | 2:6541a391bdbd | 31 | |
| pannaanna | 2:6541a391bdbd | 32 | int main() { |
| pannaanna | 2:6541a391bdbd | 33 | init(); |
| pannaanna | 2:6541a391bdbd | 34 | |
| pannaanna | 2:6541a391bdbd | 35 | // Display the (default) setup of the nRF24L01+ chip |
| pannaanna | 2:6541a391bdbd | 36 | pc.printf( "nRF24L01+ Frequency : %d MHz\r\n", radio.getRfFrequency() ); |
| pannaanna | 2:6541a391bdbd | 37 | pc.printf( "nRF24L01+ Output power : %d dBm\r\n", radio.getRfOutputPower() ); |
| pannaanna | 2:6541a391bdbd | 38 | pc.printf( "nRF24L01+ Data Rate : %d kbps\r\n", radio.getAirDataRate() ); |
| pannaanna | 2:6541a391bdbd | 39 | pc.printf( "nRF24L01+ TX Address : 0x%010llX\r\n", radio.getTxAddress() ); |
| pannaanna | 2:6541a391bdbd | 40 | pc.printf( "nRF24L01+ RX0 Address : 0x%010llX\r\n", radio.getRxAddress(NRF24L01P_PIPE_P0) ); |
| pannaanna | 2:6541a391bdbd | 41 | pc.printf( "nRF24L01+ RX1 Address : 0x%010llX\r\n", radio.getRxAddress(NRF24L01P_PIPE_P1) ); |
| pannaanna | 2:6541a391bdbd | 42 | |
| pannaanna | 2:6541a391bdbd | 43 | uint8_t count_changes; |
| pannaanna | 2:6541a391bdbd | 44 | int last_state; |
| pannaanna | 2:6541a391bdbd | 45 | |
| pannaanna | 2:6541a391bdbd | 46 | while (1) { |
| pannaanna | 2:6541a391bdbd | 47 | int state; |
| pannaanna | 2:6541a391bdbd | 48 | if (sensor.read()) { |
| pannaanna | 2:6541a391bdbd | 49 | state = 1; |
| pannaanna | 2:6541a391bdbd | 50 | } else { |
| pannaanna | 2:6541a391bdbd | 51 | state = 0; |
| pannaanna | 2:6541a391bdbd | 52 | } |
| pannaanna | 2:6541a391bdbd | 53 | |
| pannaanna | 2:6541a391bdbd | 54 | if (last_state != state) { |
| pannaanna | 2:6541a391bdbd | 55 | last_state = state; |
| pannaanna | 2:6541a391bdbd | 56 | count_changes++; |
| pannaanna | 2:6541a391bdbd | 57 | } |
| pannaanna | 2:6541a391bdbd | 58 | |
| pannaanna | 2:6541a391bdbd | 59 | if (send_acc_results) { |
| pannaanna | 2:6541a391bdbd | 60 | Data data(SENSOR_ID, count_changes); |
| pannaanna | 2:6541a391bdbd | 61 | std::string serialized_data = data.serialize(); |
| pannaanna | 2:6541a391bdbd | 62 | pc.printf("string data '%s', len %d\r\n", serialized_data.c_str(), serialized_data.size()); |
| pannaanna | 2:6541a391bdbd | 63 | |
| pannaanna | 2:6541a391bdbd | 64 | char message[TRANSFER_SIZE]; |
| pannaannap | 4:aa25f65395e3 | 65 | memcpy(message, serialized_data.c_str(), 2); |
| pannaanna | 2:6541a391bdbd | 66 | int tx_bytes = radio.write(NRF24L01P_PIPE_P0, message, TRANSFER_SIZE); |
| pannaanna | 2:6541a391bdbd | 67 | |
| pannaanna | 2:6541a391bdbd | 68 | if (tx_bytes > 0) { |
| pannaanna | 2:6541a391bdbd | 69 | pc.printf("Counter: %d\r\n", count_changes); |
| pannaanna | 2:6541a391bdbd | 70 | pc.printf("RETR: %d\r\n", radio.getRetrCount()); |
| pannaanna | 2:6541a391bdbd | 71 | count_changes = 0; |
| pannaanna | 2:6541a391bdbd | 72 | send_acc_results = false; |
| pannaanna | 2:6541a391bdbd | 73 | } |
| pannaanna | 2:6541a391bdbd | 74 | if(tx_bytes < 0) |
| pannaanna | 2:6541a391bdbd | 75 | pc.printf("TX ERROR\r\n"); |
| pannaanna | 2:6541a391bdbd | 76 | } |
| pannaanna | 2:6541a391bdbd | 77 | |
| pannaanna | 2:6541a391bdbd | 78 | } |
| pannaanna | 2:6541a391bdbd | 79 | } |
| pannaanna | 2:6541a391bdbd | 80 |