Skip to content

Instantly share code, notes, and snippets.

REM Move all of the files from a recently inserted USB drive to a directory on a local hard drive.
REM Edit these to set the correct paths for your USB drive and the location where you want the files to end up.
set "SRC=J:\RECORD"
set "DST=D:\Users\josh\Documents\OrsonEar"
REM This should be set up inside Task Schedualer to run on the follwoing event:
REM Log : Microsoft-Windows-DeviceSetupManager/Admin
REM Source : DeviceSetupManager
REM Event ID : 112
VOR=0 (Voice Activation On=1; Off=0. I prefer continuous capture. Bits are free.)
LED=0 (Led On after 10 Sec=1; Led Off after 10 Sec=0. I turn the LED off to save battery and not be anoying in the dark)
SEG=300 (File Segment Time=1~999, I use 300 mins=5 hours per segment)
TIME=20231121181704 (Set this to the current time before saving the file. I use GMT)
/*
* Below is a a modified version of the TI MSP430 LCDE_01 example named `msp430fr413x_LCDE_01.c`
* It simply displays the numbers 1-6 on the built-in LCD display on the MSP-EXP430FR4133 Lanuchpad.
*
* I could not find any ultra-low power examples of an MSP430 driving and LCD, so I started with
* the TI code and kept updating it to try to use less power using things I noticed in the datasheets.
*
* I was able to drop the current usage from 200uA down to less than 1uA without any noticable change in functionality.
*
* I hope to write a full article about this and other MSP430 power optimization techniques on josh.com soon.
// put your main code here, to run repeatedly:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
void setup() {
// put your setup code here, to run once:
main();
@bigjosh
bigjosh / nbits2target.js
Last active June 1, 2021 01:15
Convert bitcoin `nBits` field into a hex string value for `target` using only string functions
// Returns a 64 char (256 bit) hex string of the target
// Based on https://developer.bitcoin.org/reference/block_chain.html#target-nbits
function nbits2target( nbits ) {
const significand = nbits & 0x00ffffff;
const exponent = nbits >>> (8*3);
// (all `*2` are becuase calcuations are in bytes, but in string 1 byte = 2 letter places)
const fixed6SigString = (significand.toString(16)).padStart( 3*2 , "0");
@bigjosh
bigjosh / BlinkUntilDead.ino
Last active January 6, 2021 06:44
Example of how to prevent sleeping on a Move38 blink - DANGER: USE WITH CARE
#include "shared/blinkbios_shared_button.h"
#include "shared/blinkbios_shared_functions.h"
// Example of how to prevent a blink from going to sleep.
// This will keep blinking once per second until the battery goes dead.
// Button click will show a red flash. Note that we are making fake button presses
// to avoid warm sleep, so you can not reliabily detect an actual button press but you can
// see clicks and long presses.
@bigjosh
bigjosh / DistributedCounterDemo.ino
Last active December 22, 2020 18:26
Counts the number of connected nodes in a distributed and robust way. More info at https://forum.move38.com/t/yadca-yet-another-distributed-counting-algorithm/468
// SimpleCounter demo
// A simple distributed counter example
//
// On startup, blinks are dim BLUE which shows they are in IDLE mode waiting for a master
//
// Button press a blink to make it master of the cluster. The master will show the current count
// using the 0-342 display format decribed below under showNumber()...
//
// While a blink is actively part of a counting cluster, it will show dim GREEN on the face
// that points to its parent. All parent faces eventually lead back to the master.
@bigjosh
bigjosh / showNumberDemo.ino
Last active June 7, 2020 21:42
Display a number 0-342 using the RGB LEDs on a Move38.com blink
// Display a number 0-342 on the LEDs
// The number is shown in base 7 format with red, green,
// and blue being the 1's, 7's, and 49's places respecitively
// A 0 digit is shown as OFF. Digits 1-6 are shown as 1-6 LEDs
// lit with the place color.
//
// 0 = All Off
// 1 = 1 RED
// 2 = 2 RED
// ...
/*
Blinks Dev-Kit
Validation Test for Dev Kit Blinks
4 modes for testing
1. Verify RGB on all 6 faces together
2. Verify RGB on each of the 6 faces individually
3. Verify communication w/ awake neighbors
4. Verify cold sleep (<0.2µA)
/*********************************************************************
This is an example for our nRF52 based Bluefruit LE modules
Pick one up today in the adafruit shop!
Adafruit invests time and resources providing this open source code,
please support Adafruit and open-source hardware by purchasing
products from Adafruit!
MIT license, check LICENSE for more information