-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtestingDataGather.py
73 lines (57 loc) · 1.93 KB
/
testingDataGather.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
#!/usr/bin/python
import smbus
import math
import time
from os import listdir
# Register
power_mgmt_1 = 0x6b
power_mgmt_2 = 0x6c
def read_byte(reg):
return bus.read_byte_data(address, reg)
def read_word(reg):
h = bus.read_byte_data(address, reg)
l = bus.read_byte_data(address, reg+1)
value = (h << 8) + l
return value
def read_word_2c(reg):
val = read_word(reg)
if (val >= 0x8000):
return -((65535 - val) + 1)
else:
return val
def dist(a,b):
return math.sqrt((a*a)+(b*b))
def get_y_rotation(x,y,z):
radians = math.atan2(x, dist(y,z))
return -math.degrees(radians)
def get_x_rotation(x,y,z):
radians = math.atan2(y, dist(x,z))
return math.degrees(radians)
def find_num():
highest = 0
for filename in listdir('./testingdata'):
highest += 1
return highest
bus = smbus.SMBus(1) # bus = smbus.SMBus(0)
address = 0x68 # via i2cdetect
cycle = 0
while True:
label = raw_input("activity label? (runs 5 times)")
low = find_num()
for i in range (low,low+5):
start = raw_input("start?")
print("/testingdata/data{0}.csv printed".format(str(i)))
f = open("./testingdata/data{0}.csv".format(str(i)), "w")
for i in range(1000):
# Activate to be able to address the module
bus.write_byte_data(address, power_mgmt_1, 0)
acceleration_xout = read_word_2c(0x3b)
acceleration_yout = read_word_2c(0x3d)
acceleration_zout = read_word_2c(0x3f)
acceleration_xout_scaled = acceleration_xout / 16384.0
acceleration_yout_scaled = acceleration_yout / 16384.0
acceleration_zout_scaled = acceleration_zout / 16384.0
x = '{0},{1},{2},{3},{4} \n'.format(i,acceleration_xout, acceleration_yout, acceleration_zout, int(label))
f.write(x)
time.sleep(0.0001)
f.close()