Skip to content

Instantly share code, notes, and snippets.

View tuna-f1sh's full-sized avatar

John Whittington tuna-f1sh

View GitHub Profile
@tuna-f1sh
tuna-f1sh / Makefile
Last active October 25, 2023 14:49
arduino-cli Makefile
USER_LIB_PATH = lib
OBJDIR = bin
TARGET = $(firstword $(wildcard *.ino))
BOARD_TAG ?= arduino_zero_native
FQBN ?= adafruit:samd:adafruit_feather_m0
UPLOAD_PORT ?= $(wildcard /dev/tty.usbmodem*)
# just to trigger changes to target bin
CSRC := $(shell find . -type f -name '*.c')
@tuna-f1sh
tuna-f1sh / timestamping-comparison.py
Last active January 8, 2023 15:48
Delta time comparison of Socketcan gs_usb hardware and software timestamps
import datetime
import statistics
import plotly.express as px
import pandas as pd
from cantools.logreader import Parser
# path to comparison files
software_file = "/Users/john/Desktop/software-timestamps.log"
hardware_file = "/Users/john/Desktop/hardware-timestamps.log"
@tuna-f1sh
tuna-f1sh / Makefile
Created August 23, 2022 09:54
Module Makefile out of tree
obj-m += gs_usb.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
reload: gs_usb.ko
sudo rmmod gs_usb.ko
sudo insmod gs_usb.ko
@tuna-f1sh
tuna-f1sh / flipdot.c
Created June 8, 2021 16:58
Hanover FlipDot Display Arduino
#include <Arduino.h>
#include <Wire.h>
#define COLS 96
#define ROWS 16
#define FRAME_SIZE ((ROWS * COLS) / 8)
#define COL_BYTES FRAME_SIZE / 8
#define FOOTER_CHAR 0x03
@tuna-f1sh
tuna-f1sh / async_game_of_life_pil.py
Last active January 23, 2024 06:11
Async task that updates PIL Image with Game of Life
"""
Game of Life async task that updates passed PIL Image with generations
loosely based on https://codereview.stackexchange.com/questions/125292/conways-game-of-life-in-python-saving-to-an-image
but fixes the critical bug which runs the frame update loop on a transient grid resulting in wrong behaviour - I don't have enough points to post fix!
Copied from part of a bigger project I'm working on, this can still be run with the python flipdot module imported using a script.
"""
import random, asyncio
from PIL import Image
@tuna-f1sh
tuna-f1sh / binary.v
Last active February 25, 2023 16:06
reg [3:0] d0;
reg [3:0] d1;
always @(posedge clk)
begin
d0 <= ((d0 & 9) == 9) ? 4'b0 : d0 + 1;
if ((d0 & 9) == 9) d1 <= d1 + 1;
end
@tuna-f1sh
tuna-f1sh / _service.md
Last active November 8, 2017 17:59 — forked from naholyr/_service.md
Sample /etc/init.d script

Sample service script for debianoids

Look at LSB init scripts for more information.

Usage

Copy to /etc/init.d:

# replace "$YOUR_SERVICE_NAME" with your service's name (whenever it's not enough obvious)
@tuna-f1sh
tuna-f1sh / serial.js
Last active July 20, 2017 07:23
Serial port buffer unload test
var SerialPort = require('serialport');
var port = new SerialPort('/dev/ttyUSB0', {
baudRate: 4800
});
port.on('open', function() {
port.write(new Buffer(256), function(err) {
if (err) {
return console.log('Error on write: ', err.message);
}
@tuna-f1sh
tuna-f1sh / studio_linux_conversion.sh
Last active February 17, 2017 16:33
Convert Atmel Studio auto Makefile to Unix based one
#!/bin/sh
# @j_whittington
#
# Script to convert makefile generate from atmel studio 7 (windows)
# to linux path, assuming that you have gcc on PATH
#
# based on https://gist.github.com/theterg/6082389
# GPL
@tuna-f1sh
tuna-f1sh / gerbparse.py
Created August 3, 2016 09:31
Convert Proteus gerber export to layer based file extensions
import os,sys
# Get folder
if len(sys.argv) > 1:
folder = sys.argv[1]
else:
# folder = os.path.dirname(os.path.realpath(__file__))
folder = os.getcwd()
convert = {