Просмотр исходного кода

Receive weather data from the weather sensor and print it out

Bernd Gottschlag 5 лет назад
Родитель
Сommit
4245c1eee7
1 измененных файлов: 15 добавлений и 1 удалений
  1. 15
    1
      base-station/software/src/main.rs

+ 15
- 1
base-station/software/src/main.rs Просмотреть файл

@@ -2,6 +2,8 @@ use embedded_nrf24l01::{Configuration, CrcMode, DataRate, NRF24L01};
2 2
 use linux_embedded_hal::spidev::{SpiModeFlags, Spidev, SpidevOptions};
3 3
 use linux_embedded_hal::sysfs_gpio::Direction;
4 4
 use linux_embedded_hal::Pin;
5
+use std::convert::TryInto;
6
+use std::time::Instant;
5 7
 
6 8
 use spi::EmbeddedHalSpidev;
7 9
 
@@ -43,7 +45,7 @@ fn main() {
43 45
     // Initialize the radio module.
44 46
     let mut nrf24 = NRF24L01::new(ce, cs, spi).unwrap();
45 47
     nrf24.set_frequency(0x32).unwrap();
46
-    nrf24.set_rf(DataRate::R2Mbps, 0).unwrap();
48
+    nrf24.set_rf(DataRate::R2Mbps, 3).unwrap();
47 49
     nrf24.set_crc(Some(CrcMode::OneByte)).unwrap();
48 50
     nrf24.set_auto_retransmit(250, 3).unwrap();
49 51
     nrf24
@@ -60,6 +62,8 @@ fn main() {
60 62
 
61 63
     println!("width: {}", nrf24.get_address_width().unwrap());
62 64
 
65
+    let mut start = Instant::now();
66
+
63 67
     // Receive data.
64 68
     let mut nrf24 = nrf24.rx().unwrap();
65 69
     println!("Starting to receive:");
@@ -67,6 +71,16 @@ fn main() {
67 71
         if let Some(pipe) = nrf24.can_read().unwrap() {
68 72
             let payload = nrf24.read().unwrap();
69 73
             println!("packet received on pipe {}: {:?}", pipe, payload.as_ref());
74
+            let pressure = u32::from_le_bytes(payload.as_ref()[0..4].try_into().unwrap());
75
+            let temperature = u32::from_le_bytes(payload.as_ref()[4..8].try_into().unwrap());
76
+            let humidity = u32::from_le_bytes(payload.as_ref()[8..12].try_into().unwrap());
77
+            println!("pressure: {}", pressure as f32 / 100.0);
78
+            println!("temperature: {}", temperature as f32 / 100.0);
79
+            println!("humidity: {}", humidity as f32 / 1024.0);
80
+            let end = Instant::now();
81
+            let elapsed = end.duration_since(start);
82
+            println!("Debug: {:?}", elapsed);
83
+            start = end;
70 84
         }
71 85
     }
72 86
 }

Загрузка…
Отмена
Сохранить