40
40
41
41
from micropython import const
42
42
43
+ try :
44
+ from typing import Optional
45
+ from typing_extensions import Literal
46
+ from busio import I2C , SPI
47
+ except ImportError :
48
+ pass
49
+
50
+
43
51
__version__ = "0.0.0+auto.0"
44
52
__repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_LIS3DH.git"
45
53
@@ -93,7 +101,11 @@ class LIS3DH:
93
101
the LIS3DH INT2 interrupt pin
94
102
"""
95
103
96
- def __init__ (self , int1 = None , int2 = None ):
104
+ def __init__ (
105
+ self ,
106
+ int1 : Optional [digitalio .DigitalInOut ] = None ,
107
+ int2 : Optional [digitalio .DigitalInOut ] = None ,
108
+ ) -> None :
97
109
# Check device ID.
98
110
device_id = self ._read_register_byte (_REG_WHOAMI )
99
111
if device_id != 0x33 :
@@ -120,7 +132,9 @@ def __init__(self, int1=None, int2=None):
120
132
self ._int1 .pull = digitalio .Pull .UP
121
133
122
134
@property
123
- def data_rate (self ):
135
+ def data_rate (
136
+ self ,
137
+ ) -> int :
124
138
"""The data rate of the accelerometer.
125
139
126
140
Could have the following values:
@@ -141,14 +155,17 @@ def data_rate(self):
141
155
return (ctl1 >> 4 ) & 0x0F
142
156
143
157
@data_rate .setter
144
- def data_rate (self , rate ):
158
+ def data_rate (
159
+ self ,
160
+ rate : int ,
161
+ ):
145
162
ctl1 = self ._read_register_byte (_REG_CTRL1 )
146
163
ctl1 &= ~ (0xF0 )
147
164
ctl1 |= rate << 4
148
165
self ._write_register_byte (_REG_CTRL1 , ctl1 )
149
166
150
167
@property
151
- def range (self ):
168
+ def range (self ) -> Literal [ RANGE_2_G , RANGE_4_G , RANGE_8_G , RANGE_16_G ] :
152
169
"""The range of the accelerometer.
153
170
154
171
Could have the following values:
@@ -163,14 +180,14 @@ def range(self):
163
180
return (ctl4 >> 4 ) & 0x03
164
181
165
182
@range .setter
166
- def range (self , range_value ):
183
+ def range (self , range_value : Literal [ RANGE_2_G , RANGE_4_G , RANGE_8_G , RANGE_16_G ] ):
167
184
ctl4 = self ._read_register_byte (_REG_CTRL4 )
168
185
ctl4 &= ~ 0x30
169
186
ctl4 |= range_value << 4
170
187
self ._write_register_byte (_REG_CTRL4 , ctl4 )
171
188
172
189
@property
173
- def acceleration (self ):
190
+ def acceleration (self ) -> AccelerationTuple :
174
191
"""The x, y, z acceleration values returned
175
192
in a 3-tuple and are in :math:`m / s ^ 2`"""
176
193
divider = 1
@@ -193,7 +210,9 @@ def acceleration(self):
193
210
194
211
return AccelerationTuple (x , y , z )
195
212
196
- def shake (self , shake_threshold = 30 , avg_count = 10 , total_delay = 0.1 ):
213
+ def shake (
214
+ self , shake_threshold : int = 30 , avg_count : int = 10 , total_delay : float = 0.1
215
+ ) -> bool :
197
216
"""Detect when the accelerometer is shaken. Optional parameters:
198
217
199
218
:param int shake_threshold: Increase or decrease to change shake sensitivity.
@@ -226,7 +245,7 @@ def shake(self, shake_threshold=30, avg_count=10, total_delay=0.1):
226
245
total_accel = math .sqrt (sum (map (lambda x : x * x , avg )))
227
246
return total_accel > shake_threshold
228
247
229
- def read_adc_raw (self , adc ) :
248
+ def read_adc_raw (self , adc : Literal [ 1 , 2 , 3 ]) -> int :
230
249
"""Retrieve the raw analog to digital converter value. ADC must be a
231
250
value 1, 2, or 3.
232
251
"""
@@ -237,7 +256,8 @@ def read_adc_raw(self, adc):
237
256
"<h" , self ._read_register ((_REG_OUTADC1_L + ((adc - 1 ) * 2 )) | 0x80 , 2 )[0 :2 ]
238
257
)[0 ]
239
258
240
- def read_adc_mV (self , adc ): # pylint: disable=invalid-name
259
+ # pylint: disable=invalid-name
260
+ def read_adc_mV (self , adc : Literal [1 , 2 , 3 ]) -> float :
241
261
"""Read the specified analog to digital converter value in millivolts.
242
262
ADC must be a value 1, 2, or 3. NOTE the ADC can only measure voltages
243
263
in the range of ~900-1200mV!
@@ -256,7 +276,7 @@ def read_adc_mV(self, adc): # pylint: disable=invalid-name
256
276
return 1800 + (raw + 32512 ) * (- 900 / 65024 )
257
277
258
278
@property
259
- def tapped (self ):
279
+ def tapped (self ) -> int :
260
280
"""
261
281
True if a tap was detected recently. Whether its a single tap or double tap is
262
282
determined by the tap param on :attr:`set_tap`. :attr:`tapped` may be True over
@@ -284,14 +304,14 @@ def tapped(self):
284
304
285
305
def set_tap (
286
306
self ,
287
- tap ,
288
- threshold ,
307
+ tap : Literal [ 0 , 1 , 2 ] ,
308
+ threshold : int ,
289
309
* ,
290
- time_limit = 10 ,
291
- time_latency = 20 ,
292
- time_window = 255 ,
293
- click_cfg = None
294
- ):
310
+ time_limit : int = 10 ,
311
+ time_latency : int = 20 ,
312
+ time_window : int = 255 ,
313
+ click_cfg : Optional [ int ] = None
314
+ ) -> None :
295
315
"""
296
316
The tap detection parameters.
297
317
@@ -338,17 +358,17 @@ def set_tap(
338
358
self ._write_register_byte (_REG_TIMELATENCY , time_latency )
339
359
self ._write_register_byte (_REG_TIMEWINDOW , time_window )
340
360
341
- def _read_register_byte (self , register ) :
361
+ def _read_register_byte (self , register : int ) -> int :
342
362
# Read a byte register value and return it.
343
363
return self ._read_register (register , 1 )[0 ]
344
364
345
- def _read_register (self , register , length ) :
365
+ def _read_register (self , register : int , length : int ) -> None :
346
366
# Read an arbitrarily long register (specified by length number of
347
367
# bytes) and return a bytearray of the retrieved data.
348
368
# Subclasses MUST implement this!
349
369
raise NotImplementedError
350
370
351
- def _write_register_byte (self , register , value ) :
371
+ def _write_register_byte (self , register : int , value : int ) -> None :
352
372
# Write a single byte register at the specified register address.
353
373
# Subclasses MUST implement this!
354
374
raise NotImplementedError
@@ -387,7 +407,14 @@ class LIS3DH_I2C(LIS3DH):
387
407
388
408
"""
389
409
390
- def __init__ (self , i2c , * , address = 0x18 , int1 = None , int2 = None ):
410
+ def __init__ (
411
+ self ,
412
+ i2c : I2C ,
413
+ * ,
414
+ address : int = 0x18 ,
415
+ int1 : Optional [digitalio .DigitalInOut ] = None ,
416
+ int2 : Optional [digitalio .DigitalInOut ] = None
417
+ ) -> None :
391
418
from adafruit_bus_device import ( # pylint: disable=import-outside-toplevel
392
419
i2c_device ,
393
420
)
@@ -396,14 +423,14 @@ def __init__(self, i2c, *, address=0x18, int1=None, int2=None):
396
423
self ._buffer = bytearray (6 )
397
424
super ().__init__ (int1 = int1 , int2 = int2 )
398
425
399
- def _read_register (self , register , length ) :
426
+ def _read_register (self , register : int , length : int ) -> bytearray :
400
427
self ._buffer [0 ] = register & 0xFF
401
428
with self ._i2c as i2c :
402
429
i2c .write (self ._buffer , start = 0 , end = 1 )
403
430
i2c .readinto (self ._buffer , start = 0 , end = length )
404
431
return self ._buffer
405
432
406
- def _write_register_byte (self , register , value ) :
433
+ def _write_register_byte (self , register : int , value : int ) -> None :
407
434
self ._buffer [0 ] = register & 0xFF
408
435
self ._buffer [1 ] = value & 0xFF
409
436
with self ._i2c as i2c :
@@ -442,7 +469,15 @@ class LIS3DH_SPI(LIS3DH):
442
469
443
470
"""
444
471
445
- def __init__ (self , spi , cs , * , baudrate = 100000 , int1 = None , int2 = None ):
472
+ def __init__ (
473
+ self ,
474
+ spi : SPI ,
475
+ cs : digitalio .DigitalInOut ,
476
+ * ,
477
+ baudrate : int = 100000 ,
478
+ int1 : Optional [digitalio .DigitalInOut ] = None ,
479
+ int2 : Optional [digitalio .DigitalInOut ] = None
480
+ ) -> None :
446
481
from adafruit_bus_device import ( # pylint: disable=import-outside-toplevel
447
482
spi_device ,
448
483
)
@@ -451,7 +486,7 @@ def __init__(self, spi, cs, *, baudrate=100000, int1=None, int2=None):
451
486
self ._buffer = bytearray (6 )
452
487
super ().__init__ (int1 = int1 , int2 = int2 )
453
488
454
- def _read_register (self , register , length ) :
489
+ def _read_register (self , register : int , length : int ) -> bytearray :
455
490
if length == 1 :
456
491
self ._buffer [0 ] = (register | 0x80 ) & 0xFF # Read single, bit 7 high.
457
492
else :
@@ -461,7 +496,7 @@ def _read_register(self, register, length):
461
496
spi .readinto (self ._buffer , start = 0 , end = length ) # pylint: disable=no-member
462
497
return self ._buffer
463
498
464
- def _write_register_byte (self , register , value ) :
499
+ def _write_register_byte (self , register : int , value : int ) -> None :
465
500
self ._buffer [0 ] = register & 0x7F # Write, bit 7 low.
466
501
self ._buffer [1 ] = value & 0xFF
467
502
with self ._spi as spi :
0 commit comments