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