Files
microbadge/README.md
Myrddin Dundragon 46a23631e4 The build files and project documents.
This sets up the basic build for the microbit project. The documentation
needed to code against it has been assembled in the documents directory.
2025-07-18 10:37:31 -04:00

127 lines
3.5 KiB
Markdown

# MicroBadge
[![License-Shield][license-shield]][license-url]
[![LinkedIn-Shield][linkedin-shield]][linkedin-url]
MicroBadge is a software application suite for the BBC micro:bit v2, designed
as a digital conference badge.
---
<!-- TABLE OF CONTENTS -->
<details>
<summary>Table of Contents</summary>
<ol>
<li>
<a href="#about-the-project">About The Project</a>
<ul>
<li><a href="#features">Features</a></li>
</ul>
<ul>
<li><a href="#built-with">Built With</a></li>
</ul>
</li>
<li>
<a href="#project-structure">Project Structure</a>
</li>
<li>
<a href="#getting-started">Getting Started</a>
<ul>
<li><a href="#prerequisites">Prerequisites</a></li>
<li><a href="#build-and-flash">Build and Flash</a></li>
</ul>
</li>
<li><a href="#copyright-&-license">Copyright & License</a></li>
</ol>
</details>
## About The Project
This project provides a modular and extensible application framework for the
BBC micro:bit. It supports multiple interactive applications with a shared UI
and rendering infrastructure. It uses message-passing channels and safe numeric
arithmetic via bounded, clamped, and wrapped integer types.
## Features
* Modular application management with a switcher component.
* Menu, Snake, Badge, and future NFC applications included.
* Real-time rendering to the micro:bit LED matrix.
* Button input driven by asynchronous event channels.
* Renderer abstraction for pixel-level control.
* Channel-based messaging for input and output decoupling.
* Safe integer handling using bounded, clamped, and wrapped types.
### Built With
* [Embassy][embassy-url]
* [defmt][defmt-url]
## Project Structure
```text
src/
├── main.rs Entry point of the application.
```
## Getting Started
### Prerequisites
* Properly installed [Rust toolchain][rust-url].
* gdb-multiarch Tested version: 15.0.50.
* minicom Tested version: 2.9.
* [cargo-binutils][binutils-url] Tested Version: 0.3.6.
* [probe-rs-tools][probers-url] Tested Version: 0.24.
The [Rust discovery book][discovery-setup] has a great section on how to setup a
build environment.
Make sure you have the correct bulid target installed.
```bash
rustup target add thumbv7em-none-eabihf
```
### Build and Flash
To build and flash the program to your Microbit just run:
```bash
cargo embed
```
---
## Copyright & License
Copyright 2025 CyberMages LLC
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this library except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS
[license-shield]: https://img.shields.io/badge/License-Apache%202.0-%23008400?style=for-the-badge&
[license-url]: https://workshop.cybermages.tech/myrddin/microbadge/src/branch/main/LICENSE.md
[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge&logo=linkedin&colorB=555
[linkedin-url]: https://www.linkedin.com/in/jason-smith-cybermages/
[embassy-url]: https://github.com/embassy-rs/embassy
[defmt-url]: https://github.com/knurling-rs/defmt
[rust-url]: https://www.rust-lang.org/learn/get-started
[binutils-url]: https://github.com/rust-embedded/cargo-binutils
[probers-url]: https://probe.rs/docs/overview/about-probe-rs/
[discovery-setup]: https://docs.rust-embedded.org/discovery-mb2/03-setup/index.html