Skip to content

Instantly share code, notes, and snippets.

View martinohanlon's full-sized avatar

Martin O'Hanlon martinohanlon

View GitHub Profile
@martinohanlon
martinohanlon / holdbutton.py
Last active August 1, 2016 13:25
Creating a 'holdable button' with gpiozero
from gpiozero import Button
from threading import Timer
class HoldableButton(Button):
def __init__(self, pin=None, pull_up=True, bounce_time=None, hold_time=1, repeat=False):
super(HoldableButton, self).__init__(pin, pull_up, bounce_time)
# Set Button when_pressed and when_released to call local functions
# cant use super() as it doesn't support setters
@martinohanlon
martinohanlon / sevensegdisplay.py
Last active August 12, 2017 21:05
4 digit 7 segment display
from gpiozero import LEDCollection, LEDBoard, OutputDeviceError, DigitalOutputDevice
from gpiozero.threads import GPIOThread
from gpiozero.exc import OutputDeviceError
from itertools import cycle
from time import sleep
class SevenSegmentDisplay(LEDBoard):
"""
Extends :class:`LEDBoard` for a 7 segment LED display
7 segment displays have either 7 or 8 pins, 7 pins for the digit display
@martinohanlon
martinohanlon / gist:0f7b82393a68482deda056af2672bb9e
Created October 27, 2017 14:24
Python function Threading examples
import threading
from time import sleep
def count(time_to_sleep):
while True:
i = 0
print(i)
i += 1
sleep(time_to_sleep)
@martinohanlon
martinohanlon / slack_streamer.py
Created November 15, 2017 17:14
Slack command line streamer
# A terminal slack streamer
# pre-requisites
# - colorama : pip install colorama
# - slackclient : pip install slackclient
# - a legacy slack api token : https://api.slack.com/custom-integrations/legacy-tokens
from slackclient import SlackClient
from colorama import init, Fore, Back
import time
import os
@martinohanlon
martinohanlon / bluedot_shutdown.py
Last active January 10, 2018 21:28
BlueDot shutdown on double press
from bluedot import BlueDot
from subprocess import call
# create a function which will be called when then bluedot is double pressed / swiped
def shutdown_pi():
call("sudo halt", shell=True)
# create the blue dot
bd = BlueDot()
# call the shutdown_pi function when its double pressed
@martinohanlon
martinohanlon / windows_add_python_to_path.py
Created February 27, 2018 16:20
This python script will find python directories and add them to the windows PATH
# this python script will find the directory python.exe and python/Scripts
# and add them to the windows path
import subprocess
import sys
import os
def add_to_PATH(paths):
# create the paths to add to the PATH
path_to_add = ""
@martinohanlon
martinohanlon / blinkt_remote.py
Created December 30, 2018 22:23
A remote controlled light using Blue Dot and a pimoroni blinkt.
# A remote controlled light using Blue Dot and a pimoroni blinkt.
# install packages - sudo pip3 install bluedot, blinkt, colorzero
import blinkt
from bluedot import BlueDot
from signal import pause
from colorzero import Color
from threading import Event
class BlinktDot():
@martinohanlon
martinohanlon / char_count.py
Created June 13, 2018 15:36
guizero character counting example
from guizero import App, TextBox, Text
def count():
result.value = len(text_to_count.value) - 1
app = App(title="character count")
instruction = Text(app, text="Put your text here")
text_to_count = TextBox(app, multiline = True, width=60, height=25, command=count)
text_to_count.when_key_released = count
result = Text(app, text="0")
@martinohanlon
martinohanlon / sensehat_tilt.py
Created April 18, 2019 13:18
Sense HAT tilting
from sense_hat import SenseHat
sense = SenseHat()
tilt = "flat"
def display_orientation(yaw, pitch, roll, tilt):
print("{:06.2f}|{:06.2f}|{:06.2f}|{}".format(yaw, pitch, roll, tilt))
while True:
pos = sense.get_orientation()
from sense_hat import SenseHat
def display_acceleration(x, y, z):
print("{:06.2f}|{:06.2f}|{:06.2f}".format(x, y, z))
sense = SenseHat()
while True:
acceleration = sense.get_accelerometer_raw()
x = acceleration['x']