Skip to content

Commit 3364532

Browse files
committed
IMU reset intuition fixes, RGB LED only on new board
1 parent ac0ce60 commit 3364532

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

XRPLib/board.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from machine import Pin, ADC, Timer
22
from neopixel import NeoPixel
33
import time
4+
import sys
45

56
class Board:
67

@@ -30,7 +31,9 @@ def __init__(self, vin_pin:int, button_pin:int):
3031
self.button = Pin(button_pin, Pin.IN, Pin.PULL_UP)
3132

3233
self.led = Pin("LED", Pin.OUT)
33-
self.rgb_led = NeoPixel(Pin("RGB_LED", Pin.OUT), 1)
34+
35+
if "RP2350" in sys.implementation._machine:
36+
self.rgb_led = NeoPixel(Pin("RGB_LED", Pin.OUT), 1)
3437
# A timer ID of -1 is a virtual timer.
3538
# Leaves the hardware timers for more important uses
3639
self._virt_timer = Timer(-1)
@@ -106,5 +109,8 @@ def led_blink(self, frequency: int=0):
106109
self.is_led_blinking = False
107110

108111
def set_rgb_led(self, r:int, g:int, b:int):
109-
self.rgb_led[0] = (r, g, b)
110-
self.rgb_led.write()
112+
if "rgb_led" in self.__dict__:
113+
self.rgb_led[0] = (r, g, b)
114+
self.rgb_led.write()
115+
else:
116+
raise Exception("No RGB LED found for this board")

XRPLib/imu.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,10 @@ def __init__(self, scl_pin: int, sda_pin: int, addr):
6161
pass
6262

6363
# Reset sensor to clear any previous configuration
64+
# reset() also sets the board to the default config
6465
self.reset()
6566

67+
def _default_config(self):
6668
# Enable block data update
6769
self._set_bdu()
6870

@@ -186,10 +188,17 @@ def reset(self, wait_for_reset = True, wait_timeout_ms = 100):
186188
# Check if register has returned to default value (0x04)
187189
self.reg_ctrl3_c_byte[0] = self._getreg(LSM_REG_CTRL3_C)
188190
if self.reg_ctrl3_c_byte[0] == 0x04:
191+
self._default_config()
192+
self._start_timer()
189193
return True
190194
# Timeout occurred
195+
# Attempt to set default config anyways
196+
self._default_config()
197+
self._start_timer()
191198
return False
192199
else:
200+
self._default_config()
201+
self._start_timer()
193202
return True
194203

195204
def get_acc_x(self):

0 commit comments

Comments
 (0)