-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmain.py
58 lines (39 loc) · 1.32 KB
/
main.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
import atexit
import logging
import logging.handlers
import time
from adafruit_motorkit import MotorKit
import earth
import model
import motor
import sensor
logger = logging.getLogger(__name__)
STEPS_PER_REV = 200
EO_SLEEP = 0.1
ER_SLEEP = 0.05
MO_SLEEP = 0.05
def turn_off_motors(steppers):
for stepper in steppers:
stepper.release()
def init_logger(file_name):
formatter = logging.Formatter('[%(asctime)s] <%(threadName)s> %(levelname)s - %(message)s')
handler = logging.handlers.RotatingFileHandler(file_name, maxBytes=100000, backupCount=3)
handler.setFormatter(formatter)
log = logging.getLogger('')
log.setLevel(logging.INFO)
log.addHandler(handler)
def main():
init_logger('earth_model.log')
kit = MotorKit()
kit2 = MotorKit(address=0x61)
eo_motor = motor.Motor(kit.stepper1, sensor.Sensor(17), EO_SLEEP, STEPS_PER_REV)
er_motor = motor.Motor(kit.stepper2, sensor.Sensor(27), ER_SLEEP)
mo_motor = motor.Motor(kit2.stepper1, sensor.Sensor(23), MO_SLEEP)
atexit.register(turn_off_motors, [kit.stepper1, kit.stepper2, kit2.stepper1])
eo_model = model.Model(eo_motor, er_motor, mo_motor, logger, STEPS_PER_REV)
eo_model.init()
while True:
eo_model.next(earth.earth(earth.timescale.now()))
time.sleep(60)
if __name__ == '__main__':
main()