]> Repositories - Adafruit_Blinka-hackapet.git/blob - test/src/testing/universal/i2c.py
0a3e478d58dddadc1e0dae3ea69f74928865d7ef
[Adafruit_Blinka-hackapet.git] / test / src / testing / universal / i2c.py
1 # SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
2 #
3 # SPDX-License-Identifier: MIT
4 import gc
5 from testing import yes_no
6
7 gc.collect()
8 from unittest import TestCase
9
10 gc.collect()
11 from testing.board.i2c import I2C
12
13 gc.collect()
14
15
16 class TestBME280Interactive(TestCase):
17     def test_read_value(self):
18
19         import board
20
21         gc.collect()
22         import adafruit_bme280
23
24         gc.collect()
25
26         if not (
27             yes_no("Is BME280 wired to SCL {} SDA {}".format(board.SCL, board.SDA))
28         ):
29             return  # test trivially passed
30
31         i2c = I2C(board.SCL, board.SDA)
32         bme280 = adafruit_bme280.Adafruit_BME280_I2C(i2c)
33         temperature = bme280.temperature
34         humidity = bme280.humidity
35         pressure = bme280.pressure
36         altitude = bme280.altitude
37         self.assertTrue(type(temperature) is float)
38         self.assertTrue(type(humidity) is float)
39         self.assertTrue(type(pressure) is float)
40         self.assertTrue(type(altitude) is float)
41
42         self.assertTrue(-50 <= temperature <= 50)
43         self.assertTrue(0 <= humidity <= 100)
44         self.assertTrue(900 <= pressure <= 1100)
45         self.assertTrue(-1000 <= altitude <= 9, 848)
46
47
48 class TestMMA8451Interactive(TestCase):
49     def test_read_value(self):
50         import math
51
52         gc.collect()
53         import board
54
55         gc.collect()
56
57         if not (
58             yes_no(
59                 "Is MMA8451 wired to SCL {} SDA {} and held still".format(
60                     board.SCL, board.SDA
61                 )
62             )
63         ):
64             return  # test trivially passed
65         # from https://github.com/adafruit/Adafruit_CircuitPython_MMA8451/blob/29e31a0bb836367bc73763b83513105252b7b264/examples/simpletest.py
66         import adafruit_mma8451
67
68         i2c = I2C(board.SCL, board.SDA)
69         sensor = adafruit_mma8451.MMA8451(i2c)
70
71         x, y, z = sensor.acceleration
72         absolute = math.sqrt(x**2 + y**2 + z**2)
73         self.assertTrue(9 <= absolute <= 11, "Not earth gravity")
74
75         orientation = sensor.orientation
76         self.assertTrue(
77             orientation
78             in (
79                 adafruit_mma8451.PL_PUF,
80                 adafruit_mma8451.PL_PUB,
81                 adafruit_mma8451.PL_PDF,
82                 adafruit_mma8451.PL_PDB,
83                 adafruit_mma8451.PL_LRF,
84                 adafruit_mma8451.PL_LRB,
85                 adafruit_mma8451.PL_LLF,
86                 adafruit_mma8451.PL_LLB,
87             )
88         )
89
90
91 class TestBNO055Interactive(TestCase):
92     def test_read_value(self):
93         """
94         Access all sensor values as per
95         https://github.com/adafruit/Adafruit_CircuitPython_BNO055/blob/bdf6ada21e7552c242bc470d4d2619b480b4c574/examples/values.py
96         Note I have not successfully run this test. Possibly a hardware issue with module I have.
97         See https://forums.adafruit.com/viewtopic.php?f=60&t=131665
98         """
99         import board
100
101         gc.collect()
102         import adafruit_bno055
103
104         gc.collect()
105         i2c = I2C(board.SCL, board.SDA)
106         sensor = adafruit_bno055.BNO055(i2c)
107
108         self.assertTrue(9 <= sensor.gravity <= 11)
109         self.assertTrue(sensor.temperature != 0)
110         self.assertTrue(sensor.acceleration != (0, 0, 0))
111         self.assertTrue(sensor.magnetometer != (0, 0, 0))
112         self.assertTrue(sensor.gyroscope != (0, 0, 0))
113         self.assertTrue(sensor.quaternion != (0, 0, 0, 0))
114         sensor.euler
115         sensor.linear_acceleration