Touch screen drivers control dashboard for miniature locomotive. Features meters for speed, volts, power. Switches for lights, horns. Drives multiple STM3_ESC brushless motor controllers for complete brushless loco system as used in "The Brute" - www.jons-workshop.com
Dependencies: TS_DISCO_F746NG mbed Servo LCD_DISCO_F746NG BSP_DISCO_F746NG QSPI_DISCO_F746NG AsyncSerial FastPWM
movingcoilmeter.h
- Committer:
- JonFreeman
- Date:
- 2019-03-04
- Revision:
- 14:6bcec5ac21ca
- Parent:
- 12:a25bdf135348
File content as of revision 14:6bcec5ac21ca:
#ifndef JON_FREEMAN_MOVING_COIL_METER #define JON_FREEMAN_MOVING_COIL_METER #include "mbed.h" /** class moving_coil_meter Create moving coil meter graphic using STM32F746G-DISCO. Usage example : top line of constructor : moving_coil_meter::moving_coil_meter ( int bod_col, int bgcol, int needlecol, int textcol, int scalecol, int cx, int cy, int size, double lo, double hi, double start_ang, double end_ang, int scaleticks, char * units, int decimal_places, bool sign) moving_coil_meter Voltmeter ( LCD_COLOR_BLACK, // Frame / body colour LCD_COLOR_WHITE, // Dial face colour LCD_COLOR_RED, // Moving needle colour LCD_COLOR_BLUE, // Text colour for Units e.g. 'V' and e.g. '32.7' LCD_COLOR_MAGENTA, // Scale graduations colour VOLTMETER_X, // X co-ord, centre of meter VOLTMETER_Y, // Y co-ord, centre of meter V_A_SIZE, // Meter is square with rounded corners. This is meter dial face radius 22.0, // Scale not limited to e.g. 0 to 10. This is reading at anti-clock limit 59.0, // This is reading at full scale deflection 1.25 * PI, // Angle of needle at anti-clockwise limit -0.25 * PI , // Angle of needle at full scale deflection (clockwise max) 30, // Number of scale graduation marks drwan "V", // Text for Units, e.g. 'V' or 'MPH' ONE_DP, // NO_DPS or ONE_DP - supports only no decimal places or one false) ; // true to show '+' or '-', false to supress sign display */ class moving_coil_meter { int meter_radius, cent_x, cent_y, needle_len, scale_ticks, disc_colour, needle_colour, scale_colour, text_colour, body_colour, dec_places; int corner_rad, // = (meter_radius / 6), screw_hole_offset, // = (meter_radius * 92 / 100), screw_rad ; // = (meter_radius / 13); char unit_txt[8]; double start_angle, end_angle, old_angle, value_min, value_max, swept_angle, value_range; bool draw_sign; void DrawNeedle (double alpha, int colour) ; double get_pointer_angle (double value) ; int get_font_size () ; public: moving_coil_meter () {} ;// default constructor moving_coil_meter (int, int, int, int, int, int, int, int, double, double, double, double, int, char *, int, bool) ; void set_value (double v) ; void redraw () ; void LED (int, int) ; } ; #endif