Raspberry Pi MOT HAT Based on STM32F030R8. The clock needs to be changed to 8MHz after export.

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers SelfTest.cpp Source File

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