Skip to content

Commit 08b0551

Browse files
committed
up
1 parent 9f4e728 commit 08b0551

File tree

1 file changed

+47
-36
lines changed

1 file changed

+47
-36
lines changed

port/boards/mpython/modules/mpython.py

Lines changed: 47 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -674,7 +674,8 @@ def __init__(self):
674674
time.sleep_ms(100)
675675
self._writeReg(0x1A, 255)
676676
self._writeReg(0x1B, 0b10100001)
677-
self._writeReg(0x1C, 0b00000011)
677+
# self._writeReg(0x1C, 0b00000011)
678+
self._writeReg(0x1C, 0b00000000)
678679
self._writeReg(0x1D, 0b10010000)
679680
time.sleep_ms(100)
680681

@@ -760,37 +761,40 @@ def _get_raw(self):
760761
retry = 0
761762
if (retry < 5):
762763
try:
763-
_raw_x = 0
764-
_raw_y = 0
765-
_raw_z = 0
764+
_raw_x = 0.0
765+
_raw_y = 0.0
766+
_raw_z = 0.0
767+
768+
# self.i2c.writeto(self.addr, b'\x1B\x08', True) #set
769+
# self.i2c.writeto(self.addr, b'\x1B\x01', True)
770+
771+
# while True:
772+
# buf = self._readReg(0x18, 1)
773+
# status = buf[0]
774+
# if(status & 0x40):
775+
# break
776+
777+
# _buf = self._readReg(0x00, 9)
778+
779+
self.i2c.writeto(self.addr, b'\x1B\x08', True) #set
780+
# self.i2c.writeto(self.addr, b'\x1B\x80', True)
781+
self.i2c.writeto(self.addr, b'\x1B\x01', True)
782+
766783
while True:
767-
self._writeReg(0x1B,0b10100001)
768-
time.sleep_ms(10)
784+
sleep_ms(25)
769785
buf = self._readReg(0x18, 1)
770786
status = buf[0]
771-
# print('status:',status)
772787
if(status & 0x40):
773788
break
774-
# self.i2c.writeto(self.addr, b'\x00', False)
775-
# buf = self.i2c.readfrom(self.addr, 9)
789+
776790
buf = self._readReg(0x00, 9)
777791

778-
_raw_x |= buf[0] << 12
779-
_raw_x |= buf[1] << 4
780-
# _raw_x |= buf[6] << 0
781-
_raw_x |= buf[6] >> 4
782-
self.raw_x = _raw_x
792+
_raw_x = (buf[0] << 12) | (buf[1] << 4) | (buf[6] >> 4)
793+
_raw_y = (buf[2] << 12) | (buf[3] << 4) | (buf[7] >> 4)
794+
_raw_z = (buf[4] << 12) | (buf[5] << 4) | (buf[8] >> 4)
783795

784-
_raw_y |= buf[2] << 12
785-
_raw_y |= buf[3] << 4
786-
# _raw_y |= buf[7] << 0
787-
_raw_y |= buf[7] >> 4
796+
self.raw_x = _raw_x
788797
self.raw_y = _raw_y
789-
790-
_raw_z |= buf[4] << 12
791-
_raw_z |= buf[5] << 4
792-
# _raw_z |= buf[8] << 0
793-
_raw_z |= buf[8] >> 4
794798
self.raw_z = _raw_z
795799
except:
796800
retry = retry + 1
@@ -819,29 +823,35 @@ def get_x(self):
819823
return self.raw_x * 0.25
820824
if (self.chip == 2):
821825
self._get_raw()
822-
# return -0.0625 * (self.raw_x - 524288)
823-
# return -0.0625 * (self.raw_x - self.cali_offset_x - 524288)
824-
return -(self.raw_x - 524288)/16384
826+
if(self.cali_offset_x):
827+
return -0.0625 * (self.raw_x - self.cali_offset_x)
828+
else:
829+
return -0.0625 * (self.raw_x - 524288)
830+
# return -(self.raw_x - 524288)/16384
825831

826832
def get_y(self):
827833
if (self.chip == 1):
828834
self._get_raw()
829835
return self.raw_y * 0.25
830836
if (self.chip == 2):
831837
self._get_raw()
832-
# return -0.0625 * (self.raw_y - self.cali_offset_y - 524288)
833-
# return -0.0625 * (self.raw_y - 524288)
834-
return -(self.raw_y - 524288)/16384
838+
if(self.cali_offset_y):
839+
return -0.0625 * (self.raw_y - self.cali_offset_y)
840+
else:
841+
return -0.0625 * (self.raw_y - 524288)
842+
# return -(self.raw_y - 524288)/16384
835843

836844
def get_z(self):
837845
if (self.chip == 1):
838846
self._get_raw()
839847
return self.raw_z * 0.25
840848
if (self.chip == 2):
841849
self._get_raw()
842-
# return 0.0625 * (self.raw_z - 524288)
843-
# return 0.0625 * (self.raw_z - self.cali_offset_z - 524288)
844-
return (self.raw_z - 524288)/16384
850+
if(self.cali_offset_z):
851+
return 0.0625 * (self.raw_z - self.cali_offset_z)
852+
else:
853+
return 0.0625 * (self.raw_z - 524288)
854+
# return (self.raw_z - 524288)/16384
845855

846856
def get_field_strength(self):
847857
if(self.chip==1):
@@ -852,7 +862,7 @@ def get_field_strength(self):
852862
elif(self.chip==2):
853863
self._get_raw()
854864
if self.is_peeling == 1:
855-
return (math.sqrt(math.pow(self.raw_x - self.peeling_x -524288, 2) + pow(self.raw_y - self.peeling_y -524288, 2) + pow(self.raw_z - self.peeling_z -524288, 2)))*0.0625
865+
return (math.sqrt(math.pow(self.raw_x - self.peeling_x, 2) + pow(self.raw_y - self.peeling_y, 2) + pow(self.raw_z - self.peeling_z , 2)))*0.0625
856866
return (math.sqrt(math.pow(self.get_x(), 2) + pow(self.get_y(), 2) + pow(self.get_z(), 2)))
857867

858868
def calibrate(self):
@@ -909,10 +919,11 @@ def get_heading(self):
909919
else:
910920
if(self.cali_offset_x):
911921
self._get_raw()
912-
temp_x = self.raw_x - self.cali_offset_x
913-
temp_y = self.raw_y - self.cali_offset_y
922+
temp_x = -(self.raw_x - self.cali_offset_x)
923+
temp_y = -(self.raw_y - self.cali_offset_y)
914924
heading = math.atan2(temp_y, -temp_x) * (180 / 3.14159265) + 180 + 3
915-
heading = math.atan2(self.get_y(), -self.get_x()) * (180 / 3.14159265) + 180 + 3
925+
else:
926+
heading = math.atan2(self.get_y(), -self.get_x()) * (180 / 3.14159265) + 180 + 3
916927
return heading
917928

918929
def _get_temperature(self):

0 commit comments

Comments
 (0)