Subversion Repositories DashDisplay

Rev

Rev 46 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 46 Rev 47
Line 6... Line 6...
6
 */
6
 */
7
#include "stm32l1xx_hal.h"
7
#include "stm32l1xx_hal.h"
8
#include "ap_math.h"
8
#include "ap_math.h"
9
#include "font.h"
9
#include "font.h"
10
#include "SSD1306.h"
10
#include "SSD1306.h"
-
 
11
#include "dials.h"
11
 
12
 
-
 
13
// this is the number of degrees between top centre of scale and
-
 
14
// left or right hand end of scale : 90 degrees produces a semicircle.
12
static uint16_t a1 = 90;
15
static uint16_t a1 = 90;
13
static uint8_t xo = 64;
16
static uint8_t xo = 64;
14
static uint8_t yo = 64;
17
static uint8_t yo = 64;
15
static uint8_t siz = 32;
18
static uint8_t siz = 32;
16
 
19
 
17
/* percent is integer from 0 to 100 */
20
/* position is integer from 0 to SINE_STEPS */
18
void
21
void
19
dial_draw_needle (uint16_t percent)
22
dial_draw_needle (uint16_t position)
20
{
23
{
21
  int ang = SINE_SCALING * ((percent - 50) * a1) / 50;
24
  int ang = SINE_SCALING * ((position - (SINE_STEPS/2)) * a1) / (SINE_STEPS/2);
22
 
25
 
23
  int si = ap_sin (ang);
26
  int si = ap_sin (ang);
24
  int co = ap_cos (ang);
27
  int co = ap_cos (ang);
25
 
28
 
26
  /* calculate a shift for a second side of the needle */
29
  /* calculate a shift for a second side of the needle */