Skip to main content
Version: FILS English

Picogame RPG

A turn based rpg implemeting sensors for special attacks on a pico 2w.

info

Author: Denis-Iulian Pavel
GitHub Project Link: https://github.com/UPB-PMRust-Students/project-denis-iulian-pavel

Description

My project will be a game coded completely in rust designed to run on a Pico 2W with 4 buttons (A, B, Special and Menu), a joystick for navigation, a tft screen, with sensors for special attacks (such as a light sensor or proximity sensor)

Motivation

I chose this project because I decided to implement a multiple features and utilize all aspects I've studied up until now in the lab, in rust on a microprocessor like the Pico 2W.

Architecture

Raspberry Pi Pico 2W to:

  • rgb_tft screen 128x160
  • A, B, Special, Start buttons
  • Joystick
  • buzzer
  • sensors (to be determined)

Log

Week 5 - 11 May

Week 12 - 18 May

Week 19 - 25 May

Hardware

Raspberry Pi Pico 2W, Buttons, Joystick, Screen (rgb_tft 128x160), sensors

Schematics

No schematic yet

Bill of Materials

DeviceUsagePrice
Raspberry Pi Pico 2WThe main controller39.66 RON
Electronic Components KitBasic Components15.63 RON (SALE)
1.8-inch SPI TFT Module LCD DisplayScreen15.45 RON (SALE)
Breadboard HQ (830 Puncte)Extra Breadboard9.98 RON (DELISTED)
Modul Joystick Biaxial Negru cu 5 piniNavigation5.35 RON

Software

LibraryDescriptionUsage
tinybmpBMP image decoder for embedded environmentsTo decode BMP image files
embedded-textText rendering library for embedded-graphicsFor rendering text on embedded graphics displays
embassy-embedded-halEmbedded HAL utilities with async supportPeripheral abstraction layer with async support
embassy-syncSynchronization primitives and data structuresAsync-aware synchronization and data sharing
embassy-executorAsync/await executor for embedded systemsTask executor with interrupt and thread support
embassy-futuresUtilities for working with futures in no_stdLightweight futures utilities without alloc
embassy-timeTimekeeping and delaysDelays, timeouts, and scheduling
embassy-rpRP2040 HAL (Hardware Abstraction Layer)Support for Raspberry Pi RP2040 microcontrollers
embassy-usbUSB device supportAsync USB device stack
fixedFixed-point number libraryFixed-point math operations
fixed-macroMacros for fixed-point numbersConvenient fixed-point literals
serdeSerialization/deserialization frameworkJSON and data serialization
serde-json-coreJSON support for no_std environmentsJSON parsing/serialization in embedded systems
cortex-m-rtCortex-M runtime supportStartup and runtime support for Cortex-M
embedded-graphics2D graphics library for embedded systemsDrawing graphics on embedded displays
display-interface-spiSPI interface for display driversCommunicate with SPI-based displays
display-interfaceDisplay interface abstractionsAbstraction for display communication
mipidsiGeneric MIPI-DSI display driverDriver for TFT displays
heaplessHeapless data structuresFixed-capacity data structures
embedded-halHardware abstraction layerBlocking hardware interface traits
embedded-hal-asyncAsync embedded HAL traitsAsync hardware interface traits
embedded-hal-busBus sharing utilitiesUtilities for sharing SPI/I2C buses
embedded-io-asyncAsync IO traitsAsync read/write traits for embedded systems
static-cellStatically allocated runtime cellSafe static initialization
embedded-storageStorage trait definitionsTraits for non-volatile storage
randRandom number generationRNG utilities
byte-slice-castSafely cast byte slicesType-safe byte slice casting