示例#1
0
文件: gy80.py 项目: T0T4R4/longsight
    def __init__(self, bus=None):
        if bus is None:
            bus = smbus.SMBus(i2c_raspberry_pi_bus_number())

        #Default ADXL345 range +/- 2g is ideal for telescope use
        self.accel = ADXL345(bus, 0x53, name="accel")
        self.gyro = L3G4200D(bus, 0x69, name="gyro")
        self.compass = HMC5883L(bus, 0x1e, name="compass")
        self.barometer = BMP085(bus, 0x77, name="barometer")

        self._last_gyro_time = 0 #needed for interpreting gyro
        self.read_gyro_delta() #Discard first reading
        q_start = self.current_orientation_quaternion_mag_acc_only()
        self._q_start = q_start
        self._current_hybrid_orientation_q = q_start
        self._current_gyro_only_q = q_start
示例#2
0
    def __init__(self, bus=None):
        if bus is None:
            bus = smbus.SMBus(i2c_raspberry_pi_bus_number())

        #Default ADXL345 range +/- 2g is ideal for telescope use
        self.accel = ADXL345(bus, 0x53, name="accel")
        self.gyro = L3G4200D(bus, 0x69, name="gyro")
        self.compass = HMC5883L(bus, 0x1e, name="compass")
        self.barometer = BMP085(bus, 0x77, name="barometer")

        self._last_gyro_time = 0  #needed for interpreting gyro
        self.read_gyro_delta()  #Discard first reading
        q_start = self.current_orientation_quaternion_mag_acc_only()
        self._q_start = q_start
        self._current_hybrid_orientation_q = q_start
        self._current_gyro_only_q = q_start
示例#3
0
文件: server.py 项目: hajix/GY80
#!/usr/bin/env python

import web
import smbus
import imu
from i2cutils import i2c_raspberry_pi_bus_number
import math
urls = (
    '/', 'index'
)

bus = smbus.SMBus(i2c_raspberry_pi_bus_number())

imu_controller = imu.IMU(bus, 0x69, 0x53, 0x1e, "IMU")

imu_controller.set_compass_offsets(9, -10, -140)

app = web.application(urls, globals())


class index:
    def GET(self):
        (pitch, roll, yaw) = imu_controller.read_pitch_roll_yaw()
        #result = "%.2f %.2f %.2f" % (-1 * pitch, -1 * roll, yaw -  math.pi / 2)
        result = str(-1 * pitch) + ' ' + str(-1 * roll) + ' ' + str(yaw - math.pi / 2)
        print(result)
        return result

if __name__ == "__main__":
    app.run()
示例#4
0
    def read_scaled_accel_y(self):
        '''Return the SCALED Y accelerometer value'''
        return self.accel_scaled_y

    def read_scaled_accel_z(self):
        '''Return the SCALED Z accelerometer value'''
        return self.accel_scaled_z

    def read_pitch(self):
        '''Calculate the current pitch value in radians'''
        x = self.read_scaled_accel_x()
        y = self.read_scaled_accel_y()
        z = self.read_scaled_accel_z()
        return self.read_x_rotation(x, y, z)

    def read_roll(self):
        '''Calculate the current roll value in radians'''
        x = self.read_scaled_accel_x()
        y = self.read_scaled_accel_y()
        z = self.read_scaled_accel_z()
        return self.read_y_rotation(x, y, z)


if __name__ == "__main__":
    bus = smbus.SMBus(I2CUtils.i2c_raspberry_pi_bus_number())
    adxl345 = ADXL345(bus, 0x53, "accel")
    adxl345.read_raw_data()
    print(adxl345.read_scaled_accel_x())
    print(adxl345.read_scaled_accel_y())
    print(adxl345.read_scaled_accel_z())
示例#5
0
文件: bmp085.py 项目: hajix/GY80
        b4 = ac4 * (x3 + 32768) >> 15
        b7 = (pressure_raw - b3) * (50000 >> oss)
        if (b7 < 0x80000000):
            p = (b7 * 2) / b4
        else:
            p = (b7 / b4) * 2
        x1 = (p >> 8) * (p >> 8)
        x1 = (x1 * 3038) >> 16
        x2 = (-7357 * p) >> 16
        p = p + ((x1 + x2 + 3791) >> 4)
        return(t / 10., p / 100.)

    def read_pressure(self):
        (temperature, pressure) = self.calculate()
        return pressure

    def read_temperature(self):
        (temperature, pressure) = self.calculate()
        return temperature

    def read_temperature_and_pressure(self):
        return self.calculate()

if __name__ == "__main__":
    bus = smbus.SMBus(I2CUtils.i2c_raspberry_pi_bus_number())
    bmp085 = BMP085(bus, 0x77 , "BMP085")
    print bmp085.read_temperature_and_pressure()



示例#6
0
import smbus
import time
import math

# Local import
from i2cutils import i2c_raspberry_pi_bus_number

bus = smbus.SMBus(i2c_raspberry_pi_bus_number())
address = 0x5c


def read_byte(adr):
    return bus.read_byte_data(address, adr)


def read_word(adr):
    high = bus.read_byte_data(address, adr)
    low = bus.read_byte_data(address, adr + 1)
    val = (high << 8) + low
    return val


def read_word_2c(adr):
    val = read_word(adr)
    if (val >= 0x8000):
        return -((65535 - val) + 1)
    else:
        return val


def write_byte(adr, value):