GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.

duplo_train   A
last analyzed

Complexity

Total Complexity 12

Size/Duplication

Total Lines 72
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 51
dl 0
loc 72
rs 10
c 0
b 0
f 0
wmc 12

5 Methods

Rating   Name   Duplication   Size   Complexity  
A Train.vision_sensor_change() 0 8 2
A Train.speed_sensor_change() 0 9 4
A Train.__init__() 0 3 1
A Train.voltage_change() 0 2 1
A Train.run() 0 22 3

1 Function

Rating   Name   Duplication   Size   Complexity  
A system() 0 2 1
1
2
from itertools import cycle
3
from curio import sleep
4
from bricknil import attach, start
5
from bricknil.hub import DuploTrainHub
6
from bricknil.sensor import DuploTrainMotor, DuploSpeedSensor, LED, DuploVisionSensor, DuploSpeaker, Button, VoltageSensor
7
from bricknil.const import Color
8
import logging
9
10
#@attach(DuploSpeaker, name='speaker')
11
@attach(DuploVisionSensor, name='vision_sensor', capabilities=[('sense_reflectivity', 5)])
12
@attach(LED, name='led')
13
@attach(DuploSpeedSensor, name='speed_sensor', capabilities=['sense_speed', 'sense_count'])
14
#@attach(VoltageSensor, name='voltage', capabilities=[('sense_l', 50)])
15
@attach(DuploTrainMotor, name='motor')
16
class Train(DuploTrainHub):
17
18
    def __init__(self, *args, **kwargs):
19
        super().__init__(*args, **kwargs)
20
        self.go = False     # Only becomes true with hub button is pressed
21
22
    async def voltage_change(self):
23
        pass
24
    async def speed_sensor_change(self):
25
        speed = self.speed_sensor.value[DuploSpeedSensor.capability.sense_speed]
26
        if not self.go and speed > 0:
27
            self.go = True
28
            self.message_info('Movement detected: starting...')
29
        elif self.go:
30
            #count = self.speed_sensor.value[DuploSpeedSensor.capability.sense_count]
31
            #self.message_info(f'Speed sensor changed speed: {speed} count: {count}')
32
            self.message_info(f'Speed sensor changed speed: {speed}')
33
34
    async def vision_sensor_change(self):
35
        cap = DuploVisionSensor.capability
36
        #color = self.vision_sensor.value[cap.sense_color]
37
        #ctag  = self.vision_sensor.value[cap.sense_ctag]
38
        reflt  = self.vision_sensor.value[cap.sense_reflectivity]
39
        if self.go:
40
            #self.message_info(f'Vision sensor changed color: {color} ctag: {ctag} reflt: {reflt}')
41
            self.message_info(f'Vision sensor changed color: reflt: {reflt}')
42
43
    async def run(self):
44
        self.message_info("Running")
45
46
        colors = cycle([Color.red, Color.purple, Color.yellow, Color.blue, Color.white])
47
48
        snd = DuploSpeaker.sounds
49
        sounds = cycle([snd.brake, snd.station, snd.water, snd.horn, snd.steam])
50
51
        self.message_info('Please move the train to start the program')
52
        while not self.go:
53
            await self.led.set_color(next(colors))
54
            await sleep(0.3)
55
56
        for i in range(5):
57
            await self.led.set_color(next(colors))       # Cycle through the colors
58
            #await self.speaker.play_sound(next(sounds))  # cycle through the sounds
59
            tgt_speed = 20 + i*15                        # Keep increasing the speed
60
            await self.motor.ramp_speed(tgt_speed, 2000)
61
            self.message_info(f"Set speed to {i}")
62
            await sleep(3)
63
64
        self.message_info("Done")
65
66
async def system():
67
    hub = Train('train', False)
68
69
if __name__ == '__main__':
70
    logging.basicConfig(level=logging.INFO)
71
    start(system)
72