Oak

🌳 An outdoor LoRa-GPS tracker with an E-Ink display 🔑

power 18650
wireless LoRa,
sensor GPS, E-Ink
mcu SAMD21G18
bom items 82
bom cost USD $78.93
vendors 6
completed July 2022

Reading and writing to the flash

flash storage read write easy

Reading and writing a simple integer to the non-volatile flash memory.


Before starting

Dependancies

FlashStorage

Details

Write an integer to the flash. And then increment and store it again. In the process, this example will read and write to the flash storage.

Steps

  1. Plug in the Oak PCB to the computer
  2. (Option A) Ensure the PCB can be detected with ls -al /dev/cu.usbmodem and arduino-cli board list. Run make to compile and upload the code to the board. (Option A) Ensure the PCB can be detected with <code>ls -al /dev/cu.usbmodem</code> and <code>arduino-cli board list</code>. Run <code>make</code> to compile and upload the code to the board.
  3. (Option B) Ensure the board can be detected with Arduino IDE. Compile and upload the code to the board. (Option B) Ensure the board can be detected with Arduino IDE. Compile and upload the code to the board.
  4. Watch the Blinky LED the board is battery-powered or USB-powered.

Serial console

Serial output from the firmware.

Code

Download code
#include <FlashStorage.h>

FlashStorage(my_flash_store, int);

void setup() {
  SerialUSB.begin(9600);
  while (!SerialUSB) {}
  SerialUSB.println("Testing reading and writing into the flash...");

  int number;

  number = my_flash_store.read();
  SerialUSB.println("Read number: " + String(number));

  my_flash_store.write(number + 1);
  number = my_flash_store.read();
  SerialUSB.println("Read number after increment: " + String(number));
}

void loop() { }

Makefile

BOARD?=hutscape:samd:oak
PORT := $(shell ls /dev/cu.usbmodem*)
BUILD=build

.PHONY: default lint all flash clean

default: lint all flash clean

lint:
	cpplint --extensions=ino --filter=-legal/copyright *.ino

all:
	arduino-cli compile --fqbn $(BOARD) --output-dir $(BUILD) ./

flash:
	arduino-cli upload -p $(PORT) --fqbn $(BOARD) --input-dir $(BUILD) --verbose

clean:
	rm -r build

References