Xiaohai Li
/
RPi_MOT_HAT
Raspberry Pi MOT HAT Based on STM32F030R8. The clock needs to be changed to 8MHz after export.
Embed:
(wiki syntax)
Show/hide line numbers
SelfTest.cpp
00001 #include "SysConfig.h" 00002 00003 void SpeedTest(void) 00004 { 00005 uart_db.printf("[Speed Test]\n\rMOT1 = %drpm, MOT2 = %drpm, MOT3 = %drpm, MOT4 = %drpm.\n\r", Mot_GetSpeed(1), Mot_GetSpeed(2), Mot_GetSpeed(3), Mot_GetSpeed(4)); 00006 } 00007 00008 void VoltageTest(void) 00009 { 00010 uart_db.printf("[Voltage Test]\n\rVBAT = %.2fV, VDD12V = %.2fV, VDD5V = %.2fV, VDD3V3 = %.2fV.\n\r", Vmon_ReadVolt(1), Vmon_ReadVolt(2), Vmon_ReadVolt(3), Vmon_ReadVolt(4)); 00011 } 00012 00013 void MotTest(void) 00014 { 00015 int dir, turn; 00016 uart_db.printf("\n\r==== Motor Test ====\n\r"); 00017 for(int i=0; i<100; i+=20) 00018 { 00019 uart_db.printf("\n\rMotor speed set to %d%%.\n\r", i); 00020 uart_db.printf("-->Motor will move forward.\n\r"); 00021 dir = 'f'; 00022 00023 uart_db.printf("---->Motor will move straight.\n\r"); 00024 turn = 'm'; 00025 Mot_Ctrl(dir, turn, (float)i / 100.0); 00026 SpeedTest(); 00027 VoltageTest(); 00028 LedToggle(0); 00029 wait(3); 00030 00031 uart_db.printf("---->Motor will turn left.\n\r"); 00032 turn = 'l'; 00033 Mot_Ctrl(dir, turn, (float)i / 100.0); 00034 SpeedTest(); 00035 VoltageTest(); 00036 LedToggle(0); 00037 wait(3); 00038 00039 uart_db.printf("---->Motor will turn right.\n\r"); 00040 turn = 'r'; 00041 Mot_Ctrl(dir, turn, (float)i / 100.0); 00042 SpeedTest(); 00043 VoltageTest(); 00044 LedToggle(0); 00045 wait(3); 00046 00047 uart_db.printf("-->Motor will move forward.\n\r"); 00048 dir = 'b'; 00049 00050 uart_db.printf("---->Motor will move straight.\n\r"); 00051 turn = 'm'; 00052 Mot_Ctrl(dir, turn, (float)i / 100.0); 00053 SpeedTest(); 00054 VoltageTest(); 00055 LedToggle(0); 00056 wait(3); 00057 00058 uart_db.printf("---->Motor will turn left.\n\r"); 00059 turn = 'l'; 00060 Mot_Ctrl(dir, turn, (float)i / 100.0); 00061 SpeedTest(); 00062 VoltageTest(); 00063 LedToggle(0); 00064 wait(3); 00065 00066 uart_db.printf("---->Motor will turn right.\n\r"); 00067 turn = 'r'; 00068 Mot_Ctrl(dir, turn, (float)i / 100.0); 00069 SpeedTest(); 00070 VoltageTest(); 00071 LedToggle(0); 00072 wait(3); 00073 } 00074 } 00075 00076 void SelfTest(void) 00077 #if 1 00078 { 00079 uart_db.printf("Starting motor velocimeter...\n\r"); 00080 Mot_StartVelocimeter(); 00081 MotTest(); 00082 Mot_StopVelocimeter(); 00083 } 00084 #else 00085 { 00086 //Breath LED 00087 int i, j; 00088 led_mb = 0; 00089 while(1) 00090 { 00091 for(j=0;j<=100;j++) 00092 { 00093 for(i=0;i<=100;i++) 00094 { 00095 led_mb = 1; 00096 wait_us(j); 00097 led_mb = 0; 00098 wait_us(100-j); 00099 } 00100 } 00101 for(j=100;j>=0;j--) 00102 { 00103 for(i=0;i<=100;i++) 00104 { 00105 led_mb = 1; 00106 wait_us(j); 00107 led_mb = 0; 00108 wait_us(100-j); 00109 } 00110 } 00111 wait_ms(200); 00112 } 00113 } 00114 #endif
Generated on Fri Jul 15 2022 01:55:45 by 1.7.2