Skip to content

Commit 255e6b5

Browse files
committed
Improved version and compatible to latest BlueDisplay
1 parent c634bd5 commit 255e6b5

25 files changed

+715
-307
lines changed

src/ADCUtils.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@
2929
#if defined(__AVR__) && defined(ADCSRA) && defined(ADATE) && (!defined(__AVR_ATmega4809__))
3030
#define ADC_UTILS_ARE_AVAILABLE
3131

32+
// External Reference Current is 150 uA for 5 V and 100 uA for 3.5 V
33+
#define READING_FOR_AREF 1024L // Datasheet 24.2: The minimum value represents GND and the maximum value represents the voltage on the AREF pin minus 1 LSB
34+
3235
// PRESCALE4 => 13 * 4 = 52 microseconds per ADC conversion at 1 MHz Clock => 19,2 kHz
3336
#define ADC_PRESCALE2 1 // 26 microseconds per ADC conversion at 1 MHz
3437
#define ADC_PRESCALE4 2 // 52 microseconds per ADC conversion at 1 MHz

src/ADCUtils.hpp

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
#include "ADCUtils.h"
2929
#if defined(ADC_UTILS_ARE_AVAILABLE) // set in ADCUtils.h, if supported architecture was detected
3030

31-
#if !defined(STR_HELPER)
31+
#if !defined(STR)
3232
#define STR_HELPER(x) #x
3333
#define STR(x) STR_HELPER(x)
3434
#endif
@@ -58,7 +58,7 @@ union WordUnionForADCUtils {
5858
* Enable this to see information on each call.
5959
* Since there should be no library which uses Serial, it should only be enabled for development purposes.
6060
*/
61-
#if defined(DEBUG) && !defined(LOCAL_DEBUG)
61+
#if defined(DEBUG)
6262
#define LOCAL_DEBUG
6363
#else
6464
//#define LOCAL_DEBUG // This enables debug output only for this file
@@ -403,7 +403,7 @@ uint16_t readUntil4ConsecutiveValuesAreEqual(uint8_t aADCChannelNumber, uint8_t
403403
/*
404404
* Get min and max of the last 4 values
405405
*/
406-
tMin = 1024;
406+
tMin = READING_FOR_AREF;
407407
tMax = 0;
408408
for (uint_fast8_t i = 0; i < 4; ++i) {
409409
if (tValues[i] < tMin) {
@@ -472,7 +472,7 @@ uint16_t readUntil4ConsecutiveValuesAreEqual(uint8_t aADCChannelNumber, uint8_t
472472
float getVCCVoltageSimple(void) {
473473
// use AVCC with (optional) external capacitor at AREF pin as reference
474474
float tVCC = readADCChannelMultiSamplesWithReference(ADC_1_1_VOLT_CHANNEL_MUX, DEFAULT, 4);
475-
return ((1023 * 1.1 * 4) / tVCC);
475+
return ((READING_FOR_AREF * 1.1 * 4) / tVCC);
476476
}
477477

478478
/*
@@ -483,19 +483,19 @@ float getVCCVoltageSimple(void) {
483483
uint16_t getVCCVoltageMillivoltSimple(void) {
484484
// use AVCC with external capacitor at AREF pin as reference
485485
uint16_t tVCC = readADCChannelMultiSamplesWithReference(ADC_1_1_VOLT_CHANNEL_MUX, DEFAULT, 4);
486-
return ((1023L * ADC_INTERNAL_REFERENCE_MILLIVOLT * 4) / tVCC);
486+
return ((READING_FOR_AREF * ADC_INTERNAL_REFERENCE_MILLIVOLT * 4) / tVCC);
487487
}
488488

489489
/*
490490
* Gets the hypothetical 14 bit reading of VCC using 1.1 volt reference
491-
* Similar to getVCCVoltageMillivolt() * 1023 / 1100
491+
* Similar to getVCCVoltageMillivolt() * 1024 / 1100
492492
*/
493493
uint16_t getVCCVoltageReadingFor1_1VoltReference(void) {
494494
uint16_t tVCC = waitAndReadADCChannelWithReference(ADC_1_1_VOLT_CHANNEL_MUX, DEFAULT);
495495
/*
496496
* Do not switch back ADMUX to enable checkAndWaitForReferenceAndChannelToSwitch() to work correctly for the next measurement
497497
*/
498-
return ((1023L * 1023L) / tVCC);
498+
return ((READING_FOR_AREF * READING_FOR_AREF) / tVCC);
499499
}
500500

501501
/*
@@ -519,7 +519,7 @@ uint16_t getVCCVoltageMillivolt(void) {
519519
/*
520520
* Do not switch back ADMUX to enable checkAndWaitForReferenceAndChannelToSwitch() to work correctly for the next measurement
521521
*/
522-
return ((1023L * ADC_INTERNAL_REFERENCE_MILLIVOLT) / tVCC);
522+
return ((READING_FOR_AREF * ADC_INTERNAL_REFERENCE_MILLIVOLT) / tVCC);
523523
}
524524

525525
/*
@@ -547,7 +547,7 @@ void readAndPrintVCCVoltageMillivolt(Print *aSerial) {
547547
void readVCCVoltageSimple(void) {
548548
// use AVCC with (optional) external capacitor at AREF pin as reference
549549
float tVCC = readADCChannelMultiSamplesWithReference(ADC_1_1_VOLT_CHANNEL_MUX, DEFAULT, 4);
550-
sVCCVoltage = (1023 * (((float) ADC_INTERNAL_REFERENCE_MILLIVOLT) / 1000) * 4) / tVCC;
550+
sVCCVoltage = (READING_FOR_AREF * (((float) ADC_INTERNAL_REFERENCE_MILLIVOLT) / 1000) * 4) / tVCC;
551551
}
552552

553553
/*
@@ -558,7 +558,7 @@ void readVCCVoltageSimple(void) {
558558
void readVCCVoltageMillivoltSimple(void) {
559559
// use AVCC with external capacitor at AREF pin as reference
560560
uint16_t tVCCVoltageMillivoltRaw = readADCChannelMultiSamplesWithReference(ADC_1_1_VOLT_CHANNEL_MUX, DEFAULT, 4);
561-
sVCCVoltageMillivolt = (1023L * ADC_INTERNAL_REFERENCE_MILLIVOLT * 4) / tVCCVoltageMillivoltRaw;
561+
sVCCVoltageMillivolt = (READING_FOR_AREF * ADC_INTERNAL_REFERENCE_MILLIVOLT * 4) / tVCCVoltageMillivoltRaw;
562562
}
563563

564564
/*
@@ -579,7 +579,7 @@ void readVCCVoltageMillivolt(void) {
579579
/*
580580
* Do not switch back ADMUX to enable checkAndWaitForReferenceAndChannelToSwitch() to work correctly for the next measurement
581581
*/
582-
sVCCVoltageMillivolt = (1023L * ADC_INTERNAL_REFERENCE_MILLIVOLT) / tVCCVoltageMillivoltRaw;
582+
sVCCVoltageMillivolt = (READING_FOR_AREF * ADC_INTERNAL_REFERENCE_MILLIVOLT) / tVCCVoltageMillivoltRaw;
583583
}
584584

585585
/*
@@ -588,7 +588,7 @@ void readVCCVoltageMillivolt(void) {
588588
*/
589589
uint16_t getVoltageMillivolt(uint16_t aVCCVoltageMillivolt, uint8_t aADCChannelForVoltageMeasurement) {
590590
uint16_t tInputVoltageRaw = waitAndReadADCChannelWithReference(aADCChannelForVoltageMeasurement, DEFAULT);
591-
return (aVCCVoltageMillivolt * (uint32_t) tInputVoltageRaw) / 1023;
591+
return (aVCCVoltageMillivolt * (uint32_t) tInputVoltageRaw) / READING_FOR_AREF;
592592
}
593593

594594
/*
@@ -597,16 +597,18 @@ uint16_t getVoltageMillivolt(uint16_t aVCCVoltageMillivolt, uint8_t aADCChannelF
597597
*/
598598
uint16_t getVoltageMillivolt(uint8_t aADCChannelForVoltageMeasurement) {
599599
uint16_t tInputVoltageRaw = waitAndReadADCChannelWithReference(aADCChannelForVoltageMeasurement, DEFAULT);
600-
return (getVCCVoltageMillivolt() * (uint32_t) tInputVoltageRaw) / 1023;
600+
return (getVCCVoltageMillivolt() * (uint32_t) tInputVoltageRaw) / READING_FOR_AREF;
601601
}
602602

603603
uint16_t getVoltageMillivoltWith_1_1VoltReference(uint8_t aADCChannelForVoltageMeasurement) {
604604
uint16_t tInputVoltageRaw = waitAndReadADCChannelWithReference(aADCChannelForVoltageMeasurement, INTERNAL);
605-
return (ADC_INTERNAL_REFERENCE_MILLIVOLT * (uint32_t) tInputVoltageRaw) / 1023;
605+
return (ADC_INTERNAL_REFERENCE_MILLIVOLT * (uint32_t) tInputVoltageRaw) / READING_FOR_AREF;
606606
}
607607

608608
/*
609609
* Return true if sVCCVoltageMillivolt is > 4.3 V and < 4.95 V
610+
* This does not really work for the UNO board, because it has no series Diode in the USB VCC
611+
* and therefore a very low voltage drop.
610612
*/
611613
bool isVCCUSBPowered() {
612614
readVCCVoltageMillivolt();

src/AutonomousDrive.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -288,10 +288,10 @@ void driveCollisonAvoidingOneStep() {
288288

289289
#if !defined(ENABLE_USER_PROVIDED_COLLISION_DETECTION)
290290
if (sCurrentPage == PAGE_AUTOMATIC_CONTROL) {
291-
char tStringBuffer[6];
292-
sprintf_P(tStringBuffer, PSTR("%2d%s"), sCentimetersDrivenPerScan, "cm/scan");
291+
char tString[11];
292+
snprintf_P(tString, sizeof(tString), PSTR("%2d%s"), sCentimetersDrivenPerScan, "cm/scan");
293293
BlueDisplay1.drawText(TEXT_SIZE_11_WIDTH, BUTTON_HEIGHT_4_LINE_4 - TEXT_SIZE_11_HEIGHT - TEXT_SIZE_11_DECEND,
294-
tStringBuffer, TEXT_SIZE_11, COLOR16_BLACK, COLOR16_WHITE);
294+
tString, TEXT_SIZE_11, COLOR16_BLACK, COLOR16_WHITE);
295295
}
296296
#endif
297297
}

src/AutonomousDrivePage.hpp

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,15 @@ BDButton TouchButtonStepMode;
3131
const char sStepModeButtonStringContinuousStepToTurn[] PROGMEM = "Continuous\n->\nStep to turn";
3232
const char sStepModeButtonStringStepToTurnSingleStep[] PROGMEM = "Step to turn\n->\nSingle step";
3333
const char sStepModeButtonStringSingleStepContinuous[] PROGMEM = "Single step\n->\nContinuous";
34-
const char *const sStepModeButtonCaptionStringArray[] PROGMEM = { sStepModeButtonStringContinuousStepToTurn,
34+
const char *const sStepModeButtonTextStringArray[] PROGMEM = { sStepModeButtonStringContinuousStepToTurn,
3535
sStepModeButtonStringStepToTurnSingleStep, sStepModeButtonStringSingleStepContinuous };
3636

3737
#if defined(ENABLE_DISTANCE_FEEDBACK_MODE)
3838
BDButton TouchButtonDistanceFeedbackMode;
3939
const char sDistanceFeedbackModeNoTone[] PROGMEM = "No tone";
4040
const char sDistanceFeedbackModePentatonic[] PROGMEM = "Pentatonic";
4141
const char sDistanceFeedbackModeContinuous[] PROGMEM = "Continuous";
42-
const char *const sDistanceFeedbackModeButtonCaptionStringArray[] PROGMEM = { sDistanceFeedbackModeNoTone,
42+
const char *const sDistanceFeedbackModeButtonTextStringArray[] PROGMEM = { sDistanceFeedbackModeNoTone,
4343
sDistanceFeedbackModePentatonic, sDistanceFeedbackModeContinuous };
4444
#endif
4545

@@ -57,13 +57,13 @@ const char sDistanceSourceModeButtonStringMaxUS[] PROGMEM = "Max->US";
5757
# if defined(CAR_HAS_IR_DISTANCE_SENSOR)
5858
const char sDistanceSourceModeButtonStringUSIr[] PROGMEM = "US->IR";
5959
const char sDistanceSourceModeButtonStringIrMin[] PROGMEM = "IR->Min";
60-
const char *const sDistanceSourceModeButtonCaptionStringArray[] PROGMEM = { sDistanceSourceModeButtonStringMinMax,
60+
const char *const sDistanceSourceModeButtonTextStringArray[] PROGMEM = { sDistanceSourceModeButtonStringMinMax,
6161
sDistanceSourceModeButtonStringMaxUS, sDistanceSourceModeButtonStringUSIr, sDistanceSourceModeButtonStringIrMin };
6262
# else
6363
const char sDistanceSourceModeButtonStringUSTof[] PROGMEM = "US->ToF";
6464
const char sDistanceSourceModeButtonStringTofMin[] PROGMEM = "ToF->Min";
6565

66-
const char * const sDistanceSourceModeButtonCaptionStringArray[] PROGMEM = { sDistanceSourceModeButtonStringMinMax, sDistanceSourceModeButtonStringMaxUS,
66+
const char * const sDistanceSourceModeButtonTextStringArray[] PROGMEM = { sDistanceSourceModeButtonStringMinMax, sDistanceSourceModeButtonStringMaxUS,
6767
sDistanceSourceModeButtonStringUSTof, sDistanceSourceModeButtonStringTofMin};
6868
# endif
6969
#endif
@@ -75,8 +75,8 @@ BDButton TouchButtonStartStopBuiltInAutonomousDrive;
7575
BDButton TouchButtonFollower;
7676

7777
#if defined(ENABLE_DISTANCE_FEEDBACK_MODE)
78-
void setDistanceFeedbackModeButtonCaption() {
79-
TouchButtonDistanceFeedbackMode.setCaptionFromStringArrayPGM(sDistanceFeedbackModeButtonCaptionStringArray, sDistanceFeedbackMode, true);
78+
void setDistanceFeedbackModeButtonText() {
79+
TouchButtonDistanceFeedbackMode.setTextFromStringArrayPGM(sDistanceFeedbackModeButtonTextStringArray, sDistanceFeedbackMode, true);
8080
}
8181

8282
#pragma GCC diagnostic ignored "-Wunused-parameter"
@@ -86,12 +86,12 @@ void doNextDistanceFeedbackMode(BDButton *aTheTouchedButton, int16_t aValue) {
8686
sDistanceFeedbackMode = DISTANCE_FEEDBACK_NO_TONE;
8787
noTone(BUZZER_PIN);
8888
}
89-
setDistanceFeedbackModeButtonCaption();
89+
setDistanceFeedbackModeButtonText();
9090
}
9191
#endif
9292

93-
void setStepModeButtonCaption() {
94-
TouchButtonStepMode.setCaptionFromStringArray((const __FlashStringHelper* const*) sStepModeButtonCaptionStringArray, sStepMode, (sCurrentPage == PAGE_AUTOMATIC_CONTROL));
93+
void setStepModeButtonText() {
94+
TouchButtonStepMode.setTextFromStringArray((const __FlashStringHelper* const*) sStepModeButtonTextStringArray, sStepMode, (sCurrentPage == PAGE_AUTOMATIC_CONTROL));
9595
}
9696

9797
/*
@@ -105,7 +105,7 @@ void setStepMode(uint8_t aStepMode) {
105105
sDoStep = true;
106106
}
107107
sStepMode = aStepMode;
108-
setStepModeButtonCaption();
108+
setStepModeButtonText();
109109
}
110110

111111
#pragma GCC diagnostic ignored "-Wunused-parameter"
@@ -132,16 +132,16 @@ void doStep(BDButton *aTheTouchedButton, int16_t aValue) {
132132
}
133133

134134
#if defined(CAR_HAS_IR_DISTANCE_SENSOR) || defined(CAR_HAS_TOF_DISTANCE_SENSOR)
135-
void setScanModeButtonCaption() {
136-
TouchButtonScanMode.setCaptionFromStringArray(sDistanceSourceModeButtonCaptionStringArray, sDistanceSourceMode);
135+
void setScanModeButtonText() {
136+
TouchButtonScanMode.setTextFromStringArray(sDistanceSourceModeButtonTextStringArray, sDistanceSourceMode);
137137
}
138138

139139
void doDistanceSourceMode(BDButton *aTheTouchedButton, int16_t aValue) {
140140
sDistanceSourceMode++;
141141
if (sDistanceSourceMode > DISTANCE_LAST_SOURCE_MODE) {
142142
sDistanceSourceMode = DISTANCE_SOURCE_MODE_MINIMUM;
143143
}
144-
setScanModeButtonCaption();
144+
setScanModeButtonText();
145145
TouchButtonScanMode.drawButton();
146146
}
147147

@@ -203,7 +203,7 @@ void initAutonomousDrivePage(void) {
203203

204204
TouchButtonScanSpeed.init(0, BUTTON_HEIGHT_6_LINE_4, BUTTON_WIDTH_3_5, BUTTON_HEIGHT_8, COLOR16_BLACK, F("Scan slow"), TEXT_SIZE_14,
205205
FLAG_BUTTON_DO_BEEP_ON_TOUCH | FLAG_BUTTON_TYPE_TOGGLE_RED_GREEN, false, &doChangeScanSpeed);
206-
TouchButtonScanSpeed.setCaptionForValueTrue("Scan fast");
206+
TouchButtonScanSpeed.setTextForValueTrue("Scan fast");
207207

208208
#if defined(ENABLE_PATH_INFO_PAGE)
209209
TouchButtonPathInfoPage.init(BUTTON_WIDTH_3_POS_3, 0, BUTTON_WIDTH_3, BUTTON_HEIGHT_6, COLOR16_RED, F("Show Path"), TEXT_SIZE_11,
@@ -217,7 +217,7 @@ void initAutonomousDrivePage(void) {
217217
BUTTON_WIDTH_3, TEXT_SIZE_22_HEIGHT, COLOR16_RED, F("Start User"), TEXT_SIZE_14,
218218
FLAG_BUTTON_DO_BEEP_ON_TOUCH | FLAG_BUTTON_TYPE_TOGGLE_RED_GREEN, (sDriveMode == MODE_COLLISION_AVOIDING_USER),
219219
&doStartStopTestUser);
220-
TouchButtonStartStopUserAutonomousDrive.setCaptionForValueTrue(F("Stop User"));
220+
TouchButtonStartStopUserAutonomousDrive.setTextForValueTrue(F("Stop User"));
221221
#endif
222222

223223
#if defined(ENABLE_DISTANCE_FEEDBACK_MODE)
@@ -238,12 +238,12 @@ void initAutonomousDrivePage(void) {
238238
TouchButtonStartStopBuiltInAutonomousDrive.init(0, BUTTON_HEIGHT_4_LINE_4, BUTTON_WIDTH_3, BUTTON_HEIGHT_4, COLOR16_RED,
239239
F("Start\nBuiltin"), TEXT_SIZE_22, FLAG_BUTTON_DO_BEEP_ON_TOUCH | FLAG_BUTTON_TYPE_TOGGLE_RED_GREEN,
240240
(sDriveMode == MODE_COLLISION_AVOIDING_BUILTIN), &doStartStopAutomomousDrive);
241-
TouchButtonStartStopBuiltInAutonomousDrive.setCaptionForValueTrue(F("Stop"));
241+
TouchButtonStartStopBuiltInAutonomousDrive.setTextForValueTrue(F("Stop"));
242242

243243
TouchButtonFollower.init(BUTTON_WIDTH_3_POS_2, BUTTON_HEIGHT_4_LINE_4, BUTTON_WIDTH_3, BUTTON_HEIGHT_4,
244244
COLOR16_RED, F("Start\nFollow"), TEXT_SIZE_22, FLAG_BUTTON_DO_BEEP_ON_TOUCH | FLAG_BUTTON_TYPE_TOGGLE_RED_GREEN,
245245
(sDriveMode == MODE_FOLLOWER), &doStartStopFollowerMode);
246-
TouchButtonFollower.setCaptionForValueTrue(F("Stop\nFollow"));
246+
TouchButtonFollower.setTextForValueTrue(F("Stop\nFollow"));
247247
}
248248

249249
void drawAutonomousDrivePage(void) {
@@ -288,12 +288,12 @@ void startAutonomousDrivePage(void) {
288288
handleAutomomousDriveRadioButtons();
289289

290290
// restore last step and scan mode
291-
setStepModeButtonCaption();
291+
setStepModeButtonText();
292292
#if defined(CAR_HAS_IR_DISTANCE_SENSOR) || defined(CAR_HAS_TOF_DISTANCE_SENSOR)
293-
setScanModeButtonCaption();
293+
setScanModeButtonText();
294294
#endif
295295
#if defined(ENABLE_DISTANCE_FEEDBACK_MODE)
296-
setDistanceFeedbackModeButtonCaption();
296+
setDistanceFeedbackModeButtonText();
297297
#endif
298298
#if defined(ENABLE_PATH_INFO_PAGE)
299299
#define SLIDER_SHIFTED_Y_POS BUTTON_HEIGHT_6
@@ -309,9 +309,11 @@ void startAutonomousDrivePage(void) {
309309
SliderIROrTofDistance.setPosition(POS_X_DISTANCE_POSITION_SLIDER - (TEXT_SIZE_11_WIDTH + BUTTON_WIDTH_10), SLIDER_SHIFTED_Y_POS);
310310
#endif
311311
drawAutonomousDrivePage();
312+
#if defined(VIN_ATTENUATED_INPUT_PIN)
312313
if(!isPWMCalibrated) {
313314
calibrateDriveSpeedPWMAndPrint();
314315
}
316+
#endif
315317
}
316318

317319
// currently not used
@@ -367,11 +369,11 @@ void drawCollisionDecision(int aDegreeToTurn, uint8_t aLengthOfVector, bool aDoC
367369
}
368370

369371
// draw blue (red if backwards) rotation line. The default length is sCentimetersDrivenPerScan
370-
BlueDisplay1.drawVectorDegrees(US_DISTANCE_MAP_ORIGIN_X, US_DISTANCE_MAP_ORIGIN_Y, aLengthOfVector, tDegreeToDisplay + 90,
372+
BlueDisplay1.drawVectorDegree(US_DISTANCE_MAP_ORIGIN_X, US_DISTANCE_MAP_ORIGIN_Y, aLengthOfVector, tDegreeToDisplay + 90,
371373
tColor);
372374
if (!aDoClearVector) {
373375
//Print result
374-
sprintf_P(sBDStringBuffer, PSTR("wall%4d\xB0 rotation: %3d\xB0 wall%4d\xB0"), sForwardDistancesInfo.WallLeftAngleDegrees,
376+
snprintf_P(sBDStringBuffer, sizeof(sBDStringBuffer), PSTR("wall%4d\xB0 rotation: %3d\xB0 wall%4d\xB0"), sForwardDistancesInfo.WallLeftAngleDegrees,
375377
aDegreeToTurn, sForwardDistancesInfo.WallRightAngleDegrees); // \xB0 is degree character
376378
BlueDisplay1.drawText(BUTTON_WIDTH_3_5_POS_2, US_DISTANCE_MAP_ORIGIN_Y + TEXT_SIZE_11, sBDStringBuffer, TEXT_SIZE_11,
377379
COLOR16_BLACK, COLOR16_WHITE);

src/BTSensorDrivePage.hpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ void doSensorChange(uint8_t aSensorType, struct SensorCallback *aSensorCallbackI
134134
tDirectionForward, SPEED_DEAD_BAND);
135135

136136
//Print speedPWM as value of bottom slider
137-
sprintf(sBDStringBuffer, "%3d", tForwardBackwardValue);
137+
snprintf(sBDStringBuffer, sizeof(sBDStringBuffer), "%3d", tForwardBackwardValue);
138138
SliderBackward.printValue(sBDStringBuffer);
139139

140140
/*
@@ -199,7 +199,7 @@ void doSensorChange(uint8_t aSensorType, struct SensorCallback *aSensorCallbackI
199199
/*
200200
* Print speedPWM as value of bottom slider
201201
*/
202-
sprintf(sBDStringBuffer, "%4d", tSpeedPWMValue);
202+
snprintf(sBDStringBuffer, sizeof(sBDStringBuffer), "%4d", tSpeedPWMValue);
203203
SliderBackward.printValue(sBDStringBuffer);
204204
if (tSpeedPWMValue < 0) {
205205
tLeftRightValue = -tLeftRightValue;
@@ -221,13 +221,13 @@ void initBTSensorDrivePage(void) {
221221
// Position Slider at middle of screen
222222
// Top/forward slider
223223
SliderForward.init(SENSOR_SLIDER_CENTER_X, (SENSOR_SLIDER_CENTER_Y - VERTICAL_SLIDER_LENTGH), SENSOR_SLIDER_WIDTH,
224-
VERTICAL_SLIDER_LENTGH, SLIDER_SPEED_THRESHOLD, 0, SLIDER_BACKGROUND_COLOR, SLIDER_BAR_COLOR, FLAG_SLIDER_IS_ONLY_OUTPUT, NULL);
224+
VERTICAL_SLIDER_LENTGH, SLIDER_SPEED_THRESHOLD, 0, SLIDER_BACKGROUND_COLOR, SLIDER_BAR_COLOR, FLAG_SLIDER_IS_ONLY_OUTPUT, nullptr);
225225

226226
// SliderForward.setBarThresholdColor(SLIDER_THRESHOLD_COLOR);
227227

228228
// Bottom/backward slider
229229
SliderBackward.init(SENSOR_SLIDER_CENTER_X, SENSOR_SLIDER_CENTER_Y, SENSOR_SLIDER_WIDTH, -(VERTICAL_SLIDER_LENTGH),
230-
SLIDER_SPEED_THRESHOLD, 0, SLIDER_BACKGROUND_COLOR, SLIDER_BAR_COLOR, FLAG_SLIDER_IS_ONLY_OUTPUT, NULL);
230+
SLIDER_SPEED_THRESHOLD, 0, SLIDER_BACKGROUND_COLOR, SLIDER_BAR_COLOR, FLAG_SLIDER_IS_ONLY_OUTPUT, nullptr);
231231

232232
// SliderBackward.setBarThresholdColor(SLIDER_THRESHOLD_COLOR);
233233
SliderForward.setScaleFactor((float) MAX_SPEED_PWM / (float) VERTICAL_SLIDER_LENTGH);
@@ -238,13 +238,13 @@ void initBTSensorDrivePage(void) {
238238
// Position slider right from at middle of screen
239239
SliderRight.init(SENSOR_SLIDER_CENTER_X + SENSOR_SLIDER_WIDTH, SENSOR_SLIDER_CENTER_Y - (SENSOR_SLIDER_WIDTH / 2),
240240
SENSOR_SLIDER_WIDTH, HORIZONTAL_SLIDER_LENTGH, SLIDER_LEFT_RIGHT_THRESHOLD, 0, SLIDER_BACKGROUND_COLOR, SLIDER_BAR_COLOR,
241-
FLAG_SLIDER_IS_HORIZONTAL | FLAG_SLIDER_IS_ONLY_OUTPUT | FLAG_SLIDER_SHOW_VALUE, NULL);
241+
FLAG_SLIDER_IS_HORIZONTAL | FLAG_SLIDER_IS_ONLY_OUTPUT | FLAG_SLIDER_SHOW_VALUE, nullptr);
242242
// SliderRight.setBarThresholdColor(SLIDER_THRESHOLD_COLOR);
243243

244244
// Position inverse slider left from at middle of screen
245245
SliderLeft.init(SENSOR_SLIDER_CENTER_X - HORIZONTAL_SLIDER_LENTGH, SENSOR_SLIDER_CENTER_Y - (SENSOR_SLIDER_WIDTH / 2),
246246
SENSOR_SLIDER_WIDTH, -(HORIZONTAL_SLIDER_LENTGH), SLIDER_LEFT_RIGHT_THRESHOLD, 0, SLIDER_BACKGROUND_COLOR,
247-
SLIDER_BAR_COLOR, FLAG_SLIDER_IS_HORIZONTAL | FLAG_SLIDER_IS_ONLY_OUTPUT | FLAG_SLIDER_SHOW_VALUE, NULL);
247+
SLIDER_BAR_COLOR, FLAG_SLIDER_IS_HORIZONTAL | FLAG_SLIDER_IS_ONLY_OUTPUT | FLAG_SLIDER_SHOW_VALUE, nullptr);
248248
// SliderLeft.setBarThresholdColor(SLIDER_THRESHOLD_COLOR);
249249
SliderRight.setScaleFactor(1.2);
250250
SliderLeft.setScaleFactor(1.2);
@@ -268,7 +268,7 @@ void drawBTSensorDrivePage(void) {
268268
}
269269

270270
void startBTSensorDrivePage(void) {
271-
doReset(NULL, 0);
271+
doReset(nullptr, 0);
272272
drawBTSensorDrivePage();
273273
}
274274

0 commit comments

Comments
 (0)