-
Notifications
You must be signed in to change notification settings - Fork 7
/
getGyro.py
124 lines (97 loc) · 3.16 KB
/
getGyro.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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# Copyright (C) 2015 Niklas Rosenstein, MIT License
# Last modified by Yi Jui Lee (August 15 2015)
from __future__ import division
import sys
from sys import exit
import myo
from myo.lowlevel import pose_t, stream_emg
from myo.six import print_
import random
import time
open('Gyroscope.txt', 'w').close()
temp = []
with open('PythonVars.txt') as f:
for val in f:
temp.append(int(val))
samplerate = temp[0]
t_s = 1/samplerate
print "\n\nSample rate is adjusted to %.0f Hz" % (samplerate)
print "Collecting acceleration data every %.3f seconds" % (t_s)
T = temp[1]
print "\n\nThis program will terminate in %.1f seconds\n" %(T)
myo.init()
r"""
There can be a lot of output from certain data like acceleration and orientation.
This parameter controls the percent of times that data is shown.
"""
class Listener(myo.DeviceListener):
# return False from any method to stop the Hub
def on_connect(self, myo, timestamp):
print_("Connected to Myo")
myo.vibrate('short')
myo.set_stream_emg(stream_emg.enabled)
myo.request_rssi()
global start
global start2
start = time.time()
start2 = time.time()
def on_rssi(self, myo, timestamp, rssi):
print_("RSSI:", rssi)
def on_event(self, event):
r""" Called before any of the event callbacks. """
def on_event_finished(self, event):
r""" Called after the respective event callbacks have been
invoked. This method is *always* triggered, even if one of
the callbacks requested the stop of the Hub. """
def on_pair(self, myo, timestamp):
print_('Paired')
print_("If you don't see any responses to your movements, try re-running the program or making sure the Myo works with Myo Connect (from Thalmic Labs).")
print_("Double tap enables EMG.")
print_("Spreading fingers disables EMG.\n")
def on_disconnect(self, myo, timestamp):
print_('on_disconnect')
def on_gyroscope_data(self, myo, timestamp, gyroscope):
r = 'Gyroscope.txt'
global start
global t2
global t_s
current = time.time()
tdiff = current - start
t2 = timestamp
if 't1' not in globals():
global t1
t1 = timestamp
if tdiff > t_s:
#print_(gyroscope)
start = time.time()
show_output('gyroscope', gyroscope, r)
def on_unlock(self, myo, timestamp):
print_('unlocked')
def on_lock(self, myo, timestamp):
print_('locked')
def on_sync(self, myo, timestamp):
print_('synced')
def on_unsync(self, myo, timestamp):
print_('unsynced')
def show_output(message, data, r):
global t2
global t1
if t2 - t1 < (T*1000000):
with open(r, "a") as text_file:
text_file.write("{0}\n".format(data))
else:
exit()
def main():
hub = myo.Hub()
hub.set_locking_policy(myo.locking_policy.none)
hub.run(1000, Listener())
# Listen to keyboard interrupts and stop the
# hub in that case.
try:
while hub.running:
myo.time.sleep(0.2)
except KeyboardInterrupt:
print_("Quitting ...")
hub.stop(True)
if __name__ == '__main__':
main()