From 344e0bd3b0aa174b05d869cc7ca0f7d54fc20947 Mon Sep 17 00:00:00 2001 From: Mark van Renswoude Date: Mon, 27 Jan 2020 19:34:08 +0100 Subject: [PATCH] Added error message for VL53L0X initialization Slightly updated the schematics --- doc/errors.md | 47 +++++ doc/pinout.md | 45 +++++ pcb/DeskControl-cache.lib | 103 +++++++++- pcb/DeskControl.bak | 284 ++++++++++++++++++-------- pcb/DeskControl.sch | 406 ++++++++++++++++++++++++-------------- platformio.ini | 28 ++- src/include/display.h | 1 + src/lib/debug.h | 17 ++ src/lib/vl53l0x.cpp | 17 +- src/lib/vl53l0x.h | 18 +- src/main.cpp | 60 ++++-- 11 files changed, 769 insertions(+), 257 deletions(-) create mode 100644 doc/errors.md create mode 100644 doc/pinout.md create mode 100644 src/lib/debug.h diff --git a/doc/errors.md b/doc/errors.md new file mode 100644 index 0000000..16ebd12 --- /dev/null +++ b/doc/errors.md @@ -0,0 +1,47 @@ + +# Error codes reference +During startup a number of error codes may be presented. This document serves as a reference for tracing the problem. + +### height sensor +Errors are logged as "code @ position". Code is the status code as returned by the VL53L0X API, and position determines which API call during initialization failed. Test + + +| Code | Constant | Description | +|--|--|--| +| -1 | VL53L0X_ERROR_CALIBRATION_WARNING | Warning invalid calibration data may be in used VL53L0X_InitData(), VL53L0X_GetOffsetCalibrationData, VL53L0X_SetOffsetCalibrationData | +| -2 | VL53L0X_ERROR_MIN_CLIPPED | Warning parameter passed was clipped to min before to be applied | +| -3 | VL53L0X_ERROR_UNDEFINED | Unqualified error | +| -4 | VL53L0X_ERROR_INVALID_PARAMS | Parameter passed is invalid or out of range | +| -5 | VL53L0X_ERROR_NOT_SUPPORTED | Function is not supported in current mode or configuration | +| -6 | VL53L0X_ERROR_RANGE_ERROR | Device report a ranging error interrupt status | +| -7 | VL53L0X_ERROR_TIME_OUT | Aborted due to time out | +| -8 | VL53L0X_ERROR_MODE_NOT_SUPPORTED | Asked mode is not supported by the device | +| -9 | VL53L0X_ERROR_BUFFER_TOO_SMALL | ... | +| -10 | VL53L0X_ERROR_GPIO_NOT_EXISTING | User tried to setup a non-existing GPIO pin | +| -11 | VL53L0X_ERROR_GPIO_FUNCTIONALITY_NOT_SUPPORTED | unsupported GPIO functionality | +| -12 | VL53L0X_ERROR_INTERRUPT_NOT_CLEARED | Error during interrupt clear | +| -20 | VL53L0X_ERROR_CONTROL_INTERFACE | error reported from IO functions | +| -30 | VL53L0X_ERROR_INVALID_COMMAND | The command is not allowed in the current device state (power down) | +| -40 | VL53L0X_ERROR_DIVISION_BY_ZERO | In the function a division by zero occurs | +| -50 | VL53L0X_ERROR_REF_SPAD_INIT | Error during reference SPAD initialization | +| -99 | VL53L0X_ERROR_NOT_IMPLEMENTED | + +
+ +| Position | Description | +|--|--| +| 1 | VL53L0X_DataInit | +| 2 | VL53L0X_SetDeviceAddress | +| 3 | VL53L0X_GetDeviceInfo | +| 4 | VL53L0X_StaticInit | +| 5 | VL53L0X_PerformRefSpadManagement | +| 6 | VL53L0X_PerformRefCalibration | +| 7 | VL53L0X_SetDeviceMode | +| 8 | VL53L0X_SetLimitCheckEnable(VL53L0X_CHECKENABLE_SIGMA_FINAL_RANGE) | +| 9 | VL53L0X_SetLimitCheckEnable(VL53L0X_CHECKENABLE_SIGNAL_RATE_FINAL_RANGE) | +| 10 | VL53L0X_SetLimitCheckEnable(VL53L0X_CHECKENABLE_RANGE_IGNORE_THRESHOLD) | +| 11 | VL53L0X_SetLimitCheckValue(VL53L0X_CHECKENABLE_RANGE_IGNORE_THRESHOLD) | + + +### timing budget +Errors are logged as an VL53L0X API code. See the table above for reference. \ No newline at end of file diff --git a/doc/pinout.md b/doc/pinout.md new file mode 100644 index 0000000..ebcf83e --- /dev/null +++ b/doc/pinout.md @@ -0,0 +1,45 @@ +## ST7789 LCD + +https://learn.adafruit.com/adafruit-1-3-and-1-54-240-x-240-wide-angle-tft-lcd-displays/pinouts + +| Identifier | Description | Arduino pin | ATMega328p pin | +|------------|----------------------------|-------------|----------------| +| MOSI | SPI master out - slave in | 11 | 15 - PB3 | +| SCLK | SPI clock | 13 | 17 - PB5 | +| CS | Chip select | N/C | N/C | +| RST | Reset | 9 | 13 - PB1 | +| DC | SPI data / command select | 8 | 12 - PB0 | +| BL | Backlight PWM | 7 | 11 - PD7 | + + +## Polulu G2 motor driver + +https://www.pololu.com/product/2995 + +| Identifier | Description | Arduino pin | ATMega328p pin | +|------------|----------------------------|-------------|----------------| +| PWM | Motor PWM | 14 | 23 - PC0 | +| DIR | Direction | 15 | 24 - PC1 | +| SLP | Sleep (active low) | 16 | 25 - PC2 | +| CS | Current sensing | 17 | 26 - PC3 | + +CS has a voltage of 50mV + 20mV per A. + + +## VL53L0X time-of-flight sensor + +https://learn.adafruit.com/adafruit-vl53l0x-micro-lidar-distance-sensor-breakout/pinouts + +| Identifier | Description | Arduino pin | ATMega328p pin | +|------------|----------------------------|-------------|----------------| +| SCL | I²C clock | 18 | 28 - PC5 | +| SDA | I²C data | 19 | 27 - PC4 | + + +## Buttons + +| Description | Arduino pin | ATMega328p pin | +|-------------|-------------|----------------| +| Up | 3 | 1 - PD3 | +| Menu | 5 | 9 - PD5 | +| Down | 6 | 10 - PD6 | diff --git a/pcb/DeskControl-cache.lib b/pcb/DeskControl-cache.lib index c415950..d21055a 100644 --- a/pcb/DeskControl-cache.lib +++ b/pcb/DeskControl-cache.lib @@ -1,6 +1,25 @@ EESchema-LIBRARY Version 2.4 #encoding utf-8 # +# Connector_Generic_Conn_01x02 +# +DEF Connector_Generic_Conn_01x02 J 0 40 Y N 1 F N +F0 "J" 0 100 50 H V C CNN +F1 "Connector_Generic_Conn_01x02" 0 -200 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + Connector*:*_1x??_* +$ENDFPLIST +DRAW +S -50 -95 0 -105 1 1 6 N +S -50 5 0 -5 1 1 6 N +S -50 50 50 -150 1 1 10 f +X Pin_1 1 -200 0 150 R 50 50 1 1 P +X Pin_2 2 -200 -100 150 R 50 50 1 1 P +ENDDRAW +ENDDEF +# # Connector_Generic_Conn_01x04 # DEF Connector_Generic_Conn_01x04 J 0 40 Y N 1 F N @@ -24,6 +43,66 @@ X Pin_4 4 -200 -200 150 R 50 50 1 1 P ENDDRAW ENDDEF # +# Connector_Generic_Conn_01x07 +# +DEF Connector_Generic_Conn_01x07 J 0 40 Y N 1 F N +F0 "J" 0 400 50 H V C CNN +F1 "Connector_Generic_Conn_01x07" 0 -400 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + Connector*:*_1x??_* +$ENDFPLIST +DRAW +S -50 -295 0 -305 1 1 6 N +S -50 -195 0 -205 1 1 6 N +S -50 -95 0 -105 1 1 6 N +S -50 5 0 -5 1 1 6 N +S -50 105 0 95 1 1 6 N +S -50 205 0 195 1 1 6 N +S -50 305 0 295 1 1 6 N +S -50 350 50 -350 1 1 10 f +X Pin_1 1 -200 300 150 R 50 50 1 1 P +X Pin_2 2 -200 200 150 R 50 50 1 1 P +X Pin_3 3 -200 100 150 R 50 50 1 1 P +X Pin_4 4 -200 0 150 R 50 50 1 1 P +X Pin_5 5 -200 -100 150 R 50 50 1 1 P +X Pin_6 6 -200 -200 150 R 50 50 1 1 P +X Pin_7 7 -200 -300 150 R 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Connector_Generic_Conn_01x08 +# +DEF Connector_Generic_Conn_01x08 J 0 40 Y N 1 F N +F0 "J" 0 400 50 H V C CNN +F1 "Connector_Generic_Conn_01x08" 0 -500 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + Connector*:*_1x??_* +$ENDFPLIST +DRAW +S -50 -395 0 -405 1 1 6 N +S -50 -295 0 -305 1 1 6 N +S -50 -195 0 -205 1 1 6 N +S -50 -95 0 -105 1 1 6 N +S -50 5 0 -5 1 1 6 N +S -50 105 0 95 1 1 6 N +S -50 205 0 195 1 1 6 N +S -50 305 0 295 1 1 6 N +S -50 350 50 -450 1 1 10 f +X Pin_1 1 -200 300 150 R 50 50 1 1 P +X Pin_2 2 -200 200 150 R 50 50 1 1 P +X Pin_3 3 -200 100 150 R 50 50 1 1 P +X Pin_4 4 -200 0 150 R 50 50 1 1 P +X Pin_5 5 -200 -100 150 R 50 50 1 1 P +X Pin_6 6 -200 -200 150 R 50 50 1 1 P +X Pin_7 7 -200 -300 150 R 50 50 1 1 P +X Pin_8 8 -200 -400 150 R 50 50 1 1 P +ENDDRAW +ENDDEF +# # Connector_Generic_Conn_02x03_Odd_Even # DEF Connector_Generic_Conn_02x03_Odd_Even J 0 40 Y N 1 F N @@ -172,18 +251,34 @@ X 2 2 200 0 100 L 50 50 0 1 P ENDDRAW ENDDEF # -# power_+5V +# power_+12V # -DEF power_+5V #PWR 0 0 Y Y 1 F P +DEF power_+12V #PWR 0 0 Y Y 1 F P F0 "#PWR" 0 -150 50 H I C CNN -F1 "power_+5V" 0 140 50 H V C CNN +F1 "power_+12V" 0 140 50 H V C CNN F2 "" 0 0 50 H I C CNN F3 "" 0 0 50 H I C CNN DRAW P 2 0 1 0 -30 50 0 100 N P 2 0 1 0 0 0 0 100 N P 2 0 1 0 0 100 30 50 N -X +5V 1 0 0 0 U 50 50 1 1 W N +X +12V 1 0 0 0 U 50 50 1 1 W N +ENDDRAW +ENDDEF +# +# power_+3.3V +# +DEF power_+3.3V #PWR 0 0 Y Y 1 F P +F0 "#PWR" 0 -150 50 H I C CNN +F1 "power_+3.3V" 0 140 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +ALIAS +3.3V +DRAW +P 2 0 1 0 -30 50 0 100 N +P 2 0 1 0 0 0 0 100 N +P 2 0 1 0 0 100 30 50 N +X +3V3 1 0 0 0 U 50 50 1 1 W N ENDDRAW ENDDEF # diff --git a/pcb/DeskControl.bak b/pcb/DeskControl.bak index 0cad776..0e8faa1 100644 --- a/pcb/DeskControl.bak +++ b/pcb/DeskControl.bak @@ -1,4 +1,5 @@ EESchema Schematic File Version 4 +LIBS:DeskControl-cache EELAYER 26 0 EELAYER END $Descr A4 11693 8268 @@ -19,7 +20,7 @@ U 1 1 5D753A97 P 5100 3400 F 0 "U1" H 4200 2050 50 0000 C CNN F 1 "ATmega328-AU" H 4200 2150 50 0000 C CNN -F 2 "Package_QFP:TQFP-32_7x7mm_P0.8mm" H 5100 3400 50 0001 C CIN +F 2 "Housings_QFP:TQFP-32_7x7mm_Pitch0.8mm" H 5100 3400 50 0001 C CIN F 3 "http://ww1.microchip.com/downloads/en/DeviceDoc/ATmega328_P%20AVR%20MCU%20with%20picoPower%20Technology%20Data%20Sheet%2040001984A.pdf" H 5100 3400 50 0001 C CNN 1 5100 3400 1 0 0 -1 @@ -29,7 +30,7 @@ L Connector_Generic:Conn_01x04 J2 U 1 1 5D753B7C P 9400 2250 F 0 "J2" H 9479 2242 50 0000 L CNN -F 1 "SSD1306" H 9479 2151 50 0000 L CNN +F 1 "VL54L0X" H 9479 2151 50 0000 L CNN F 2 "Pin_Headers:Pin_Header_Straight_1x04_Pitch2.54mm" H 9400 2250 50 0001 C CNN F 3 "~" H 9400 2250 50 0001 C CNN 1 9400 2250 @@ -373,122 +374,241 @@ $EndComp $Comp L Switch:SW_Push SW1 U 1 1 5D759C24 -P 6250 1600 -F 0 "SW1" H 6250 1885 50 0000 C CNN -F 1 "SW_Push" H 6250 1794 50 0000 C CNN -F 2 "SMD-BUTTON:SW4-SMD-5.2X5.2X1.5MM" H 6250 1800 50 0001 C CNN -F 3 "" H 6250 1800 50 0001 C CNN - 1 6250 1600 +P 9300 4900 +F 0 "SW1" H 9300 5185 50 0000 C CNN +F 1 "SW_Push" H 9300 5094 50 0000 C CNN +F 2 "SMD-BUTTON:SW4-SMD-5.2X5.2X1.5MM" H 9300 5100 50 0001 C CNN +F 3 "" H 9300 5100 50 0001 C CNN + 1 9300 4900 1 0 0 -1 $EndComp $Comp L Switch:SW_Push SW2 U 1 1 5D759CB0 -P 6250 2000 -F 0 "SW2" H 6250 2285 50 0000 C CNN -F 1 "SW_Push" H 6250 2194 50 0000 C CNN -F 2 "SMD-BUTTON:SW4-SMD-5.2X5.2X1.5MM" H 6250 2200 50 0001 C CNN -F 3 "" H 6250 2200 50 0001 C CNN - 1 6250 2000 +P 9300 5300 +F 0 "SW2" H 9300 5585 50 0000 C CNN +F 1 "SW_Push" H 9300 5494 50 0000 C CNN +F 2 "SMD-BUTTON:SW4-SMD-5.2X5.2X1.5MM" H 9300 5500 50 0001 C CNN +F 3 "" H 9300 5500 50 0001 C CNN + 1 9300 5300 1 0 0 -1 $EndComp $Comp L Switch:SW_Push SW3 U 1 1 5D759CF0 -P 6250 2400 -F 0 "SW3" H 6250 2685 50 0000 C CNN -F 1 "SW_Push" H 6250 2594 50 0000 C CNN -F 2 "SMD-BUTTON:SW4-SMD-5.2X5.2X1.5MM" H 6250 2600 50 0001 C CNN -F 3 "" H 6250 2600 50 0001 C CNN - 1 6250 2400 +P 9300 5700 +F 0 "SW3" H 9300 5985 50 0000 C CNN +F 1 "SW_Push" H 9300 5894 50 0000 C CNN +F 2 "SMD-BUTTON:SW4-SMD-5.2X5.2X1.5MM" H 9300 5900 50 0001 C CNN +F 3 "" H 9300 5900 50 0001 C CNN + 1 9300 5700 1 0 0 -1 $EndComp -Wire Wire Line - 5700 2200 5800 2200 -Wire Wire Line - 5800 2200 5800 1600 -Wire Wire Line - 5800 1600 6050 1600 -Wire Wire Line - 5700 2300 5850 2300 -Wire Wire Line - 5850 2300 5850 2000 -Wire Wire Line - 5850 2000 6050 2000 -Wire Wire Line - 5700 2400 6050 2400 $Comp L power:GND #PWR05 U 1 1 5D75B49B -P 6550 2400 -F 0 "#PWR05" H 6550 2150 50 0001 C CNN -F 1 "GND" H 6555 2227 50 0000 C CNN -F 2 "" H 6550 2400 50 0001 C CNN -F 3 "" H 6550 2400 50 0001 C CNN - 1 6550 2400 +P 9600 5700 +F 0 "#PWR05" H 9600 5450 50 0001 C CNN +F 1 "GND" H 9605 5527 50 0000 C CNN +F 2 "" H 9600 5700 50 0001 C CNN +F 3 "" H 9600 5700 50 0001 C CNN + 1 9600 5700 1 0 0 -1 $EndComp Wire Wire Line - 6450 2400 6550 2400 + 9500 5700 9600 5700 Wire Wire Line - 6450 2000 6550 2000 + 9500 5300 9600 5300 Wire Wire Line - 6550 2000 6550 2400 -Connection ~ 6550 2400 + 9600 5300 9600 5700 +Connection ~ 9600 5700 Wire Wire Line - 6450 1600 6550 1600 + 9500 4900 9600 4900 Wire Wire Line - 6550 1600 6550 2000 -Connection ~ 6550 2000 -NoConn ~ 5700 3100 -NoConn ~ 5700 3200 -NoConn ~ 5700 3300 -NoConn ~ 5700 3400 + 9600 4900 9600 5300 +Connection ~ 9600 5300 NoConn ~ 5700 4100 -NoConn ~ 5700 4200 NoConn ~ 5700 4300 -NoConn ~ 5700 4400 -NoConn ~ 5700 4500 -NoConn ~ 5700 4600 $Comp -L Connector_Generic:Conn_01x04 J? +L Connector_Generic:Conn_01x08 J3 U 1 1 5D7651C5 -P 6500 4000 -F 0 "J?" H 6650 4050 50 0000 L CNN -F 1 "L298" H 6580 3951 50 0000 L CNN -F 2 "" H 6500 4000 50 0001 C CNN -F 3 "~" H 6500 4000 50 0001 C CNN - 1 6500 4000 +P 9650 3850 +F 0 "J3" H 9800 3900 50 0000 L CNN +F 1 "PoluluG2" H 9730 3801 50 0000 L CNN +F 2 "Pin_Headers:Pin_Header_Straight_1x04_Pitch2.54mm" H 9650 3850 50 0001 C CNN +F 3 "~" H 9650 3850 50 0001 C CNN + 1 9650 3850 1 0 0 -1 $EndComp $Comp -L power:GND #PWR? +L power:GND #PWR014 U 1 1 5D765563 -P 6150 4200 -F 0 "#PWR?" H 6150 3950 50 0001 C CNN -F 1 "GND" H 6155 4027 50 0000 C CNN -F 2 "" H 6150 4200 50 0001 C CNN -F 3 "" H 6150 4200 50 0001 C CNN - 1 6150 4200 +P 9000 3550 +F 0 "#PWR014" H 9000 3300 50 0001 C CNN +F 1 "GND" H 9005 3377 50 0000 C CNN +F 2 "" H 9000 3550 50 0001 C CNN +F 3 "" H 9000 3550 50 0001 C CNN + 1 9000 3550 1 0 0 -1 $EndComp Wire Wire Line - 5700 3900 6300 3900 -Wire Wire Line - 5700 4000 6300 4000 + 9000 3550 9450 3550 +Text GLabel 5700 2200 2 50 Input ~ 0 +LCD-DC +Text GLabel 5700 2300 2 50 Input ~ 0 +LCD-RST +Text GLabel 5700 4600 2 50 Input ~ 0 +LCD-BL +Text GLabel 5700 3100 2 50 Input ~ 0 +M-PWM +Text GLabel 5700 3200 2 50 Input ~ 0 +M-DIR +Text GLabel 5700 3300 2 50 Input ~ 0 +M-SLP +Text GLabel 5700 3400 2 50 Input ~ 0 +M-CS +Text GLabel 5700 4200 2 50 Input ~ 0 +BTN-UP +Text GLabel 5700 4400 2 50 Input ~ 0 +BTN-MENU +Text GLabel 5700 4500 2 50 Input ~ 0 +BTN-DOWN +Text GLabel 9100 4900 0 50 Input ~ 0 +BTN-UP +Text GLabel 9100 5300 0 50 Input ~ 0 +BTN-MENU +Text GLabel 9100 5700 0 50 Input ~ 0 +BTN-DOWN +Text GLabel 9450 4050 0 50 Input ~ 0 +M-CS +Text GLabel 9450 3850 0 50 Input ~ 0 +M-SLP +Text GLabel 9450 3650 0 50 Input ~ 0 +M-DIR +Text GLabel 9450 3750 0 50 Input ~ 0 +M-PWM +NoConn ~ 9450 3950 +NoConn ~ 9450 4150 $Comp -L power:+5V #PWR? -U 1 1 5D767927 -P 6000 4100 -F 0 "#PWR?" H 6000 3950 50 0001 C CNN -F 1 "+5V" H 6015 4273 50 0000 C CNN -F 2 "" H 6000 4100 50 0001 C CNN -F 3 "" H 6000 4100 50 0001 C CNN - 1 6000 4100 +L power:+5V #PWR0101 +U 1 1 5E2FA39D +P 9150 4250 +F 0 "#PWR0101" H 9150 4100 50 0001 C CNN +F 1 "+5V" H 9165 4423 50 0000 C CNN +F 2 "" H 9150 4250 50 0001 C CNN +F 3 "" H 9150 4250 50 0001 C CNN + 1 9150 4250 -1 0 0 1 $EndComp Wire Wire Line - 6000 4100 6300 4100 + 9450 4250 9150 4250 +$Comp +L Connector_Generic:Conn_01x02 J4 +U 1 1 5E2FAE20 +P 9400 1600 +F 0 "J4" H 9479 1592 50 0000 L CNN +F 1 "PWR" H 9479 1501 50 0000 L CNN +F 2 "Pin_Headers:Pin_Header_Straight_1x04_Pitch2.54mm" H 9400 1600 50 0001 C CNN +F 3 "~" H 9400 1600 50 0001 C CNN + 1 9400 1600 + 1 0 0 -1 +$EndComp +$Comp +L power:GND #PWR0102 +U 1 1 5E2FAFB3 +P 9100 1700 +F 0 "#PWR0102" H 9100 1450 50 0001 C CNN +F 1 "GND" H 9105 1527 50 0000 C CNN +F 2 "" H 9100 1700 50 0001 C CNN +F 3 "" H 9100 1700 50 0001 C CNN + 1 9100 1700 + 1 0 0 -1 +$EndComp Wire Wire Line - 6150 4200 6300 4200 + 9100 1700 9200 1700 +Wire Wire Line + 9200 1600 8900 1600 +$Comp +L power:+12V #PWR0103 +U 1 1 5E2FB825 +P 8900 1600 +F 0 "#PWR0103" H 8900 1450 50 0001 C CNN +F 1 "+12V" H 8915 1773 50 0000 C CNN +F 2 "" H 8900 1600 50 0001 C CNN +F 3 "" H 8900 1600 50 0001 C CNN + 1 8900 1600 + -1 0 0 1 +$EndComp +$Comp +L power:+12V #PWR0104 +U 1 1 5E2FBA44 +P 1400 900 +F 0 "#PWR0104" H 1400 750 50 0001 C CNN +F 1 "+12V" H 1415 1073 50 0000 C CNN +F 2 "" H 1400 900 50 0001 C CNN +F 3 "" H 1400 900 50 0001 C CNN + 1 1400 900 + 1 0 0 -1 +$EndComp +$Comp +L power:PWR_FLAG #FLG0101 +U 1 1 5E2FBA8B +P 1400 900 +F 0 "#FLG0101" H 1400 975 50 0001 C CNN +F 1 "PWR_FLAG" H 1400 1073 50 0000 C CNN +F 2 "" H 1400 900 50 0001 C CNN +F 3 "~" H 1400 900 50 0001 C CNN + 1 1400 900 + -1 0 0 1 +$EndComp +NoConn ~ 5700 3900 +NoConn ~ 5700 4000 +NoConn ~ 5700 2400 +$Comp +L Connector_Generic:Conn_01x07 J5 +U 1 1 5E2FE0A5 +P 7300 5400 +F 0 "J5" H 7379 5392 50 0000 L CNN +F 1 "ST7789" H 7379 5301 50 0000 L CNN +F 2 "Pin_Headers:Pin_Header_Straight_1x04_Pitch2.54mm" H 7300 5400 50 0001 C CNN +F 3 "~" H 7300 5400 50 0001 C CNN + 1 7300 5400 + 1 0 0 -1 +$EndComp +Text GLabel 7100 5300 0 50 Input ~ 0 +SCK +Text GLabel 7100 5400 0 50 Input ~ 0 +MOSI +Text GLabel 7100 5500 0 50 Input ~ 0 +LCD-RST +Text GLabel 7100 5600 0 50 Input ~ 0 +LCD-DC +$Comp +L power:GND #PWR013 +U 1 1 5E2FE81E +P 6450 5100 +F 0 "#PWR013" H 6450 4850 50 0001 C CNN +F 1 "GND" H 6455 4927 50 0000 C CNN +F 2 "" H 6450 5100 50 0001 C CNN +F 3 "" H 6450 5100 50 0001 C CNN + 1 6450 5100 + 1 0 0 -1 +$EndComp +$Comp +L power:+5V #PWR015 +U 1 1 5E2FEBC9 +P 6650 5200 +F 0 "#PWR015" H 6650 5050 50 0001 C CNN +F 1 "+5V" H 6665 5373 50 0000 C CNN +F 2 "" H 6650 5200 50 0001 C CNN +F 3 "" H 6650 5200 50 0001 C CNN + 1 6650 5200 + -1 0 0 1 +$EndComp +Wire Wire Line + 6650 5200 7100 5200 +Wire Wire Line + 7100 5100 6450 5100 +Text GLabel 7100 5700 0 50 Input ~ 0 +LCD-BL $EndSCHEMATC diff --git a/pcb/DeskControl.sch b/pcb/DeskControl.sch index fa22a0e..d411567 100644 --- a/pcb/DeskControl.sch +++ b/pcb/DeskControl.sch @@ -1,4 +1,5 @@ EESchema Schematic File Version 4 +LIBS:DeskControl-cache EELAYER 26 0 EELAYER END $Descr A4 11693 8268 @@ -29,7 +30,7 @@ L Connector_Generic:Conn_01x04 J2 U 1 1 5D753B7C P 9400 2250 F 0 "J2" H 9479 2242 50 0000 L CNN -F 1 "SSD1306" H 9479 2151 50 0000 L CNN +F 1 "VL54L0X" H 9479 2151 50 0000 L CNN F 2 "Pin_Headers:Pin_Header_Straight_1x04_Pitch2.54mm" H 9400 2250 50 0001 C CNN F 3 "~" H 9400 2250 50 0001 C CNN 1 9400 2250 @@ -55,17 +56,6 @@ RST Text GLabel 9650 3100 2 50 Input ~ 0 MOSI $Comp -L power:+5V #PWR08 -U 1 1 5D753EAE -P 9750 3000 -F 0 "#PWR08" H 9750 2850 50 0001 C CNN -F 1 "+5V" H 9765 3173 50 0000 C CNN -F 2 "" H 9750 3000 50 0001 C CNN -F 3 "" H 9750 3000 50 0001 C CNN - 1 9750 3000 - 1 0 0 -1 -$EndComp -$Comp L power:GND #PWR09 U 1 1 5D753EEB P 9750 3200 @@ -81,47 +71,25 @@ Wire Wire Line Wire Wire Line 9650 3200 9750 3200 $Comp -L power:+5V #PWR04 -U 1 1 5D753F2B -P 8900 2350 -F 0 "#PWR04" H 8900 2200 50 0001 C CNN -F 1 "+5V" H 8915 2523 50 0000 C CNN -F 2 "" H 8900 2350 50 0001 C CNN -F 3 "" H 8900 2350 50 0001 C CNN - 1 8900 2350 - -1 0 0 1 -$EndComp -$Comp L power:GND #PWR06 U 1 1 5D753F42 -P 9100 2450 -F 0 "#PWR06" H 9100 2200 50 0001 C CNN -F 1 "GND" H 9105 2277 50 0000 C CNN -F 2 "" H 9100 2450 50 0001 C CNN -F 3 "" H 9100 2450 50 0001 C CNN - 1 9100 2450 +P 8800 2450 +F 0 "#PWR06" H 8800 2200 50 0001 C CNN +F 1 "GND" H 8805 2277 50 0000 C CNN +F 2 "" H 8800 2450 50 0001 C CNN +F 3 "" H 8800 2450 50 0001 C CNN + 1 8800 2450 1 0 0 -1 $EndComp Wire Wire Line - 9100 2450 9200 2450 + 8800 2450 9200 2450 Wire Wire Line - 9200 2350 8900 2350 + 9200 2350 8800 2350 Text GLabel 9200 2150 0 50 Input ~ 0 SDA Text GLabel 9200 2250 0 50 Input ~ 0 SCL $Comp -L power:+5V #PWR01 -U 1 1 5D7540FC -P 900 900 -F 0 "#PWR01" H 900 750 50 0001 C CNN -F 1 "+5V" H 915 1073 50 0000 C CNN -F 2 "" H 900 900 50 0001 C CNN -F 3 "" H 900 900 50 0001 C CNN - 1 900 900 - 1 0 0 -1 -$EndComp -$Comp L power:GND #PWR03 U 1 1 5D754134 P 900 1450 @@ -202,17 +170,6 @@ Wire Wire Line 2800 2200 3100 2200 Wire Wire Line 3900 2200 4500 2200 -$Comp -L power:+5V #PWR02 -U 1 1 5D754E27 -P 3100 1400 -F 0 "#PWR02" H 3100 1250 50 0001 C CNN -F 1 "+5V" H 3115 1573 50 0000 C CNN -F 2 "" H 3100 1400 50 0001 C CNN -F 3 "" H 3100 1400 50 0001 C CNN - 1 3100 1400 - 1 0 0 -1 -$EndComp Connection ~ 3100 2200 Wire Wire Line 3100 2200 3350 2200 @@ -341,17 +298,6 @@ F 3 "~" H 6250 3550 50 0001 C CNN 1 6250 3550 1 0 0 -1 $EndComp -$Comp -L power:+5V #PWR011 -U 1 1 5D7585CC -P 6250 3400 -F 0 "#PWR011" H 6250 3250 50 0001 C CNN -F 1 "+5V" H 6265 3573 50 0000 C CNN -F 2 "" H 6250 3400 50 0001 C CNN -F 3 "" H 6250 3400 50 0001 C CNN - 1 6250 3400 - 1 0 0 -1 -$EndComp Wire Wire Line 5700 3700 6250 3700 Text GLabel 6450 3700 2 50 Input ~ 0 @@ -373,122 +319,296 @@ $EndComp $Comp L Switch:SW_Push SW1 U 1 1 5D759C24 -P 6250 1600 -F 0 "SW1" H 6250 1885 50 0000 C CNN -F 1 "SW_Push" H 6250 1794 50 0000 C CNN -F 2 "SMD-BUTTON:SW4-SMD-5.2X5.2X1.5MM" H 6250 1800 50 0001 C CNN -F 3 "" H 6250 1800 50 0001 C CNN - 1 6250 1600 +P 9300 4900 +F 0 "SW1" H 9300 5185 50 0000 C CNN +F 1 "SW_Push" H 9300 5094 50 0000 C CNN +F 2 "SMD-BUTTON:SW4-SMD-5.2X5.2X1.5MM" H 9300 5100 50 0001 C CNN +F 3 "" H 9300 5100 50 0001 C CNN + 1 9300 4900 1 0 0 -1 $EndComp $Comp L Switch:SW_Push SW2 U 1 1 5D759CB0 -P 6250 2000 -F 0 "SW2" H 6250 2285 50 0000 C CNN -F 1 "SW_Push" H 6250 2194 50 0000 C CNN -F 2 "SMD-BUTTON:SW4-SMD-5.2X5.2X1.5MM" H 6250 2200 50 0001 C CNN -F 3 "" H 6250 2200 50 0001 C CNN - 1 6250 2000 +P 9300 5300 +F 0 "SW2" H 9300 5585 50 0000 C CNN +F 1 "SW_Push" H 9300 5494 50 0000 C CNN +F 2 "SMD-BUTTON:SW4-SMD-5.2X5.2X1.5MM" H 9300 5500 50 0001 C CNN +F 3 "" H 9300 5500 50 0001 C CNN + 1 9300 5300 1 0 0 -1 $EndComp $Comp L Switch:SW_Push SW3 U 1 1 5D759CF0 -P 6250 2400 -F 0 "SW3" H 6250 2685 50 0000 C CNN -F 1 "SW_Push" H 6250 2594 50 0000 C CNN -F 2 "SMD-BUTTON:SW4-SMD-5.2X5.2X1.5MM" H 6250 2600 50 0001 C CNN -F 3 "" H 6250 2600 50 0001 C CNN - 1 6250 2400 +P 9300 5700 +F 0 "SW3" H 9300 5985 50 0000 C CNN +F 1 "SW_Push" H 9300 5894 50 0000 C CNN +F 2 "SMD-BUTTON:SW4-SMD-5.2X5.2X1.5MM" H 9300 5900 50 0001 C CNN +F 3 "" H 9300 5900 50 0001 C CNN + 1 9300 5700 1 0 0 -1 $EndComp -Wire Wire Line - 5700 2200 5800 2200 -Wire Wire Line - 5800 2200 5800 1600 -Wire Wire Line - 5800 1600 6050 1600 -Wire Wire Line - 5700 2300 5850 2300 -Wire Wire Line - 5850 2300 5850 2000 -Wire Wire Line - 5850 2000 6050 2000 -Wire Wire Line - 5700 2400 6050 2400 $Comp L power:GND #PWR05 U 1 1 5D75B49B -P 6550 2400 -F 0 "#PWR05" H 6550 2150 50 0001 C CNN -F 1 "GND" H 6555 2227 50 0000 C CNN -F 2 "" H 6550 2400 50 0001 C CNN -F 3 "" H 6550 2400 50 0001 C CNN - 1 6550 2400 +P 9600 5700 +F 0 "#PWR05" H 9600 5450 50 0001 C CNN +F 1 "GND" H 9605 5527 50 0000 C CNN +F 2 "" H 9600 5700 50 0001 C CNN +F 3 "" H 9600 5700 50 0001 C CNN + 1 9600 5700 1 0 0 -1 $EndComp Wire Wire Line - 6450 2400 6550 2400 + 9500 5700 9600 5700 Wire Wire Line - 6450 2000 6550 2000 + 9500 5300 9600 5300 Wire Wire Line - 6550 2000 6550 2400 -Connection ~ 6550 2400 + 9600 5300 9600 5700 +Connection ~ 9600 5700 Wire Wire Line - 6450 1600 6550 1600 + 9500 4900 9600 4900 Wire Wire Line - 6550 1600 6550 2000 -Connection ~ 6550 2000 -NoConn ~ 5700 3100 -NoConn ~ 5700 3200 -NoConn ~ 5700 3300 -NoConn ~ 5700 3400 + 9600 4900 9600 5300 +Connection ~ 9600 5300 NoConn ~ 5700 4100 -NoConn ~ 5700 4200 NoConn ~ 5700 4300 -NoConn ~ 5700 4400 -NoConn ~ 5700 4500 -NoConn ~ 5700 4600 $Comp -L Connector_Generic:Conn_01x04 J3 +L Connector_Generic:Conn_01x08 J3 U 1 1 5D7651C5 -P 6500 4000 -F 0 "J3" H 6650 4050 50 0000 L CNN -F 1 "L298" H 6580 3951 50 0000 L CNN -F 2 "Pin_Headers:Pin_Header_Straight_1x04_Pitch2.54mm" H 6500 4000 50 0001 C CNN -F 3 "~" H 6500 4000 50 0001 C CNN - 1 6500 4000 +P 9650 3850 +F 0 "J3" H 9800 3900 50 0000 L CNN +F 1 "PoluluG2" H 9730 3801 50 0000 L CNN +F 2 "Pin_Headers:Pin_Header_Straight_1x04_Pitch2.54mm" H 9650 3850 50 0001 C CNN +F 3 "~" H 9650 3850 50 0001 C CNN + 1 9650 3850 1 0 0 -1 $EndComp $Comp L power:GND #PWR014 U 1 1 5D765563 -P 6150 4200 -F 0 "#PWR014" H 6150 3950 50 0001 C CNN -F 1 "GND" H 6155 4027 50 0000 C CNN -F 2 "" H 6150 4200 50 0001 C CNN -F 3 "" H 6150 4200 50 0001 C CNN - 1 6150 4200 +P 9000 3550 +F 0 "#PWR014" H 9000 3300 50 0001 C CNN +F 1 "GND" H 9005 3377 50 0000 C CNN +F 2 "" H 9000 3550 50 0001 C CNN +F 3 "" H 9000 3550 50 0001 C CNN + 1 9000 3550 1 0 0 -1 $EndComp Wire Wire Line - 5700 3900 6300 3900 + 9000 3550 9450 3550 +Text GLabel 5700 2200 2 50 Input ~ 0 +LCD-DC +Text GLabel 5700 2300 2 50 Input ~ 0 +LCD-RST +Text GLabel 5700 4600 2 50 Input ~ 0 +LCD-BL +Text GLabel 5700 3100 2 50 Input ~ 0 +M-PWM +Text GLabel 5700 3200 2 50 Input ~ 0 +M-DIR +Text GLabel 5700 3300 2 50 Input ~ 0 +M-SLP +Text GLabel 5700 3400 2 50 Input ~ 0 +M-CS +Text GLabel 5700 4200 2 50 Input ~ 0 +BTN-UP +Text GLabel 5700 4400 2 50 Input ~ 0 +BTN-MENU +Text GLabel 5700 4500 2 50 Input ~ 0 +BTN-DOWN +Text GLabel 9100 4900 0 50 Input ~ 0 +BTN-UP +Text GLabel 9100 5300 0 50 Input ~ 0 +BTN-MENU +Text GLabel 9100 5700 0 50 Input ~ 0 +BTN-DOWN +Text GLabel 9450 4050 0 50 Input ~ 0 +M-CS +Text GLabel 9450 3850 0 50 Input ~ 0 +M-SLP +Text GLabel 9450 3650 0 50 Input ~ 0 +M-DIR +Text GLabel 9450 3750 0 50 Input ~ 0 +M-PWM +NoConn ~ 9450 3950 +NoConn ~ 9450 4150 Wire Wire Line - 5700 4000 6300 4000 + 9450 4250 9000 4250 $Comp -L power:+5V #PWR013 -U 1 1 5D767927 -P 6000 4100 -F 0 "#PWR013" H 6000 3950 50 0001 C CNN -F 1 "+5V" H 6015 4273 50 0000 C CNN -F 2 "" H 6000 4100 50 0001 C CNN -F 3 "" H 6000 4100 50 0001 C CNN - 1 6000 4100 - -1 0 0 1 +L Connector_Generic:Conn_01x02 J4 +U 1 1 5E2FAE20 +P 9400 1600 +F 0 "J4" H 9479 1592 50 0000 L CNN +F 1 "PWR" H 9479 1501 50 0000 L CNN +F 2 "Pin_Headers:Pin_Header_Straight_1x04_Pitch2.54mm" H 9400 1600 50 0001 C CNN +F 3 "~" H 9400 1600 50 0001 C CNN + 1 9400 1600 + 1 0 0 -1 +$EndComp +$Comp +L power:GND #PWR0102 +U 1 1 5E2FAFB3 +P 9100 1700 +F 0 "#PWR0102" H 9100 1450 50 0001 C CNN +F 1 "GND" H 9105 1527 50 0000 C CNN +F 2 "" H 9100 1700 50 0001 C CNN +F 3 "" H 9100 1700 50 0001 C CNN + 1 9100 1700 + 1 0 0 -1 $EndComp Wire Wire Line - 6000 4100 6300 4100 + 9100 1700 9200 1700 Wire Wire Line - 6150 4200 6300 4200 + 9200 1600 8900 1600 +$Comp +L power:+12V #PWR0103 +U 1 1 5E2FB825 +P 8900 1600 +F 0 "#PWR0103" H 8900 1450 50 0001 C CNN +F 1 "+12V" H 8915 1773 50 0000 C CNN +F 2 "" H 8900 1600 50 0001 C CNN +F 3 "" H 8900 1600 50 0001 C CNN + 1 8900 1600 + -1 0 0 1 +$EndComp +$Comp +L power:+12V #PWR0104 +U 1 1 5E2FBA44 +P 1400 900 +F 0 "#PWR0104" H 1400 750 50 0001 C CNN +F 1 "+12V" H 1415 1073 50 0000 C CNN +F 2 "" H 1400 900 50 0001 C CNN +F 3 "" H 1400 900 50 0001 C CNN + 1 1400 900 + 1 0 0 -1 +$EndComp +$Comp +L power:PWR_FLAG #FLG0101 +U 1 1 5E2FBA8B +P 1400 900 +F 0 "#FLG0101" H 1400 975 50 0001 C CNN +F 1 "PWR_FLAG" H 1400 1073 50 0000 C CNN +F 2 "" H 1400 900 50 0001 C CNN +F 3 "~" H 1400 900 50 0001 C CNN + 1 1400 900 + -1 0 0 1 +$EndComp +NoConn ~ 5700 3900 +NoConn ~ 5700 4000 +NoConn ~ 5700 2400 +$Comp +L Connector_Generic:Conn_01x07 J5 +U 1 1 5E2FE0A5 +P 7300 5400 +F 0 "J5" H 7379 5392 50 0000 L CNN +F 1 "ST7789" H 7379 5301 50 0000 L CNN +F 2 "Pin_Headers:Pin_Header_Straight_1x04_Pitch2.54mm" H 7300 5400 50 0001 C CNN +F 3 "~" H 7300 5400 50 0001 C CNN + 1 7300 5400 + 1 0 0 -1 +$EndComp +Text GLabel 7100 5300 0 50 Input ~ 0 +SCK +Text GLabel 7100 5400 0 50 Input ~ 0 +MOSI +Text GLabel 7100 5500 0 50 Input ~ 0 +LCD-RST +Text GLabel 7100 5600 0 50 Input ~ 0 +LCD-DC +$Comp +L power:GND #PWR013 +U 1 1 5E2FE81E +P 6450 5100 +F 0 "#PWR013" H 6450 4850 50 0001 C CNN +F 1 "GND" H 6455 4927 50 0000 C CNN +F 2 "" H 6450 5100 50 0001 C CNN +F 3 "" H 6450 5100 50 0001 C CNN + 1 6450 5100 + 1 0 0 -1 +$EndComp +Wire Wire Line + 6650 5200 7100 5200 +Wire Wire Line + 7100 5100 6450 5100 +Text GLabel 7100 5700 0 50 Input ~ 0 +LCD-BL +$Comp +L power:+3.3V #PWR? +U 1 1 5E300204 +P 900 900 +F 0 "#PWR?" H 900 750 50 0001 C CNN +F 1 "+3.3V" H 915 1073 50 0000 C CNN +F 2 "" H 900 900 50 0001 C CNN +F 3 "" H 900 900 50 0001 C CNN + 1 900 900 + 1 0 0 -1 +$EndComp +$Comp +L power:+3.3V #PWR? +U 1 1 5E300371 +P 3100 1400 +F 0 "#PWR?" H 3100 1250 50 0001 C CNN +F 1 "+3.3V" H 3115 1573 50 0000 C CNN +F 2 "" H 3100 1400 50 0001 C CNN +F 3 "" H 3100 1400 50 0001 C CNN + 1 3100 1400 + 1 0 0 -1 +$EndComp +$Comp +L power:+3.3V #PWR? +U 1 1 5E30051D +P 8800 2350 +F 0 "#PWR?" H 8800 2200 50 0001 C CNN +F 1 "+3.3V" H 8815 2523 50 0000 C CNN +F 2 "" H 8800 2350 50 0001 C CNN +F 3 "" H 8800 2350 50 0001 C CNN + 1 8800 2350 + 1 0 0 -1 +$EndComp +$Comp +L power:+3.3V #PWR? +U 1 1 5E3005E9 +P 9750 3000 +F 0 "#PWR?" H 9750 2850 50 0001 C CNN +F 1 "+3.3V" H 9765 3173 50 0000 C CNN +F 2 "" H 9750 3000 50 0001 C CNN +F 3 "" H 9750 3000 50 0001 C CNN + 1 9750 3000 + 1 0 0 -1 +$EndComp +$Comp +L power:+3.3V #PWR? +U 1 1 5E300625 +P 9000 4250 +F 0 "#PWR?" H 9000 4100 50 0001 C CNN +F 1 "+3.3V" H 9015 4423 50 0000 C CNN +F 2 "" H 9000 4250 50 0001 C CNN +F 3 "" H 9000 4250 50 0001 C CNN + 1 9000 4250 + 1 0 0 -1 +$EndComp +$Comp +L power:+3.3V #PWR? +U 1 1 5E301977 +P 6650 5200 +F 0 "#PWR?" H 6650 5050 50 0001 C CNN +F 1 "+3.3V" H 6665 5373 50 0000 C CNN +F 2 "" H 6650 5200 50 0001 C CNN +F 3 "" H 6650 5200 50 0001 C CNN + 1 6650 5200 + -1 0 0 1 +$EndComp +$Comp +L power:+3.3V #PWR? +U 1 1 5E302F90 +P 6250 3400 +F 0 "#PWR?" H 6250 3250 50 0001 C CNN +F 1 "+3.3V" H 6265 3573 50 0000 C CNN +F 2 "" H 6250 3400 50 0001 C CNN +F 3 "" H 6250 3400 50 0001 C CNN + 1 6250 3400 + 1 0 0 -1 +$EndComp $EndSCHEMATC diff --git a/platformio.ini b/platformio.ini index 4a39861..93c8591 100644 --- a/platformio.ini +++ b/platformio.ini @@ -8,19 +8,33 @@ ; Please visit documentation for the other options and examples ; http://docs.platformio.org/page/projectconf.html +[platformio] +default_envs = uno + + +[env] +lib_deps = + Bounce2 + Adafruit GFX Library + Adafruit ST7735 and ST7789 Library + Adafruit_VL53L0X + + +[env:uno] +platform = atmelavr +board = atmega328p +board_build.f_cpu = 16000000L +framework = arduino + +upload_port = COM3 + [env:atmega328] platform = atmelavr board = pro8MHzatmega328 +board_build.f_cpu = 8000000L framework = arduino upload_protocol = usbtiny upload_flags = -e upload_speed = 19200 -board_build.f_cpu = 8000000L - -lib_deps = - Bounce2 - Adafruit GFX Library - Adafruit ST7735 and ST7789 Library - Adafruit_VL53L0X \ No newline at end of file diff --git a/src/include/display.h b/src/include/display.h index 4aeec71..01cb3bd 100644 --- a/src/include/display.h +++ b/src/include/display.h @@ -10,5 +10,6 @@ #define DISPLAY_PORT_CS 10 #define DISPLAY_PORT_RST 9 #define DISPLAY_PORT_DC 8 +#define DISPLAY_PORT_BL 7 #endif \ No newline at end of file diff --git a/src/lib/debug.h b/src/lib/debug.h new file mode 100644 index 0000000..1e42731 --- /dev/null +++ b/src/lib/debug.h @@ -0,0 +1,17 @@ +#ifndef __debug +#define __debug + +#define SerialDebug + + + +#ifdef SerialDebug + #define DebugInit() Serial.begin(9600) + #define DebugLog(...) Serial.println(__VA_ARGS__) +#else + #define DebugInit() + #define DebugLog(...) +#endif + + +#endif \ No newline at end of file diff --git a/src/lib/vl53l0x.cpp b/src/lib/vl53l0x.cpp index 66124b0..f48f789 100644 --- a/src/lib/vl53l0x.cpp +++ b/src/lib/vl53l0x.cpp @@ -16,14 +16,27 @@ bool checkResult(VL53L0X_Error error, VL53L0XResult* result, VL53L0XPosition pos bool VL53L0X::init(uint8_t address, VL53L0XResult* result) { - device.I2cDevAddr = address; + device.I2cDevAddr = 0x29; device.comms_type = 1; device.comms_speed_khz = 400; device.i2c = &Wire; if (!checkResult(VL53L0X_DataInit(&device), result, VL53L0X_POSITION_DATAINIT)) return false; - //checkResult(VL53L0X_GetDeviceInfo(&device, &deviceInfo)), result, VL53L0X_POSITION_); + + + auto setAddress = address & 0x7F; + + // * 2 to convert from 7 to 8 bits + if (!checkResult(VL53L0X_SetDeviceAddress(&device, setAddress * 2), result, VL53L0X_POSITION_SETDEVICEADDRESS)) + return false; + + delay(10); + device.I2cDevAddr = setAddress; + + VL53L0X_DeviceInfo_t deviceInfo; + if (!checkResult(VL53L0X_GetDeviceInfo(&device, &deviceInfo), result, VL53L0X_POSITION_GETDEVICEINFO)) + return false; if (!checkResult(VL53L0X_StaticInit(&device), result, VL53L0X_POSITION_STATICINIT)) return false; diff --git a/src/lib/vl53l0x.h b/src/lib/vl53l0x.h index fc9f799..d5c3cb3 100644 --- a/src/lib/vl53l0x.h +++ b/src/lib/vl53l0x.h @@ -27,14 +27,16 @@ typedef struct // Positions for the init method #define VL53L0X_POSITION_DATAINIT ((VL53L0XPosition) 1) -#define VL53L0X_POSITION_STATICINIT ((VL53L0XPosition) 2) -#define VL53L0X_POSITION_REFSPAD ((VL53L0XPosition) 3) -#define VL53L0X_POSITION_REFCAL ((VL53L0XPosition) 4) -#define VL53L0X_POSITION_DEVICEMODE ((VL53L0XPosition) 5) -#define VL53L0X_POSITION_LIMITRANGE ((VL53L0XPosition) 6) -#define VL53L0X_POSITION_LIMITRATE ((VL53L0XPosition) 7) -#define VL53L0X_POSITION_TRESHOLD1 ((VL53L0XPosition) 8) -#define VL53L0X_POSITION_TRESHOLD2 ((VL53L0XPosition) 9) +#define VL53L0X_POSITION_SETDEVICEADDRESS ((VL53L0XPosition) 2) +#define VL53L0X_POSITION_GETDEVICEINFO ((VL53L0XPosition) 3) +#define VL53L0X_POSITION_STATICINIT ((VL53L0XPosition) 4) +#define VL53L0X_POSITION_REFSPAD ((VL53L0XPosition) 5) +#define VL53L0X_POSITION_REFCAL ((VL53L0XPosition) 6) +#define VL53L0X_POSITION_DEVICEMODE ((VL53L0XPosition) 7) +#define VL53L0X_POSITION_LIMITRANGE ((VL53L0XPosition) 8) +#define VL53L0X_POSITION_LIMITRATE ((VL53L0XPosition) 9) +#define VL53L0X_POSITION_TRESHOLD1 ((VL53L0XPosition) 10) +#define VL53L0X_POSITION_TRESHOLD2 ((VL53L0XPosition) 11) class VL53L0X { diff --git a/src/main.cpp b/src/main.cpp index 84a2233..15a6016 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -6,6 +6,7 @@ #include "./include/display.h" #include "./include/heightsensor.h" #include "./include/colors.h" +#include "./lib/debug.h" #include "./lib/persist.h" #include "./lib/menu.h" #include "./lib/vl53l0x.h" @@ -20,7 +21,7 @@ void initSequenceError(uint8_t which, const char* message); #define INITSEQ_HEIGHTSENSORINIT 1 #define INITSEQ_HEIGHTSENSORBUDGET 2 #define INITSEQ_HEIGHTSENSORTEST 3 -#define INITSEQ_MAX INITSEQ_HEIGHTSENSORINIT +#define INITSEQ_MAX INITSEQ_HEIGHTSENSORTEST @@ -34,6 +35,11 @@ auto menu = Menu(&display); void setup() { + DebugInit(); + + pinMode(DISPLAY_PORT_BL, OUTPUT); + digitalWrite(DISPLAY_PORT_BL, HIGH); + display.init(DISPLAY_WIDTH, DISPLAY_HEIGHT, SPI_MODE3); display.setRotation(DISPLAY_ROTATION); @@ -52,7 +58,28 @@ void setup() VL53L0XResult result; if (!heightSensor.init(HEIGHTSENSOR_I2C_ADDRESS, &result)) { - initSequenceError(INITSEQ_HEIGHTSENSORINIT, "TODO: error message"); + char message[16] = ""; + char* messagePtr = &message[0]; + + memset(messagePtr, 0, sizeof(message)); + + itoa(result.error, messagePtr, 10); + messagePtr += strlen(messagePtr); + + *messagePtr = ' '; messagePtr++; + *messagePtr = '@'; messagePtr++; + *messagePtr = ' '; messagePtr++; + + itoa(result.position, messagePtr, 10); + initSequenceError(INITSEQ_HEIGHTSENSORINIT, &message[0]); + +/* + delay(1000); + display.sendCommand(ST77XX_SLPIN); + // toggle backlight pin + */ + + while(1); } initSequenceSuccess(INITSEQ_HEIGHTSENSORINIT); @@ -92,36 +119,47 @@ void loop() Helper functions for the status display during the initialization sequence */ -// Default font is 5x7, x2 for the current text size -#define initSequenceTextY(which) ((1 + which) * 14) +#define initSequenceTextSize 2 + +// Default font is 5x7 +#define initSequenceTextY(which) ((1 + which) * ((7 + 3) * initSequenceTextSize)) + void initSequenceStart() { display.fillScreen(COLOR_INITSEQ_BACKGROUND); - display.setTextSize(2); + display.setTextSize(initSequenceTextSize); display.setCursor(0, 0); display.setTextColor(COLOR_INITSEQ_TITLE); display.println("Initializing..."); display.setTextColor(COLOR_INITSEQ_ITEMS); - display.println(" reading EEPROM"); - display.println(" height sensor init"); - display.println(" height sensor budget"); - display.println(" height sensor test"); + + display.setCursor(0, initSequenceTextY(0)); + display.print(" reading EEPROM"); + + display.setCursor(0, initSequenceTextY(1)); + display.print(" height sensor"); + + display.setCursor(0, initSequenceTextY(2)); + display.print(" timing budget"); + + display.setCursor(0, initSequenceTextY(3)); + display.print(" sensor test"); } void initSequenceSuccess(uint8_t which) { - display.drawChar(0, initSequenceTextY(which), 'v', COLOR_INITSEQ_SUCCESS, GREEN, 2); + display.drawChar(0, initSequenceTextY(which), 'v', COLOR_INITSEQ_SUCCESS, GREEN, initSequenceTextSize); } void initSequenceError(uint8_t which, const char* message) { - display.drawChar(0, initSequenceTextY(which), 'x', COLOR_INITSEQ_ERROR, COLOR_INITSEQ_ERROR, 2); + display.drawChar(0, initSequenceTextY(which), 'x', COLOR_INITSEQ_ERROR, COLOR_INITSEQ_ERROR, initSequenceTextSize); display.setCursor(0, initSequenceTextY(INITSEQ_MAX + 2)); display.print(message);