Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
118 commits
Select commit Hold shift + click to select a range
bfd68a0
Simon's cleanup based on Tony's original codebase (no code changes)
techfoundrynz Jul 22, 2023
8f94555
Allow power-on while charging
surfdado Aug 23, 2023
f4a5524
remove_comments
surfdado Aug 23, 2023
595b01e
Simon's rainbow boot
surfdado Aug 23, 2023
6068758
Lights off by default, dimmer when idle
surfdado Sep 6, 2023
8d02471
Better defaults: 90% duty beep, 4sec boot time, 10min shutdown
surfdado Sep 6, 2023
681b52a
Remove eeprom.c
surfdado Sep 6, 2023
da258e5
Try to get data from float package instead of GET_VALUES
surfdado Sep 6, 2023
42fe64f
Status bar light patterns improved/extended
surfdado Oct 26, 2023
b9a42bb
Allow headlight control via external apps
surfdado Oct 26, 2023
30975bd
ws2812fix
surfdado Oct 28, 2023
4ce2c98
Configurable duty cycle beep
surfdado Oct 28, 2023
cd68aba
Attempt to show 2 red LEDs when board is disabled (+tamper buzz)
surfdado Oct 28, 2023
869f7c7
project_files_lineendingswarning
surfdado Oct 28, 2023
273753a
Simplify power level display code
surfdado Oct 29, 2023
b0f8da9
Make Duty Cycle an Integer
surfdado Oct 29, 2023
3dec2ff
Power Level Calculation refactor
surfdado Oct 29, 2023
e155992
Simplified Headlights Code
surfdado Oct 29, 2023
9f0b6a8
Further cleanup of status bar behavior
surfdado Oct 30, 2023
0c0ecc4
Further cleanup of status bar behavior
surfdado Oct 30, 2023
0563496
remove_local_project_settings_file
surfdado Oct 30, 2023
bf232dd
Fix shutdown / charge state
surfdado Oct 30, 2023
73207b1
cleanup of comments in flag_bit.c
surfdado Nov 2, 2023
ec0d9e9
WS2812 cleanup / added handtest mode
surfdado Nov 2, 2023
64296c8
Attempt to make charge/power down when unplugging work again
surfdado Nov 2, 2023
7bd63a8
Status bar tweaks, new red-white-blue boot animation
surfdado Nov 2, 2023
44596dc
Send debug info via separate FLOAT COMMAND
surfdado Nov 5, 2023
eec8f37
Revert "Attempt to make charge/power down when unplugging work again"
surfdado Nov 15, 2023
5f52709
Turn lights off completely when stopped
surfdado Nov 15, 2023
6b7fe97
Fix charge behavior in all power states
surfdado Nov 15, 2023
643412f
Cleanup, now that it all seems to be working
surfdado Nov 16, 2023
ab5c228
shutdown sequence, ramping headlights, cleanup
surfdado Nov 16, 2023
e559556
Support for DG40/P42a cells
surfdado Nov 19, 2023
837d026
Increase red/white switchover time, some color tweaks
surfdado Dec 2, 2023
04b135d
Proper support for charge-end state
surfdado Dec 2, 2023
21d6ec5
Another failed attempt at fading headlights
surfdado Dec 26, 2023
0dbdf8a
Temporarily show new brightness when switching via double-clilck
surfdado Dec 26, 2023
6a3675a
Bugfix for stuck buzzer on brightness switch
surfdado Dec 26, 2023
6abf662
Array access fixup
surfdado Dec 27, 2023
9beeefe
Reverse headlight logic for turning off lights
surfdado Dec 27, 2023
a53b914
finish implementing necessary LCM control. Allow controlled/uncontrol…
techfoundrynz Jan 15, 2024
7e2bb08
Float lcm protocol (#8)
techfoundrynz Jan 19, 2024
1deb7fd
Add cutoff config and charge state reporting
techfoundrynz Jan 21, 2024
d78260c
Remove unneeded cutoff check
techfoundrynz Jan 22, 2024
81c0dfa
v2.0 - lighting mods, charge cmd with magic.nr
surfdado Jan 24, 2024
8aaa819
Boot LEDs were too dim
surfdado Jan 25, 2024
5de9383
Smooth fading of headlights finally working
surfdado Jan 25, 2024
498dc8c
Move lcm config reset to power on for charge cutoff
techfoundrynz Jan 25, 2024
a67f1c8
Make debug flag configurable through commands so reflashing isn't nee…
techfoundrynz Jan 24, 2024
57d00ae
Lighting tweaks
surfdado Jan 28, 2024
387df4e
Buzzer is acting up - disable it permanently for now
surfdado Jan 28, 2024
87d0fde
Don't show charging finish LEDs prematurely
surfdado Jan 29, 2024
861e091
Updated gitignore for mac users
etiennecollin Feb 7, 2024
d53bcc9
Made flash script interactive
etiennecollin Feb 7, 2024
9141985
Ignore .hex files
etiennecollin Feb 7, 2024
58636fc
Updated "pyocd not found" message
etiennecollin Feb 7, 2024
89e4daa
v2.0.1: reset headlights to forward on idle, duty > 70% only
surfdado Feb 12, 2024
5cb5e14
Fix out-of-bounds bootAnimation check
albertonoys Mar 21, 2024
7abd52c
Update flash.bat to be more user friendly
albertonoys Feb 12, 2024
21c6a75
Add blank lines for ease of reading
albertonoys Feb 12, 2024
59cf24b
vesc_uasrt: Fix compile error
jackrosenthal Mar 3, 2024
d29422d
Improve status bar
surfdado Mar 28, 2024
a6dbe59
Attempt to eliminate the occasional headlight flare-ups
surfdado Mar 28, 2024
ee7afca
Another attempt to fix premature charging ended lights
surfdado Mar 28, 2024
7d0ff41
Turn off the idle headlights when the board is upgright
surfdado Mar 28, 2024
12d5462
v2.0.3: fix duty LEDs and some small fixes
surfdado Apr 9, 2024
77eb842
Fix st-link command not working on Windows
albertonoys Apr 26, 2024
3ab2dcf
Add knight rider animation and add more uart commands and fixes
techfoundrynz Jun 18, 2024
42aa455
Fix character mangling
techfoundrynz Jun 18, 2024
6645134
Charge LEDs: try to further eliminate false positive charge-end LEDs
surfdado Jun 18, 2024
fecbef1
Idle mode: hybrid mode showing battery percentage and Knight Rider
surfdado Jun 18, 2024
1e546bb
Reduce memory footprint, simplify functionality
surfdado Jul 6, 2024
f090853
GTV support (18s instead of 20s)
surfdado Jul 6, 2024
a0cae63
Another attempt to make code more robust
surfdado Jul 18, 2024
6aeb660
prevent_timer_overflow
surfdado Oct 22, 2024
0f48cec
distinguish XRV/GTV/ADV
surfdado Oct 22, 2024
d256f6a
eliminate extra shutdown avenues
surfdado Oct 22, 2024
2b3fb39
Increase UART Buffer size
surfdado Oct 26, 2024
69af25a
Don't show Knight Rider when connected to an obsolete Float package
surfdado Oct 26, 2024
e9df420
Add defensive checks to UART processing and remove system reset in fa…
tcm0116 Nov 4, 2024
5216f51
Add PINTV
tcm0116 Nov 5, 2024
81c7b09
Re-enable buzzer
tcm0116 Nov 5, 2024
10c7bd0
Re-enable duty cycle display on status bar
surfdado Nov 6, 2024
a1d25a7
Faster boot time, 10min auto shutdown
surfdado Oct 26, 2024
51138cf
Increment version to 2.1.3
surfdado Nov 6, 2024
bc45281
Correct ind, len and pdata to match the sent packet size
michalmo Nov 6, 2024
fd5e1da
v2.1.4
surfdado Nov 6, 2024
6ed7055
Remove isOldPackage flag
surfdado Nov 12, 2024
83c4f33
v2.1.5
surfdado Nov 12, 2024
88909b8
Flywheel led pattern improvements
surfdado Nov 14, 2024
a868ff6
Cell Type Sony VTC6 for PintV/XRV
surfdado Nov 14, 2024
0a7a0a1
Convert uVision project to CMSIS - generated by uv2csolution@1.5.0
Nov 7, 2024
e78dcca
Configure debug / release target types
Nov 7, 2024
ce1eba5
Update .gitignore
Nov 7, 2024
bb56763
Add VSCode .code-workspace / extension reccomendation
Nov 7, 2024
1f1508c
Generate .hex output
Nov 7, 2024
9ca4eb5
Add README
Nov 7, 2024
703fc8c
Add individual build targets for ADV,GTV,PINTV,XRV - debug/release
Nov 7, 2024
97d8ae4
optimize: size for release build type - Fix ADV.Release target
Nov 7, 2024
efb9b2a
Remove unnecessary .code-workspace file / update README
Nov 7, 2024
efa696e
FIRMWARE_ID - Versioning handled by single string in csolution instea…
Nov 8, 2024
8388a37
Fix testing code / FIRMWARE_VERSION to FIRMWARE_ID in csolution
Nov 8, 2024
b865194
Update README
Nov 8, 2024
d3aa50f
Add build scripts
Nov 9, 2024
243d7e2
Add .vscode/settings.json to .gitignore
Nov 13, 2024
b6c95f3
Update README
Nov 14, 2024
7479530
FIRMWARE_ID - Versioning handled by single string in csolution instea…
Nov 8, 2024
81dcccc
Fixing my mistakes - FIRMWARE_VERSION -> FIRMWARE_ID in .csolution
Nov 14, 2024
1dea334
Forgot to version bump 2.1.5 in .csolution
Nov 14, 2024
979f1eb
Add .vscode/settings.json to .gitignore
Nov 15, 2024
2bce531
Added some details to steps in README
surfdado Nov 18, 2024
c20ede8
Implement battery voltages by build target / Split ADV build target
Nov 15, 2024
24460ed
Define P42A/VTC6 for uVision too
surfdado Nov 18, 2024
223e126
Add uVISION define when building
surfdado Nov 18, 2024
5c7ca8d
Beep when powering off
tcm0116 Nov 16, 2024
1b8dbf4
Don't power down on power on if button is held
tcm0116 Nov 16, 2024
51e7cb9
v2.1.6
surfdado Nov 18, 2024
8ede7ce
rainbow boot + rainbow idle animation
GeneiusK Dec 4, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
.DS_Store
*.hex

.vscode/settings.json

LCM/Project/MDK5/Objects/
LCM/Project/MDK5/LCM_Light_Control_IO_WS2812_New.uvguix.*
LCM/Project/MDK5/Listings/

.vscode/settings.json

LCM/Project/MDK5/out/
LCM/Project/MDK5/tmp/

LCM/Project/MDK5/.clangd
LCM/Project/MDK5/LCM_Light_Control_IO_WS2812_New.cbuild-idx.yml
LCM/Project/MDK5/LCM_Light_Control_IO_WS2812_New.cbuild-set.yml
LCM/Project/MDK5/LCM_Light_Control_IO_WS2812_New*.cbuild.yml
Binary file added Docs/P42ADG40.xlsx
Binary file not shown.
Binary file added Docs/VESC_LED_Controller_V3.4.pdf
Binary file not shown.
Binary file added Docs/lcm-arm-cmsis-vscode.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
45 changes: 45 additions & 0 deletions LCM/.gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
###############################
# Git Line Endings #
###############################

# Set default behaviour to automatically normalize line endings.
* text=auto

# Force batch scripts to always use CRLF line endings so that if a repo is accessed
# in Windows via a file share from Linux, the scripts will work.
*.{cmd,[cC][mM][dD]} text eol=crlf
*.{bat,[bB][aA][tT]} text eol=crlf

# Force bash scripts to always use LF line endings so that if a repo is accessed
# in Unix via a file share from Windows, the scripts will work.
*.sh text eol=lf

###############################
# Git Large File System (LFS) #
###############################

# Archives
*.7z filter=lfs diff=lfs merge=lfs -text
*.br filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.tar filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text

# Documents
*.pdf filter=lfs diff=lfs merge=lfs -text
*.xlsx filter=lfs diff=lfs merge=lfs -text

# Images
*.gif filter=lfs diff=lfs merge=lfs -text
*.ico filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.psd filter=lfs diff=lfs merge=lfs -text
*.webp filter=lfs diff=lfs merge=lfs -text

# Fonts
*.woff2 filter=lfs diff=lfs merge=lfs -text

# Other
*.exe filter=lfs diff=lfs merge=lfs -text
76 changes: 76 additions & 0 deletions LCM/Code/App/datatypes.h
Original file line number Diff line number Diff line change
Expand Up @@ -1066,6 +1066,9 @@ typedef enum {
COMM_RESET_STATS,
} COMM_PACKET_ID;

#define COMM_CUSTOM_DEBUG 250
#define COMM_CHARGE_INFO 251

// CAN commands
typedef enum {
CAN_PACKET_SET_DUTY = 0,
Expand Down Expand Up @@ -1334,4 +1337,77 @@ typedef struct __attribute__((packed)) {
uint64_t runtime; // Seconds
} backup_data;

typedef enum {
FLOAT_COMMAND_GET_INFO = 0, // get version / package info
FLOAT_COMMAND_GET_RTDATA = 1, // get rt data
FLOAT_COMMAND_RT_TUNE = 2, // runtime tuning (don't write to eeprom)
FLOAT_COMMAND_TUNE_DEFAULTS = 3,// set tune to defaults (no eeprom)
FLOAT_COMMAND_CFG_SAVE = 4, // save config to eeprom
FLOAT_COMMAND_CFG_RESTORE = 5, // restore config from eeprom
FLOAT_COMMAND_TUNE_OTHER = 6, // make runtime changes to startup/etc
FLOAT_COMMAND_RC_MOVE = 7, // move motor while board is idle
FLOAT_COMMAND_BOOSTER = 8, // change booster settings
FLOAT_COMMAND_PRINT_INFO = 9, // print verbose info
FLOAT_COMMAND_GET_ALLDATA = 10, // send all data, compact
FLOAT_COMMAND_EXPERIMENT = 11, // generic cmd for sending data, used for testing/tuning new features
FLOAT_COMMAND_LOCK = 12,
FLOAT_COMMAND_HANDTEST = 13,
FLOAT_COMMAND_TUNE_TILT = 14,
FLOAT_COMMAND_FLYWHEEL = 22,
FLOAT_COMMAND_HAPTIC = 23,
FLOAT_COMMAND_LCM_POLL = 24,
FLOAT_COMMAND_LCM_CTRL = 25,
FLOAT_COMMAND_LCM_INFO = 26
} float_commands;

typedef enum {
STARTUP = 0,
RUNNING = 1,
RUNNING_TILTBACK = 2,
RUNNING_WHEELSLIP = 3,
RUNNING_UPSIDEDOWN = 4,
RUNNING_FLYWHEEL = 5, // we remain in "RUNNING" state in flywheel mode,
// but then report "RUNNING_FLYWHEEL" in rt data
FAULT_ANGLE_PITCH = 6, // skipped 5 for compatibility
FAULT_ANGLE_ROLL = 7,
FAULT_SWITCH_HALF = 8,
FAULT_SWITCH_FULL = 9,
FAULT_DUTY = 10, // unused but kept for compatibility
FAULT_STARTUP = 11,
FAULT_REVERSE = 12,
FAULT_QUICKSTOP = 13,
DISABLED = 15
} float_state;

typedef enum {
// Core light control
HEADLIGHT_BRIGHTNESS = 0,
HEADLIGHT_IDLE_BRIGHTNESS = 1,
STATUSBAR_BRIGHTNESS = 2,
// Additional light config
STATUS_BAR_IDLE_MODE = 10,
BOOT_ANIMATION = 11,
// Misc config
DUTY_BEEP = 50,
// Sys commands
POWER_OFF = 100,
CHARGE_CUTOFF = 101,
AUTO_SHUTDOWN = 102,
FACTORY_RESET = 200,
DEBUG = 255,
} control_commands;

typedef enum {
BOOT_DEFAULT = 0,
BOOT_REDWHITEBLUE = 1,
BOOT_RAINBOW = 2,
} BootAnimation;

typedef enum {
IDLE_MODE_HYBRID = 0,
IDLE_MODE_BATTERY = 1,
IDLE_MODE_KNIGHT_RIDER = 2,
} StatusBarIdleMode;


#endif /* DATATYPES_H_ */
120 changes: 44 additions & 76 deletions LCM/Code/App/flag_bit.c
Original file line number Diff line number Diff line change
@@ -1,50 +1,32 @@
#include "flag_bit.h"

/*
Power_Flag = 0; ���ϵ�
Power_Flag = 1��VESC����
Power_Flag = 2; VESC�������
Power_Flag = 3; VESC�ػ�������������ӹ���
Power_Flag = 0; Just powered on.
Power_Flag = 1; VESC booting up.
Power_Flag = 2; VESC boot-up completed.
Power_Flag = 3; VESC powered off, the board is powered by the charger.
*/
uint8_t Power_Flag = 0;
/*
Charge_Flag = 0; ���ϵ�
Charge_Flag = 1��׼�����
Charge_Flag = 2������
Charge_Flag = 3����ص������
Charge_Flag = 0; Just powered on.
Charge_Flag = 1; Ready for charging.
Charge_Flag = 2; Charging in progress.
Charge_Flag = 3; Battery fully charged.
*/
uint8_t Charge_Flag = 0;
///*
// VESC_Boot_Flag = 0; VESC�ػ�
// VESC_Boot_Flag = 1��VESC����
//*/
//uint8_t VESC_Boot_Flag = 0;
/*
Flashlight_Flag = 0; ���ϵ�
Flashlight_Flag = 1; VESC����
Flashlight_Flag = 2��VESCǰ��׵ƺ�����(��ת)
Flashlight_Flag = 3��VESCǰ���ƺ���׵�(��ת)
Flashlight_Flag = 4; ����10%
*/
uint8_t Flashlight_Flag = 0;
/*
Brightness_Flag = 0; ���ϵ�
Brightness_Flag = 1; ��ʼ��������
Brightness_Flag = 2�����ȵ������
*/
uint8_t Brightness_Flag = 0;
/*
WS2812_Display_Flag = 0; ���ϵ�
WS2812_Display_Flag = 1����ʾ����
WS2812_Display_Flag = 2������ʾ����
Lightbar_Mode_Flag = 0; Just powered on.
Lightbar_Mode_Flag = 1; Display battery level.
Lightbar_Mode_Flag = 2; Do not display battery level.
*/
uint8_t WS2812_Display_Flag = 0;
/*
WS2812_Flag = 0; ���ϵ�
WS2812_Flag = 1�����5������ �Ҳ�5���Ʋ����� adc1>2.5V adc2<2.5V
WS2812_Flag = 2�����5���Ʋ����� �Ҳ�5������ adc1<2.5V adc2>2.5V
WS2812_Flag = 3��10���ƶ������� adc1>2.5V adc2>2.5V
WS2812_Flag = 4��10���ƶ���
Footpad_Activation_Flag = 0; Just powered on.
Footpad_Activation_Flag = 1; Left 5 LEDs blue, Right 5 LEDs off (adc1 > 2.5V, adc2 < 2.5V).
Footpad_Activation_Flag = 2; Left 5 LEDs off, Right 5 LEDs blue (adc1 < 2.5V, adc2 > 2.5V).
Footpad_Activation_Flag = 3; All 10 LEDs blue (adc1 > 2.5V, adc2 > 2.5V).
Footpad_Activation_Flag = 4; All 10 LEDs off.
Footpad_Activation_Flag = 5; Flywheel mode, pattern
*/
uint8_t WS2812_Flag = 0;
/*
Expand All @@ -67,22 +49,17 @@ uint8_t Power_Display_Flag = 0;
Buzzer_Flag = 2����������
*/
uint8_t Buzzer_Flag = 0;
/*
Usart_Flag = 0; ���ϵ�
Usart_Flag = 1�������ɹ�
Usart_Flag = 2������ʧ�ܻ�ȴ���һ�ν���
*/
uint8_t Usart_Flag = 0;

/*
VESC����ʱ��
Usart_Flag = Vesc_Data_Ready
*/
uint16_t VESC_Boot_Time = 0;
uint8_t Vesc_Data_Ready = 0;

/*
���������ʱ��
*/
uint16_t Buzzer_Time = 0;

/*
����ʱ
*/
Expand All @@ -100,21 +77,18 @@ uint16_t Power_Time = 0;
*/
uint16_t Usart_Time = 0;
/*
ADC����ʱ��
ADC sampling time.
*/
uint16_t ADC_Time = 0;
/*
�ػ�ʱ�� ��
Time the board has been idle (aka not running)
*/
uint16_t Shutdown_Time_S = 0;
uint16_t Idle_Time = 0;
/*
�ػ�ʱ�� ����
Shutdown counter, milliseconds and minutes
*/
uint16_t Shutdown_Time_S = 0;
uint8_t Shutdown_Time_M = 0;
/*
��ص�ѹ
*/
//float Battery_Voltage = 0;
/*
ADC1
*/
Expand All @@ -124,55 +98,49 @@ float ADC1_Val = 0;
*/
float ADC2_Val = 0;
/*
ת��
*/
//long VESC_Rpm = 0;
/*
ĸ�ߵ���
*/
//float AvgInputCurrent = 0;
/*
ռ�ձ�
*/
//float DutyCycleNow = 0;
/*
���ڵ�ѹ
Charging Port Voltage
*/
float Charge_Voltage = 0;
/*
Gear_Position = 0 �տ���
Gear_Position = 1 ���� WS2812���� ��������һ��
Gear_Position = 2 ����е� WS2812�е� ������������
Gear_Position = 3 ������� WS2812� ������������
Light_Profile = 0 Just powered on.
Light_Profile = 1 Headlight bightness low, Lightpad brightness high, beep once
Light_Profile = 2 Headlight bightness mid, Lightpad brightness mid, beep twice
Light_Profile = 3 Headlight bightness high, Lightpad brightness low, beep thrice
*/
uint8_t Gear_Position = 0;
/*
WS2812����
*/
uint8_t WS2812_Measure = 0;
/*
������ bpm 60-180 ��Ӧռ�ձ� 70-100
Buzzer frequency in BPM, beats per minute, ranging from 60 to 180, corresponding to a duty cycle of 70 to 100)
*/
uint8_t Buzzer_Frequency = 0;

/*
����˫����̤��û���� �����3S
When the button is double-clicked without pressing it, the headlight stays on for 3 seconds.
*/
uint16_t Flashlight_Detection_Time = 0;
/*
����ѹ�ͳ��ĵ�����ԭʼֵ
Charging current and voltage original values
*/
float Charge_Current = 0;
/*
0 ����������
1 ��������ѹ
V_I = 0: Sampling charging current.
V_I = 1: Sampling charging voltage.
*/
uint8_t V_I = 1;
/*
�����ﵽ�ػ��Ĵ���
Counter used while detecting end of charging
*/
uint8_t Shutdown_Cnt = 0;
uint16_t Shutdown_Cnt = 0;
/*
��������ʱ��
Charger detection time.
*/
uint16_t Charger_Detection_1ms = 0;

/*
The current brightness of the headlights, to slowly ramp up to target brightness
*/
int Current_Headlight_Brightness = 0;
int Target_Headlight_Brightness = 0;
20 changes: 9 additions & 11 deletions LCM/Code/App/flag_bit.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,38 +5,36 @@

extern uint8_t Power_Flag;
extern uint8_t Charge_Flag;
extern uint8_t VESC_Boot_Flag;
extern uint8_t Flashlight_Flag;
extern uint8_t Brightness_Flag;
extern uint8_t WS2812_Display_Flag;
extern uint8_t WS2812_Flag;
extern uint8_t Power_Display_Flag;
extern uint8_t Buzzer_Flag;
extern uint8_t Usart_Flag;
extern uint16_t VESC_Boot_Time;
extern uint8_t Vesc_Data_Ready;

extern uint16_t Buzzer_Time;
extern uint16_t Charge_Time;
extern uint16_t Flashlight_Time;
extern uint16_t Power_Time;
extern uint16_t Usart_Time;
extern uint16_t ADC_Time;
extern uint16_t Idle_Time;
extern uint16_t Shutdown_Time_S;
extern uint8_t Shutdown_Time_M;
//extern float Battery_Voltage;

extern float ADC1_Val;
extern float ADC2_Val;
//extern long VESC_Rpm;
//extern float AvgInputCurrent;
//extern float DutyCycleNow;
extern float Charge_Voltage;
extern uint8_t Gear_Position;
extern uint8_t WS2812_Measure;
extern uint8_t Buzzer_Frequency;
extern uint16_t Flashlight_Detection_Time;
extern float Charge_Current;
extern uint8_t V_I;
extern uint8_t Shutdown_Cnt;
extern uint16_t Shutdown_Cnt;
extern uint16_t Charger_Detection_1ms;
#endif

// Directional headlight brightness: positive = forward, negative = reverse
extern int Current_Headlight_Brightness;
extern int Target_Headlight_Brightness;

#endif
Loading