use crate::Gpio;
use crate::{HIGH, LOW};
use std::io;
#[derive(Debug, Clone, Copy)]
pub struct L298n {
in1: Gpio,
in2: Gpio,
ena: Gpio,
}
impl L298n {
pub fn new(in1: u32, in2: u32, ena: u32) -> Self {
Self {
in1: Gpio::new(in1).unwrap(),
in2: Gpio::new(in2).unwrap(),
ena: Gpio::new(ena).unwrap(),
}
}
pub fn forward(&mut self) -> Result<(), io::Error> {
self.in1.write(HIGH)?;
self.in2.write(LOW)?;
self.ena.write(HIGH)
}
pub fn backward(&mut self) -> Result<(), io::Error> {
self.in1.write(LOW)?;
self.in2.write(HIGH)?;
self.ena.write(HIGH)
}
pub fn stop(&mut self) -> Result<(), io::Error> {
self.ena.write(LOW)
}
}