diff --git a/docs/examples/colour_cycle.py b/docs/examples/colour_cycle.py index 5960023..bf2faa4 100755 --- a/docs/examples/colour_cycle.py +++ b/docs/examples/colour_cycle.py @@ -1,8 +1,8 @@ -#!/usr/bin/python +#!/usr/bin/env python import time from sense_hat import SenseHat -sense = SenseHat() +sense = SenseHat(clear_on_exit=True) r = 255 g = 0 diff --git a/docs/examples/compass.py b/docs/examples/compass.py index 2c18929..08851a9 100755 --- a/docs/examples/compass.py +++ b/docs/examples/compass.py @@ -1,5 +1,4 @@ -#!/usr/bin/python -import sys +#!/usr/bin/env python from sense_hat import SenseHat # To get good results with the magnetometer you must first calibrate it using @@ -9,7 +8,7 @@ led_loop = [4, 5, 6, 7, 15, 23, 31, 39, 47, 55, 63, 62, 61, 60, 59, 58, 57, 56, 48, 40, 32, 24, 16, 8, 0, 1, 2, 3] -sense = SenseHat() +sense = SenseHat(clear_on_exit=True) sense.set_rotation(0) sense.clear() diff --git a/docs/examples/rainbow.py b/docs/examples/rainbow.py index 9eea886..9da53a0 100755 --- a/docs/examples/rainbow.py +++ b/docs/examples/rainbow.py @@ -1,8 +1,8 @@ -#!/usr/bin/python +#!/usr/bin/env python import time from sense_hat import SenseHat -sense = SenseHat() +sense = SenseHat(clear_on_exit=True) pixels = [ [255, 0, 0], [255, 0, 0], [255, 87, 0], [255, 196, 0], [205, 255, 0], [95, 255, 0], [0, 255, 13], [0, 255, 122], diff --git a/docs/examples/rotation.py b/docs/examples/rotation.py index 1a89d89..700d8a3 100755 --- a/docs/examples/rotation.py +++ b/docs/examples/rotation.py @@ -1,5 +1,4 @@ -#!/usr/bin/python -import sys +#!/usr/bin/env python import time from sense_hat import SenseHat @@ -17,7 +16,7 @@ O, O, O, X, O, O, O, O ] -sense = SenseHat() +sense = SenseHat(clear_on_exit=True) sense.set_pixels(question_mark) diff --git a/docs/examples/space_invader.py b/docs/examples/space_invader.py index a9156a1..b7431eb 100755 --- a/docs/examples/space_invader.py +++ b/docs/examples/space_invader.py @@ -1,6 +1,10 @@ -#!/usr/bin/python +#!/usr/bin/env python +import os from sense_hat import SenseHat sense = SenseHat() sense.clear() sense.load_image("space_invader.png") + +os.system("bash -c \"read -n 1 -s -p 'Press any key to exit...'\"") +sense.clear() diff --git a/docs/examples/text_scroll.py b/docs/examples/text_scroll.py index 858433a..8c4e9b9 100755 --- a/docs/examples/text_scroll.py +++ b/docs/examples/text_scroll.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python from sense_hat import SenseHat sense = SenseHat() diff --git a/sense_hat/sense_hat.py b/sense_hat/sense_hat.py index 68aa698..50d4532 100644 --- a/sense_hat/sense_hat.py +++ b/sense_hat/sense_hat.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python import logging import struct import os @@ -12,6 +12,8 @@ import pwd import array import fcntl +import atexit +import signal from PIL import Image # pillow from copy import deepcopy @@ -33,7 +35,8 @@ class SenseHat(object): def __init__( self, imu_settings_file='RTIMULib', - text_assets='sense_hat_text' + text_assets='sense_hat_text', + clear_on_exit=False ): self._fb_device = self._get_fb_device() @@ -92,6 +95,17 @@ def __init__( self._gyro_enabled = False self._accel_enabled = False self._stick = SenseStick() + + if clear_on_exit: + atexit.register(self.clear) + for s in (signal.SIGTERM, signal.SIGINT, signal.SIGQUIT, signal.SIGHUP): + old_handler = signal.getsignal(s) + def handler(signum, frame): + self.clear() + if callable(old_handler): + old_handler(signum, frame) + sys.exit(0) + signal.signal(s, handler) # initialise the TCS34725 colour sensor (if possible) try: