Help with gyro code - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: Help with gyro code (/thread-2597.html) |
Help with gyro code - tmccoy33 - Mar-27-2017 Hello everyone. I am new to coding and I am working on a personal project at home. I have built an led matrix and I am using a Raspberry pi 3 with an MPU6050 gyro/accelerometer. My goal is to light up individual leds based on readings from both the gyro/accel. I have worked out the accelerometer part of this, however the gyro returns to zero everyone it takes a reading since it only measures angular velocity. Is there a way to add the new values it takes to each preceding value and use that sum for my ranges to activate gpio pins? Or if anyone has any other ideas I would really appreciate it. Here is my code: # Import the MPU6050 class from the MPU6050.py file from MPU6050 import MPU6050 from time import sleep import RPi.GPIO as gpio import math # Create a new instance of the MPU6050 class sensor = MPU6050(0x68) #Prepare gpio pin use gpio.setwarnings(False) gpio.setmode(gpio.BOARD) #Setup gpio pin outputs for accelerometer gpio.setup(16, gpio.OUT) gpio.setup(18, gpio.OUT) gpio.setup(22, gpio.OUT) gpio.setup(24, gpio.OUT) gpio.setup(26, gpio.OUT) gpio.setup(32, gpio.OUT) gpio.setup(36, gpio.OUT) gpio.setup(38, gpio.OUT) gpio.setup(40, gpio.OUT) #Setup gpio pin outputs for gyro gpio.setup(15, gpio.OUT) gpio.setup(19, gpio.OUT) gpio.setup(21, gpio.OUT) gpio.setup(23, gpio.OUT) gpio.setup(29, gpio.OUT) gpio.setup(31, gpio.OUT) gpio.setup(33, gpio.OUT) gpio.setup(35, gpio.OUT) gpio.setup(37, gpio.OUT) #Set accelerometer range values A = range(0, 1) B = range(2, 3) C = range(4, 5) D = range(6, 7) E = range(8, 9) F = range(10, 11) G = range(12, 13) H = range(14, 15) I = range(16, 17) #Set gyro range values J = range(176, 225) K = range(126, 175) L = range(76, 125) M = range(26, 75) N = range(-25, 25) P = range(-75, -26) R = range(-125, -76) S = range(-175, -126) T = range(-225, -176) while True: accel_data = sensor.get_accel_data() gyro_data = sensor.get_gyro_data() y = gyro_data['y'] x = accel_data['x'] print( "gyro" ) print("y: " + str(int(gyro_data['y']))) print( "------------------------- ") print( "accelerometer" ) print("x: " + str(int(accel_data['x']))) print( "---------------------------------------------------------------" ) if x in A: gpio.output(16, True) gpio.output(18, False) gpio.output(22, False) gpio.output(24, False) gpio.output(26, False) gpio.output(32, False) gpio.output(36, False) gpio.output(38, False) gpio.output(40, False) if x in B: gpio.output(18, True) gpio.output(16, False) gpio.output(22, False) gpio.output(24, False) gpio.output(26, False) gpio.output(32, False) gpio.output(36, False) gpio.output(38, False) gpio.output(40, False) if x in C: gpio.output(22, True) gpio.output(18, False) gpio.output(16, False) gpio.output(24, False) gpio.output(26, False) gpio.output(32, False) gpio.output(36, False) gpio.output(38, False) gpio.output(40, False) if x in D: gpio.output(24, True) gpio.output(18, False) gpio.output(22, False) gpio.output(16, False) gpio.output(26, False) gpio.output(32, False) gpio.output(36, False) gpio.output(38, False) gpio.output(40, False) if x in E: gpio.output(26, True) gpio.output(18, False) gpio.output(22, False) gpio.output(24, False) gpio.output(16, False) gpio.output(32, False) gpio.output(36, False) gpio.output(38, False) gpio.output(40, False) if x in F: gpio.output(32, True) gpio.output(18, False) gpio.output(22, False) gpio.output(24, False) gpio.output(26, False) gpio.output(16, False) gpio.output(36, False) gpio.output(38, False) gpio.output(40, False) if x in G: gpio.output(36, True) gpio.output(18, False) gpio.output(22, False) gpio.output(24, False) gpio.output(26, False) gpio.output(32, False) gpio.output(16, False) gpio.output(38, False) gpio.output(40, False) if x in H: gpio.output(38, True) gpio.output(18, False) gpio.output(22, False) gpio.output(24, False) gpio.output(26, False) gpio.output(32, False) gpio.output(36, False) gpio.output(16, False) gpio.output(40, False) if x in I: gpio.output(40, True) gpio.output(18, False) gpio.output(22, False) gpio.output(24, False) gpio.output(26, False) gpio.output(32, False) gpio.output(36, False) gpio.output(38, False) gpio.output(16, False) if y in J: gpio.output(15, True) gpio.output(19, False) gpio.output(21, False) gpio.output(23, False) gpio.output(29, False) gpio.output(31, False) gpio.output(33, False) gpio.output(35, False) gpio.output(37, False) if y in K: gpio.output(19, True) gpio.output(15, False) gpio.output(21, False) gpio.output(23, False) gpio.output(29, False) gpio.output(31, False) gpio.output(33, False) gpio.output(35, False) gpio.output(37, False) if y in L: gpio.output(21, True) gpio.output(19, False) gpio.output(15, False) gpio.output(23, False) gpio.output(29, False) gpio.output(31, False) gpio.output(33, False) gpio.output(35, False) gpio.output(37, False) if y in M: gpio.output(23, True) gpio.output(19, False) gpio.output(21, False) gpio.output(15, False) gpio.output(29, False) gpio.output(31, False) gpio.output(33, False) gpio.output(35, False) gpio.output(37, False) if y in N: gpio.output(29, True) gpio.output(19, False) gpio.output(21, False) gpio.output(23, False) gpio.output(15, False) gpio.output(31, False) gpio.output(33, False) gpio.output(35, False) gpio.output(37, False) if y in P: gpio.output(31, True) gpio.output(19, False) gpio.output(21, False) gpio.output(23, False) gpio.output(29, False) gpio.output(15, False) gpio.output(33, False) gpio.output(35, False) gpio.output(37, False) if y in R: gpio.output(33, True) gpio.output(19, False) gpio.output(21, False) gpio.output(23, False) gpio.output(29, False) gpio.output(31, False) gpio.output(15, False) gpio.output(35, False) gpio.output(37, False) if y in S: gpio.output(35, True) gpio.output(19, False) gpio.output(21, False) gpio.output(23, False) gpio.output(29, False) gpio.output(31, False) gpio.output(33, False) gpio.output(15, False) gpio.output(37, False) if y in T: gpio.output(37, True) gpio.output(19, False) gpio.output(21, False) gpio.output(23, False) gpio.output(29, False) gpio.output(31, False) gpio.output(33, False) gpio.output(35, False) gpio.output(15, False) gpio.cleanup() sleep(.5) Moderator nilamo: Please use code tags in the future, it makes reading code much easier.
RE: Help with gyro code - nilamo - Mar-27-2017 Is the gyro value always an int? I think you might not get the output you're looking for if it's a float... >>> L = range(76, 125) >>> 78.3 in L FalseAlso, you could make your life much easier if you used functions, so you didn't list all of the pins for each possible if block. And using labels instead of the actual pin number could make it easier to look at. Something like: # i'm guessing for labels, and I'm assuming there's more of a difference that just where the led is plugged in pin_map = { "red": 16, "blue": 18, "green": 22, #etc } def enable_pin(pin): for key, val in pin_map.items(): enabled = key == pin: gpio.output(val, enabled) while True: gyro_data = sensor.get_gyro_data() y = gyro_data["y"] if y in L: enable_pin("red") if y in M: enable_pin("green") |