rust-arduino/src/main.rs
Ahmet Kaan GÜMÜŞ b52e6b7be8 feat: led blinks
2024-01-08 04:12:07 +03:00

119 lines
3.2 KiB
Rust

#![no_std]
#![no_main]
use core::cell::RefCell;
use avr_device::interrupt;
use panic_halt as _;
type Console = arduino_hal::hal::usart::Usart0<arduino_hal::DefaultClock>;
static CONSOLE: interrupt::Mutex<RefCell<Option<Console>>> = interrupt::Mutex::new(RefCell::new(None));
macro_rules! println {
($($t:tt)*) => {
interrupt::free(
|cs|
{
if let Some(console) = CONSOLE.borrow(cs).borrow_mut().as_mut()
{
let _ = ufmt::uwriteln!(console, $($t)*);
}
}
)
};
}
fn put_console(console:Console)
{
interrupt::free(
|cs|
{
*CONSOLE.borrow(cs).borrow_mut() = Some(console);
}
)
}
#[arduino_hal::entry]
fn main() -> ! {
let dp = arduino_hal::Peripherals::take().unwrap();
let pins = arduino_hal::pins!(dp);
let serial = arduino_hal::default_serial!(dp, pins, 57600);
put_console(serial);
println!("Hello World");
let mut led02 = pins.d2.into_output();
let mut led03 = pins.d3.into_output();
let mut led04 = pins.d4.into_output();
let mut led05 = pins.d5.into_output();
let mut led06 = pins.d6.into_output();
let mut led07 = pins.d7.into_output();
//let mut led08 = pins.d8.into_output();
let mut led09 = pins.d9.into_output();
let mut led10 = pins.d10.into_output();
let mut led11 = pins.d11.into_output();
let mut led12 = pins.d12.into_output();
let mut led13 = pins.d13.into_output();
loop {
led02.toggle();
arduino_hal::delay_ms(50);
led02.toggle();
led03.toggle();
arduino_hal::delay_ms(50);
led03.toggle();
led04.toggle();
arduino_hal::delay_ms(50);
led04.toggle();
led05.toggle();
arduino_hal::delay_ms(50);
led05.toggle();
led06.toggle();
arduino_hal::delay_ms(50);
led06.toggle();
led07.toggle();
arduino_hal::delay_ms(50);
led07.toggle();
led09.toggle();
arduino_hal::delay_ms(50);
led09.toggle();
led10.toggle();
arduino_hal::delay_ms(50);
led10.toggle();
led11.toggle();
arduino_hal::delay_ms(50);
led11.toggle();
led12.toggle();
arduino_hal::delay_ms(50);
led12.toggle();
led13.toggle();
arduino_hal::delay_ms(50);
led13.toggle();
led12.toggle();
arduino_hal::delay_ms(50);
led12.toggle();
led11.toggle();
arduino_hal::delay_ms(50);
led11.toggle();
led10.toggle();
arduino_hal::delay_ms(50);
led10.toggle();
led09.toggle();
arduino_hal::delay_ms(50);
led09.toggle();
led07.toggle();
arduino_hal::delay_ms(50);
led07.toggle();
led06.toggle();
arduino_hal::delay_ms(50);
led06.toggle();
led05.toggle();
arduino_hal::delay_ms(50);
led05.toggle();
led04.toggle();
arduino_hal::delay_ms(50);
led04.toggle();
led03.toggle();
arduino_hal::delay_ms(50);
led03.toggle();
}
}