first commit
This commit is contained in:
commit
c591b2c272
50 changed files with 2650 additions and 0 deletions
74
Examples/rustacean/src/lib.rs
Normal file
74
Examples/rustacean/src/lib.rs
Normal file
|
@ -0,0 +1,74 @@
|
|||
#![no_std]
|
||||
#![feature(c_size_t)]
|
||||
use arduboy_rust::prelude::*;
|
||||
|
||||
const BOTTOM: u8 = 64;
|
||||
const RIGHT_END: u8 = 128;
|
||||
|
||||
const CHAR_WIDTH: u8 = 6;
|
||||
const CHAR_HEIGHT: u8 = 8;
|
||||
|
||||
const MSG: &str = " I'm now a \0";
|
||||
const MSG2: &str = "Rustacean <3\0";
|
||||
|
||||
struct Environment {
|
||||
x: u8,
|
||||
y: u8,
|
||||
msg_len: u8,
|
||||
}
|
||||
impl Environment {
|
||||
unsafe fn setup(&mut self) {
|
||||
arduboy.begin();
|
||||
arduboy.set_frame_rate(60);
|
||||
let msg_len = MSG.len();
|
||||
debug_assert!(msg_len <= (core::u8::MAX as c_size_t));
|
||||
self.msg_len = msg_len as u8;
|
||||
}
|
||||
|
||||
unsafe fn loop_(&mut self) {
|
||||
if !arduboy.next_frame() {
|
||||
return;
|
||||
}
|
||||
|
||||
if UP.pressed() && self.y > 0 {
|
||||
self.y -= 1;
|
||||
}
|
||||
if RIGHT.pressed() && self.x < RIGHT_END - CHAR_WIDTH * self.msg_len {
|
||||
self.x += 1;
|
||||
}
|
||||
if LEFT.pressed() && self.x > 0 {
|
||||
self.x -= 1;
|
||||
}
|
||||
if DOWN.pressed() && self.y < BOTTOM - CHAR_HEIGHT * 2 {
|
||||
self.y += 1;
|
||||
}
|
||||
|
||||
if (A | B).pressed() {
|
||||
sound.tone(0xff, 0x3f);
|
||||
}
|
||||
|
||||
arduboy.clear();
|
||||
arduboy.set_cursor(self.x.into(), self.y.into());
|
||||
arduboy.print(MSG);
|
||||
arduboy.set_cursor(self.x.into(), (self.y + 9).into());
|
||||
arduboy.print(MSG2);
|
||||
arduboy.display();
|
||||
}
|
||||
}
|
||||
|
||||
static mut E: Environment = Environment {
|
||||
x: 0,
|
||||
y: 0,
|
||||
msg_len: 0,
|
||||
};
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn setup() {
|
||||
E.setup();
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
#[export_name = "loop"]
|
||||
pub unsafe extern "C" fn loop_() {
|
||||
E.loop_();
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue