Anyleaf
For use with the Anyleaf pH sensor in Rust on embedded systems, and single-board computers.
Example for Rasperry Pi, and other Linux systems:
Cargo.toml
:
[package]
name = "anyleaf_linux_example"
version = "0.1.0"
authors = ["Anyleaf <david.alan.oconnor@gmail.com>"]
edition = "2018"
[dependencies]
embedded-hal = "^0.2.3"
linux-embedded-hal = "^0.3.0"
anyleaf = "^0.1.3"
main.rs
:
use embedded_hal::blocking::delay::DelayMs;
use linux_embedded_hal::{Delay, I2cdev};
use anyleaf::{PhSensor, CalPt, CalSlot};
fn main() {
let i2c = I2cdev::new("/dev/i2c-1").unwrap();
let mut ph_sensor = PhSensor::new(i2c);
ph_sensor.calibrate_all(
CalPt::new(0., 7., 25.), CalPt::new(0.18, 4., 25.), Some(CalPt::new(-0.18, 10., 25.))
);
let mut delay = Delay {};
loop {
let pH = ph_sensor.read().unwrap();
println!("pH: {}", pH);
delay.delay_ms(500_u16);
}
}
Example for Stm32F3:
Cargo.toml
:
[package]
name = "anyleaf_stm32_example"
version = "0.1.0"
authors = ["Anyleaf <david.alan.oconnor@gmail.com>"]
edition = "2018"
[dependencies]
cortex-m = "^0.6.2"
cortex-m-rt = "^0.6.12"
stm32f3xx-hal = { version = "^0.4.3", features=["stm32f303xc", "rt"] }
f3 ="0.6.1"
embedded-hal = "^0.2.3"
panic-itm = "^0.4.1"
anyleaf = {version = "^0.1.0"}
main.rs
:
#![no_main]
#![no_std]
use cortex_m::{self, iprintln};
use cortex_m_rt::entry;
use stm32f3xx_hal as hal;
use hal::{delay::Delay, i2c::I2c, prelude::*, stm32};
use embedded_hal::blocking::delay::DelayMs;
use panic_itm; use anyleaf::{PhSensor, CalPt, CalSlot};
#[entry]
fn main() -> ! {
let mut cp = cortex_m::Peripherals::take().unwrap();
let dp = stm32::Peripherals::take().unwrap();
let stim = &mut cp.ITM.stim[0];
let mut flash = dp.FLASH.constrain();
let mut rcc = dp.RCC.constrain();
let clocks = rcc.cfgr.freeze(&mut flash.acr);
let mut gpiob = dp.GPIOB.split(&mut rcc.ahb); let scl = gpiob.pb6.into_af4(&mut gpiob.moder, &mut gpiob.afrl);
let sda = gpiob.pb7.into_af4(&mut gpiob.moder, &mut gpiob.afrl);
let i2c = I2c::i2c1(dp.I2C1, (scl, sda), 100.khz(), clocks, &mut rcc.apb1);
let mut ph_sensor = PhSensor::new(i2c);
ph_sensor.calibrate_all(
CalPt::new(0., 7., 25.), CalPt::new(0.18, 4., 25.), Some(CalPt::new(-0.18, 10., 25.))
);
let mut delay = Delay::new(cp.SYST, clocks);
loop {
let pH = ph_sensor.read().unwrap();
iprintln!(stim, "pH: {}", pH);
delay.delay_ms(500_u16);
}
}