-
Notifications
You must be signed in to change notification settings - Fork 0
/
BB8.py
74 lines (65 loc) · 2.45 KB
/
BB8.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import atexit
import time
import logging
import RPi.GPIO as GPIO
from LED import *
from Sound import *
from Network import *
from Eye import *
from LogicDisplay import *
from ProcessStateIndicator import *
from HoloProjector import *
from StatusDisplay import *
from neopixel import *
class BB8:
def __init__(self):
logging.basicConfig(format="%(levelname)s (%(asctime)s): %(message)s", datefmt="%I:%M:%S %p", level=logging.WARNING, filename="/var/tmp/BB8.log")
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
#atexit.register(self.Exit)
#self.Network = Network()
self.strip = Adafruit_NeoPixel(3 + 3 + 3 + 7, 13, channel=1)
#atexit.register(self.Exit)
#print atexit._exithandlers
self.strip.begin()
atexit.register(self.Exit)
self.Network = Network()
self.Eye = Eye()
self.ProcessStateIndicator = ProcessStateIndicator(self)
self.FrontTopLogicDisplay = FrontTopLogicDisplay(self.strip)
self.FrontBottomLogicDisplay = FrontBottomLogicDisplay(self.strip)
self.SideLogicDisplay = SideLogicDisplay(self.strip)
self.HoloProjector = HoloProjector(self, self.strip)
self.StatusDisplay = StatusDisplay(self)
self.Sound = Sound()
def Exit(self):
self.SetBrightness(0)
self.StatusDisplay.Exit()
GPIO.cleanup()
def SetBrightness(self, brightness, limit = True):
self.Eye.SetBrightness(brightness)
self.ProcessStateIndicator.SetBrightness(brightness)
self.strip.setBrightness(min(127, brightness / 2) if limit else brightness)
self.strip.show()
def SetDefault(self):
self.Eye.SetDefault()
self.ProcessStateIndicator.SetDefault()
self.FrontTopLogicDisplay.SetDefault()
self.FrontBottomLogicDisplay.SetDefault()
self.SideLogicDisplay.SetDefault()
self.HoloProjector.SetDefault()
def SetR2D2(self):
self.Eye.SetDefault()
self.ProcessStateIndicator.SetR2D2()
self.FrontTopLogicDisplay.SetR2D2()
self.FrontBottomLogicDisplay.SetR2D2()
self.SideLogicDisplay.SetR2D2()
self.HoloProjector.SetDefault()
def Update(self):
self.Network.Update()
self.ProcessStateIndicator.Update()
self.FrontTopLogicDisplay.Update()
self.FrontBottomLogicDisplay.Update()
self.SideLogicDisplay.Update()
self.HoloProjector.Update()
self.StatusDisplay.Update()