コード例 #1
0
mid = 0


# data point
class DataPoint:
    def __init__(self, data):
        self.data = data


try:
    while True:

        humidity = sense.get_humidity()
        pressure = sense.get_pressure()
        temperature = sense.get_temperature()
        o = sense.get_orientation()
        pitch = o["pitch"]
        roll = o["roll"]
        yaw = o["yaw"]

        # get json string from joystick
        for event in sense.stick.get_events():
            if event.action in ('pressed', 'held'):
                x += {'left': -1, 'right': 1}.get(event.direction, 0)
                y += {'up': +1, 'down': -1}.get(event.direction, 0)
                mid += {'middle': +1}.get(event.direction, 0)

        # get json string
        #jsonStr = json.dumps(dp.__dict__)
        jsonStr = json.dumps({
            "temperature": float(temperature),
コード例 #2
0
#!/usr/bin/python3
from sense_emu import SenseHat

import sys
import getopt
import json
import time

sense = SenseHat()
# class DataPoint:
# def __init__(self, data):
# self.data = data

try:
    while True:
        angles = sense.get_orientation()
        # dp = DataPoint(angles)

        data = json.dumps(angles)

        #save to file
        try:
            datafile = open("angleValues.json", "w")
            datafile.write(data)
        except:
            print("Write Error")
        finally:
            datafile.close()

        print(data)
コード例 #3
0
class TamperAlert:
    def __init__(self,
                 change_percent: float = 0.1,
                 tick: float = 0.01,
                 movement_check_interval: float = 1):
        self.sense = SenseHat()
        # amount of change to be considered movement
        self.change_percent = change_percent
        self.tick = tick  # sampling interval
        self.movement_check_interval = movement_check_interval
        self.orientation = self.sense.get_orientation()
        self._moved_event = threading.Event()
        TamperAlert._stop_event = threading.Event()
        self._moved_thread = threading.Thread(
            target=self._run,
            name=f'Moved-{threading.active_count()+1}',
            daemon=True)
        self._moved_thread.start()

    @property
    def when_moved(self) -> Callable[[], None]:
        raise NotImplementedError

    @when_moved.setter
    def when_moved(self, callback: Callable[[], None]):
        if callback:
            self._when_moved = callback
            self._moved_event.set()

    def _run(self):
        self._moved_event.wait()  # wait until callback is set
        tick_counter = 0
        change_counter = 0
        while not TamperAlert._stop_event.is_set():
            tick_counter += 1
            orientation = self.sense.get_orientation()
            if self._changed(orientation['pitch'], self.orientation['pitch']) \
                    or self._changed(orientation['roll'], self.orientation['roll']) \
                    or self._changed(orientation['yaw'], self.orientation['yaw']):
                change_counter += 1
                if change_counter * 2 >= tick_counter:  # changed at least 50% of time
                    change_counter = 0
                    try:
                        self._when_moved()
                    except Exception as e:
                        logging.error(f'Callback failed: {e}')
            if tick_counter >= self.movement_check_interval // self.tick:
                self.orientation = orientation  # new baseline
                tick_counter = 0
                change_counter = 0
            time.sleep(self.tick)

    def _changed(self, value: float, baseline: float) -> bool:
        return abs((value - baseline) /
                   baseline) >= self.change_percent if baseline else False

    @staticmethod
    @atexit.register
    def _stop_threads():
        if hasattr(TamperAlert, '_stop_event'):
            TamperAlert._stop_event.set()
コード例 #4
0
from time import sleep
sense = SenseHat()
y = [255, 255, 255]
e = [0, 0, 0]
O = [0, 0, 255]
A = 0
B = 0
path = [
    y, y, y, e, e, e, e, e, e, e, y, e, e, e, e, e, e, e, y, e, e, e, e, e, e,
    e, y, y, y, y, y, e, e, e, e, e, e, e, y, e, e, e, e, e, e, e, y, e, e, e,
    e, e, y, y, y, e, e, e, e, e, y, e, e, e
]
while 1:
    sense.set_pixels(path)
    sense.set_pixel(A, B, O)
    pitch = sense.get_orientation()['pitch']
    roll = sense.get_orientation()['roll']
    print('Pitch:', pitch)
    print('Roll:', roll)
    if 270 < pitch < 315 and A < 7:
        A += 1
    if 45 < pitch < 90 and A > 0:
        A -= 1
    if 45 < roll < 90 and B < 7:
        B += 1
    if 270 < roll < 315 and B > 0:
        B -= 1
    current = sense.get_pixel(A, B)
    if current == e:
        A = 0
        B = 0