LinkedIn YouTube Facebook
Szukaj

Wstecz
Artykuły

ZL31ARM: sterowanie kulki i obroty bryły w 3D za pomocą czujnika MEMS LIS35

Funkcje pomocne

Poniżej przedstawiono kody niektórych funkcji wykorzystywanych w programie:

//Funkcja pozwalajaca ustawic kontrast za pomoca przyciskow UP i DOWN
//Zatwierdzenie ustawienia za pomoca przycisku OK
void adjustContrast(){
  signed char contrast=0;

  //Ustawienie kontrastu (przyciski UP i DOWN), potwierdzenie (przycisk OK)
  while(GPIO_ReadInputDataBit(JOY_PORT_OK, JOY_OK) == 1){
    Delay(0xFFFF);
    if(GPIO_ReadInputDataBit(JOY_PORT, JOY_UP) == 0)
    SetContrast(contrast == 63 ? contrast : ++contrast);
    else if(GPIO_ReadInputDataBit(JOY_PORT, JOY_DOWN) == 0)
    SetContrast(contrast == -64 ? contrast : --contrast);
  }
}
//Funkcja konwertujaca liczbe 7-bitowa (od -128 do 127) ze znakiem na ciag typu String
void sChar2Str(char *pStr, signed char value){
  //Ilosc rozrzadow konwertowanej liczby (bez uwzgledniania znaku)
  unsigned char charCount=3;

  //Jezeli wartosc jest ujemna to zapisz znak '-'
  if(value < 0)
    *pStr = '-';
  else
  *pStr = ' ';

  //Ustaw wskaznik na adres komorki zawierajacej najmlodszy rozrzad liczby
  pStr = pStr + charCount;

  //Konwertuj liczbe; jednosci, dziesiatki, setki
  do{
    *pStr-- = abs(value % 10) + '0';
    value /= 10;
  } while(--charCount);
}
//Funkcja ustawiajaca kolor kulki
//Wykorzystywana w przerywaniu
void setBallColor(unsigned int ballColor){
	ball_color = ballColor;
}

W pliku main.h zapisane są następujące dane:

#include "lis35.h"
#include "stm32f10x.h"

void adjustContrast();
void Delay(__IO uint32_t nCount);
void sChar2Str(char *, signed char);

void indicator(void);
void ball(void);
void rotatingFigure(void);
void setBallColor(unsigned int);

signed char x, y, z, xKor=0, yKor=0, zKor=0;
static char tempCHAR[4];

volatile static unsigned int ball_color = 0xFFF;
Autor: Jan Szemiet