summaryrefslogblamecommitdiff
path: root/meap/meap-code/ch2/ch2-sensor-emulator.rs
blob: afdc893f077c2bce1a1479a325944b87faa5a852 (plain) (tree)



































                                                        
use std::time;
use std::f64::consts::PI;
use std::thread;

fn main() {
    let mut sensor_array_state: f64 = 1.0;

    for step in 1.. {
        pause(step);
        let reading = take_reading(sensor_array_state);
        print_reading(reading);
        sensor_array_state += 0.05;
    }
}

fn pause(step: usize) {
  let delay_ms = if step % 4 == 0 {
      500
  } else if step % 7 == 0 {
      1000
  } else {
      3
  };

  let delay = time::Duration::from_millis(delay_ms);
  thread::sleep(delay);
}

fn take_reading(x: f64) -> f64 {
  // sin(x) + sin(π / sin(πx))
  x.sin()   + (PI / (x*PI).sin()).sin()
}

fn print_reading(reading: f64) {
  println!("{}", reading);
}