- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
近年まれにみる大型ゴールデンウィークも今日で終わりということで、
明日からの社会復帰にそなえたリハビリも兼ねて秋月で買ってきたアナログ出力の加速度センサをTSoCで動かしてみました。
センサ (KXSC7-2050 モジュール)
http://akizukidenshi.com/catalog/g/gK-07243/
写真ではジャンパ線が飛び回っていますが、3端子レギュレータで KitProg からの 5V を 3.3V に落とす以外では、
センサのモード設定用が殆どでした。
Schematic
取り合えず出力を TeraTerm で見てみると
こんな感じで、ちょっと面白くありません。
そこでシリアルプロットというソフトにつないで表示させてみると
シリアルプロット
https://hackaday.io/project/5334-serialplot-realtime-plotting-software
x, y, z それぞれ頂点と底辺に来るように基板を動かしてみたところ、
だいたい、1g で 900 くらい、-1g で 400 くらいの数字に読めているようでした。
センサの出力がアナログなので、ADCで受けてやると下記の様に50行程度で書けてしまうというプログラムの書きやすいセンサでした。
※これでリハビリになったのかは、疑問ですが・・・
main.c
===================
#include "project.h"
#include "stdio.h"
char str[128] ; /* print buffer */
void print(char *str)
{
UART_UartPutString(str) ;
}
void init_hardware(void)
{
CyGlobalIntEnable; /* Enable global interrupts. */
UART_Start() ;
ADC_Start() ;
}
void splash(void)
{
sprintf(str, "KXSC7 Test Program (%s %s)\n", __DATE__, __TIME__) ;
print(str) ;
}
void measure(int16_t *x, int16_t *y, int16_t *z)
{
ADC_StartConvert() ;
ADC_IsEndConversion(ADC_WAIT_FOR_RESULT) ;
*x = ADC_GetResult16(0) ;
*y = ADC_GetResult16(1) ;
*z = ADC_GetResult16(2) ;
}
int main(void)
{
int16_t x, y, z ;
init_hardware() ;
splash() ;
print(" X, Y, Z\n") ;
for(;;)
{
measure(&x, &y, &z) ;
sprintf(str, "%5d, %5d, %5d\n", x, y, z) ;
print(str) ;
CyDelay(100) ;
}
}
===================
moto