Skip to content

Instantly share code, notes, and snippets.

View jgibbard's full-sized avatar

James jgibbard

View GitHub Profile
@jgibbard
jgibbard / LCD_LIB.c
Created September 7, 2013 12:14
16x2 Character LCD screen library for PIC microcontrollers
/*
* File: LCD_LIB.c
* Author: James Gibbard
* Description: Display library for operating 16x2 Hitachi HD44780 type displays
* Created on 24 April 2013, 15:23
*/
#include <xc.h>
#include "LCD_LIB.h"
#include <stdio.h>
@jgibbard
jgibbard / frisbee.bgproj
Created May 20, 2014 10:56
Bluetooth Controlled LED Frisbee
<?xml version="1.0" encoding="UTF-8" ?>
<project>
<gatt in="gatt.xml" />
<hardware in="hardware.xml" />
<script in="frisbee.bgs" />
<image out="BLE112.hex" />
<device type="ble112" />
<boot fw="bootuart" />
</project>
@jgibbard
jgibbard / pll_test.vhd
Last active March 16, 2017 12:00
VHDL Counter
library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; USE ieee.std_logic_arith.all;
--This example shows how different speed signals can be created using both a counter method and a PLL
--PLL are very powerful and can be used to generate both fast or slower clk speeds as well as changing the phase of the signal.
--There are a limited amount of PLLs on an FPGA however a single PLL block in the FPGA can often be used to generate several different frequencies.
entity pll_test is port (
CLOCK_50 : in std_logic;
SW : in std_logic_vector(9 downto 0);
LEDG : OUT std_logic_vector(9 downto 0)
@jgibbard
jgibbard / FPGA_VGA.vhd
Last active January 1, 2024 16:15
VHDL VGA PONG
--VHDL VGA PONG demo
--An FPGA version of the classic pong game
--Score counts up to 9
--Right player uses buttons 0 and 1
--Left player uses Switch 0 (Much harder!)
--Button 2 resets the game and score
library ieee; use ieee.std_logic_1164.all; USE ieee.std_logic_arith.all;
entity FPGA_VGA is
@jgibbard
jgibbard / enigma.c
Created February 8, 2015 21:15
Enigma Machine Emulator
//Emulates the output of a WWII German Enigma encryption machine
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//#define DEBUG
#define MAX_MESSAGE_LENGTH 100
//Strut Prototypes
@jgibbard
jgibbard / latLongCalcs.py
Created October 22, 2017 17:44
Functions to calculate APPROXIMATE range, bearing, and XY offset between two lat/long positions
# Functions to calculate APPROXIMATE range, bearing, and XY offset between two lat/long positions
# Uses the Haversine Formula
# See http://www.movable-type.co.uk/scripts/latlong.html for more details
# Math library needed for cos, sine, atan2, sqrt, degrees, and radians
import math
# This is the mean radius of the earth in metres
EARTH_RADIUS = 6371000.0
@jgibbard
jgibbard / pythonInstall.sh
Last active November 10, 2020 08:52
CentOS7 - Install Python 2.7 and 3.6 from source
#!/bin/bash
# Python 2.7 and 2.6 install script for CentOS 7
# Instructions mainly taken from tutorial by Daniel Eriksson
# https://danieleriksson.net/2017/02/08/how-to-install-latest-python-on-centos/
python27_version=2.7.15
python36_version=3.6.6
build_dir=python_build_temp
example_environment_dir=pythonEnv
@jgibbard
jgibbard / led.py
Created November 3, 2019 21:06
DE10 Nano LED / Key demo
from mmap import mmap
import time
import struct
LWFPGASLVS_OFST = 0xFF200000
LED_PIO_BASE = 0x3000
LED_SPAN = 0x10
KEY_BASE = 0x5000
KEY_SPAN = 0x10
@jgibbard
jgibbard / FM_Demod.ipynb
Created November 27, 2019 16:23
FM demod
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
import select, socket, sys, queue, time
from threading import Thread
from threading import Event
import logging
class TcpClient(Thread):
def __init__(self, ipAddress, port, recvQueue, sendQueue, stopEvent):
Thread.__init__(self)