2016-04-14 4 views
-1
#!/usr/bin/env python 

# i2c_ADXL345.py este es el accelerómetro de 3 ejes 
# 2015-04-01 
# Public Domain 

import time 
import struct 
import sys 

import pigpio # http://abyz.co.uk/rpi/pigpio/python.html 

if sys.version > '3': 
    buffer = memoryview 

BUS=0 

ADXL345_I2C_ADDR=0x53 

#RUNTIME=60.0 This is the original line. 
#RUNTIME=0.10/This was the new line 

pi=pigpio.pi() # open local Pi 

h = pi.i2c_open(BUS, ADXL345_I2C_ADDR) 

if h >= 0: # Connected OK? 

    # Initialise ADXL345. 
    pi.i2c_write_byte_data(h, 0x2d, 0) # POWER_CTL reset. 
    pi.i2c_write_byte_data(h, 0x2d, 8) # POWER_CTL measure. 
    pi.i2c_write_byte_data(h, 0x31, 0) # DATA_FORMAT reset. 
    pi.i2c_write_byte_data(h, 0x31, 11) # DATA_FORMAT full res +/- 16g. 

    read = 0 

# start_time = time.time() ?part of the RUNTIME? 

# while (time.time()-start_time) < RUNTIME: ?part of the RUNTIME? 

     # 0x32 = X LSB, 0x33 = X MSB 
     # 0x34 = Y LSB, 0x35 = Y MSB 
     # 0x36 = Z LSB, 0x37 = Z MSB 

     # < = little endian 

(s, b) = pi.i2c_read_i2c_block_data(h, 0x32, 6) 

if s >= 0: 
     (x, y, z) = struct.unpack('<3h', buffer(b)) 
     print("{} {} {}".format(x, y, z)) 
     read += 1 

pi.i2c_close(h) 

pi.stop() 

print() 

Der obige Code erzeugtWie bekomme ich dieses Programm nur als Ausgabe produzieren: 265 für die Variable?

265 -17 -34

als Ausgabe. Meine Frage ist, wie ändere ich den Code, so dass nur die "256" produziert wird? Wie lautet der Name der Variablen, die diesen Wert enthält? Dies scheinen ziemlich grundlegende Fragen zu sein, aber da ich kein Programmierer bin, versuche ich diesen Schritt nach dem anderen zu machen. Ich versuche, diesen Code zu "adaptieren", so dass ich ihn in Jay Doshers Code für den Sun-Standort ersetzen kann, aber da er eine andere IMU Joan von Raspberry Pi verwendet, hat er freundlicherweise den obigen Code zum Lesen unserer IMU zusammengestellt.

#!/usr/bin/env python 

# i2c_ADXL345.py this is the 3 axis accelerometer 
# 2015-04-01 
# Public Domain 
# Note - Don't forget to run pigpiod first 

import time 
import struct 
import sys 

import pigpio # http://abyz.co.uk/rpi/pigpio/python.html 

if sys.version > '3': 
    buffer = memoryview 

BUS=0 

ADXL345_I2C_ADDR=0x53 

#RUNTIME=60.0 This is the original line. 
#RUNTIME=0.10/This was the new line 

pi=pigpio.pi() # open local Pi 

h = pi.i2c_open(BUS, ADXL345_I2C_ADDR) 

if h >= 0: # Connected OK? 

    # Initialise ADXL345. 
    pi.i2c_write_byte_data(h, 0x2d, 0) # POWER_CTL reset. 
    pi.i2c_write_byte_data(h, 0x2d, 8) # POWER_CTL measure. 
    pi.i2c_write_byte_data(h, 0x31, 0) # DATA_FORMAT reset. 
    pi.i2c_write_byte_data(h, 0x31, 11) # DATA_FORMAT full res +/- 16g. 

    read = 0 

# start_time = time.time() ?part of the RUNTIME? 

# while (time.time()-start_time) < RUNTIME: ?part of the RUNTIME? 

     # 0x32 = X LSB, 0x33 = X MSB 
     # 0x34 = Y LSB, 0x35 = Y MSB 
     # 0x36 = Z LSB, 0x37 = Z MSB 

     # < = little endian 

(s, b) = pi.i2c_read_i2c_block_data(h, 0x32, 6) 

if s >= 0: 
     (x, y, z) = struct.unpack('<3h', buffer(b)) 
#   (x) = struct.unpack('<3h', buffer(b)) # Let's experiment again. 
#   print("{} {} {}".format(x, y, z)) 
     print("{}".format(x)) 

     read += 1 

pi.i2c_close(h) 

pi.stop() 

print() 

Dies ist der neue Code, der jetzt nur noch 254. Unsere verbleibende Frage produziert, ist: Wie lautet der Name der Variablen, die diesen Wert hat?

+0

Ich habe nie eine einzelne Zeile von Python-Code geschrieben, aber 'print (" {} {} {} ". Format (x, y, z)) sieht verdächtig aus. Ich würde versuchen, es in 'print (" {} ". Format (x))' zu ändern, um zu sehen, was passiert. – mah

+0

Das habe ich ausprobiert! Ich überprüfte das Skript und das war die letzte Zeile, die ich geändert hatte. Es produziert (264, -14, -33). Es erzeugt nicht nur die drei Achsen, sondern umschließt sie nun in Parathesis - lol. – frazelle09

+0

Oho! Ich habe gerade diese Zeile (x, y, z) = struct.unpack ('<3h', buffer (b)) in den unkommentierten (#) Zustand zurückversetzt und nun produziert das Skript nur noch die 264! Die einzige verbleibende Frage ist - Was ist der Name der Variablen, die diesen Wert hat? – frazelle09

Antwort

1

Der Name der Variablen ist in diesem Fall x, wie in (x, y, z) = struct.unpack('<3h', buffer(b)) definiert.

Verwandte Themen