示例#1
0
    def __init__(self):
        self.subscriber = rospy.Subscriber('kamigami_cmd', KamigamiCommandMsg,
                                           self.send_cmd)
        self.publisher = rospy.Publisher('imu/data_raw', Imu, queue_size=10)
        self.accelerometer_data = []
        i2c = busio.I2C(board.SCL, board.SDA)
        self.sensor = LSM6DS33(i2c)

        self.motor_standby = DigitalOutputDevice(17)
        self.motor_right_pwm = PWMOutputDevice(13)
        self.motor_left_pwm = PWMOutputDevice(18)
        self.motor_right_forward = DigitalOutputDevice(27)
        self.motor_right_backward = DigitalOutputDevice(22)
        self.motor_left_forward = DigitalOutputDevice(24)
        self.motor_left_backward = DigitalOutputDevice(23)
        self.pins_on()

        self.deg_to_rad = (math.pi / 180)

        # self.motor_left = Motor(12, 18)
        # self.motor_right = Motor(13, 19)
        rospy.on_shutdown(self.shutdown)
import time
import board
import busio

# pylint:disable=no-member,unused-import
from adafruit_lsm6ds import LSM6DS33, LSM6DSOX, ISM330DHCX, Rate, AccelRange, GyroRange

i2c = busio.I2C(board.SCL, board.SDA)

sensor = LSM6DS33(i2c)
# sensor = LSM6DSOX(i2c)
# sensor = ISM330DHCX(i2c)

sensor.accelerometer_range = AccelRange.RANGE_8G
print("Accelerometer range set to: %d G" %
      AccelRange.string[sensor.accelerometer_range])

sensor.gyro_range = GyroRange.RANGE_2000_DPS
print("Gyro range set to: %d DPS" % GyroRange.string[sensor.gyro_range])

sensor.accelerometer_data_rate = Rate.RATE_1_66K_HZ
# sensor.accelerometer_data_rate = Rate.RATE_12_5_HZ
print("Accelerometer rate set to: %d HZ" %
      Rate.string[sensor.accelerometer_data_rate])

sensor.gyro_data_rate = Rate.RATE_1_66K_HZ
print("Gyro rate set to: %d HZ" % Rate.string[sensor.gyro_data_rate])

while True:
    print(
        "Accel X:%.2f Y:%.2f Z:%.2f ms^2 Gyro X:%.2f Y:%.2f Z:%.2f radians/s" %
示例#3
0
import busio
from adafruit_lsm6ds import LSM6DS33, AccelRange, GyroRange
import adafruit_lps2x
import adafruit_lis3mdl
from math import pi

rad2deg = 180 / pi
thumb = False
bag = BagIt(Pickle)
hz = 20
# rate = Rate(hz)

i2c = busio.I2C(board.SCL, board.SDA, 100000)

# 'RANGE_1000_DPS', 'RANGE_125_DPS', 'RANGE_2000_DPS', 'RANGE_250_DPS', 'RANGE_4000_DPS', 'RANGE_500_DPS'
imu = LSM6DS33(i2c)
imu.accelerometer_range = AccelRange.RANGE_2G  # pylint: disable=no-member
imu.gyro_range = GyroRange.RANGE_1000_DPS

lps = adafruit_lps2x.LPS22(i2c)
lis = adafruit_lis3mdl.LIS3MDL(i2c)  # 155 Hz, 4 gauss, continuous
lis.data_rate = adafruit_lis3mdl.Rate.RATE_560_HZ

start = time.monotonic()
last = start
cnt = 0
m, p, t = 0, 0, 0

try:
    while True:
        # ts = time.time()
示例#4
0
import time
import board
import busio
from adafruit_lsm6ds import LSM6DS33

i2c=busio.I2C(board.SCL, board.SDA)

# IMU
lsm6=LSM6DS33(i2c)

while True:
      print("Acceleration: X:%.2f, Y:%.2f, Z:%.2f m/s^2"%(lsm6.acceleration))
      print("Gyro: X:%.2f, Y:%.2f, Z:%.2f degrees/s"%(lsm6.gyro))
      time.sleep(0.5)
示例#5
0
# Enable Water Temperature sensor
GPIO.output(27, GPIO.HIGH)  # Set GPIO 27 to HIGH to enable SCL
GPIO.output(22, GPIO.HIGH)  # Set GPIO 22 to HIGH to enable SDA
sleep(0.5)
waterSensor = tsys01.TSYS01()  # Make new object for water thermometer
waterSensor.init()  # Initialize water thermometer
sleep(0.5)
# Disable Water Temperature Sensor communication
GPIO.output(27, GPIO.LOW)
GPIO.output(22, GPIO.LOW)

# Use Pi I2C
i2c = busio.I2C(board.SCL, board.SDA)

# Create an IMU I2C connection
sensor_IMU = LSM6DS33(i2c)

# Create an ADC I2C connection
#sensor_ADC = ADS.ADS1015(i2c) #  Uncomment if using the ADS1015 ADC
#sensor_ADC = ADS.ADS1115(i2c) #  Uncomment if using the ADS1115 ADC

# Create channel for ADC. here ADS.P0 is A0 on the ADS
#adc_chan = AnalogIn(ads, ADS.P0) #  Uncomment if adding either ADC

# Sets file up for logging Sensors (not IMU)
# -- Latitude, Longitude -> degrees
# -- Temperatures -> Degrees Centigrade
# -- Time -> 24hr clock
# -- Date -> MM/DD/YYYY
data_File = open("/media/GPS_Temp.csv", "a")
if os.stat("/media/GPS_Temp.csv").st_size == 0:
示例#6
0
gegg_sprite = displayio.TileGrid(gegg_bmp,
                                 pixel_shader=displayio.ColorConverter())
splash.append(gegg_sprite)

# Draw a label
text_group = displayio.Group(max_size=1, scale=2, x=10, y=220)
text = "Current & Max Acceleration"
text_area = label.Label(terminalio.FONT, text=text, color=0x0000FF)
text_group.append(text_area) # Subgroup for text scaling
splash.append(text_group)

# display everything so far
board.DISPLAY.show(splash)

# connect to the accelerometer
sensor = LSM6DS33(board.I2C())
# highest range for impacts!
sensor.accelerometer_range = AccelRange.RANGE_16G
# we'll read at about 1KHz
sensor.accelerometer_rate = Rate.RATE_1_66K_HZ
# Instead of raw accelerometer data, we'll read the *change* in acceleration (shock)
sensor.high_pass_filter = AccelHPF.SLOPE
sensor.high_pass_filter_enabled = True

# and make a lil buzzer
buzzer = pulseio.PWMOut(board.SPEAKER, variable_frequency=True)
buzzer.frequency = 1000

max_slope = 0
egg_ok = True
while True: