2012-04-10
LPC1343 フォトダイオード出力をAD変換 - USBでPCへデータ転送 - リアルタイムグラフ表示
1. フォトダイオードのアナログ出力をADCで10ms毎に取得
2. USB virtual comで取得データをPCに送信
3. フリーソフトCPLTでデータログ&ほぼリアルタイムグラフ表示
開発Listへ戻る
以前のエントリ
LPC1343 ADC データ測定 リアルタイムグラフ表示(2012.4.2)
と
LPC1343 USB virtual COMでローカルエコー(2012.3.24)
を組み合わせただけです。
接続図
USB接続してTeratermにつなげると下のようにADCの値がばばばっと出てきます。
で、CPLT(以前のエントリ参照)につなげると
リアルタイムでデータがグラフ表示されます。
携帯電話の画面をフォトセンサに向け、明るくしたところが見て取れます。
コードです。
以下のエントリを順番にやっていって、3)の状態をベースにします。
1)LPC1343 USB Virtual COM (USBシリアル変換 : Example pjt使用)(2012.3.11)
2)LPC1343 USB Virtual COMをカスタマイズ!(2012.3.13)
3)LPC1343 USB virtual COMでローカルエコー(2012.3.24)
追加分と、修正が入ったmain関数のみ記載します。
はっきり言って無駄がありますが、まぁいいかなと思ってます。
//追加分//
#include "adc0.h"
#include <string.h>
#include <stdlib.h>
//修正分//
int main (void) {
GETDAT_T Getdata,adcdata; // 構造体 adcdataを使用
Getdata.num=0;
int ad0data; // ad0のdata用変数
LPC_SYSCON->SYSAHBCLKCTRL |= (EN_TIMER32_1 | EN_IOCON | EN_USBREG);
adc0_init();
LPC_SYSCON->SYSAHBCLKCTRL |=0x100; // Timer16B1 Turn ON
LPC_TMR16B1->PR = 7200-1; // 10kHz (Max 16bit dec:65535)
LPC_TMR16B1->MR0 = 100; // 0.01S
LPC_TMR16B1->MCR = 0x04; // Stop timer on MR0
USBIOClkConfig();
VCOM_Init(); // VCOM Initialization
USB_Init(); // USB Initialization
USB_Connect(TRUE); // USB Connect
while (!USB_Configuration) ; // wait until USB is configured
while (1) { // Loop forever
LPC_TMR16B1->TCR = 0x02; // TCR Reset
LPC_TMR16B1->TCR = 1; // TCR Start
ad0data=adc0read(); // get ADC data
itoa(ad0data,adcdata.d, 10);//adcdataをcharに変換
strcat(adcdata.d,"\r\n"); //改行コードを付加
adcdata.num=strlen(adcdata.d); //文字数を計算
VCOM_Serial2Usb(adcdata); // USBで送信
Getdata.num=0; //面倒だからそのまま
VCOM_CheckSerialState(); //よくわからないからexampleコードのまま
Getdata=VCOM_Usb2Serial();//面倒だし良くわからないからそのまま
while (LPC_TMR16B1->TCR & 0x01); //10ms経つまでwait
} // end while
} // end main ()
コード解説
・まずインクルードです。
以前のエントリ LPC1343 UARTでADCを制御する 2/2を参照です。
adc0.c, adc0.hはリンク先からコピーしてプロジェクトに追加してください。
#include "adc0.h"
今回, itoa,strlen関数を利用するので以下もインクルードです。
#include <string.h>
#include <stdlib.h>
その他は大体コメントのとおりです。
ADCに関しては List記事からADC関連の記事を見てください。
開発List
USB関連はまだわからないのでとりあえずexampleコードのまま使ってます。
- 9 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CEEQFjAB&url=http://d.hatena.ne.jp/hira-rin/20120304/1330859888&ei=yoOGT6aKFK3MmAXrzf3XBw&usg=AFQjCNG0d1nl2hLzXmdiplTc6mu1xXNz-w
- 5 http://www.google.co.jp/search?q=マイコン+uart コマンド&hl=ja&rls=HPNW,HPNW:2007-04,HPNW:ja&prmd=ivns&ei=SfKET9v5IYzRmAWe1om1Bw&sa=N&oq=マイコン+uart??
- 5 http://www.google.co.jp/url?sa=t&rct=j&q=マイコン 10カウント したら 1&source=web&cd=1&ved=0CCQQFjAA&url=http://d.hatena.ne.jp/hira-rin/20120219%
- 5 https://www.google.co.jp/
- 4 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=5&ved=0CEcQFjAE&url=http://d.hatena.ne.jp/hira-rin/20120226/1330259323&ei=PJeFT9DrFO6WiQf204DhBw&usg=AFQjCNHlhFD-Eq28LiuqYAED7Rl6ECmRBg&sig2=7l-hCEUmOZ3NMXVIJfo6BQ
- 3 http://search.yahoo.co.jp/search?p=マイコン+ADコンバーター+I2C&aq=-1&oq=&ei=UTF-8&fr=top_ga1_sa&x=wrt
- 3 http://search.yahoo.co.jp/search?p=NXP+マイコン+GPIO&aq=-1&oq=&ei=UTF-8&fr=top_ga1_sa&x=wrt
- 3 http://www.google.co.jp/search?hl=ja&source=hp&q=UART+紊????&gbv=2&oq=UART+紊????&aq=f&aqi=g-c6g-m4&aql=&gs_nf=1&gs_l=hp.3..0i7l6j0i5l4.2000.11203.0.11750.20.20.2.0.0.1.391.3205.0j1j10j2.13.0.uSDshUl3nZ4
- 3 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CDUQFjAA&url=http://d.hatena.ne.jp/hira-rin/20120227/1330358091&ei=ElKIT42NF-qSiQeBnKThCQ&usg=AFQjCNFWJIKsy4_U9nLMkI0nh-fn9iAsWw&sig2=_kEl6Nn7pi81RHxj8fZvtg
- 3 http://www.google.co.jp/url?sa=t&rct=j&q=LPC1343+使い方&source=web&cd=4&ved=0CD0QFjAD&url=http://d.hatena.ne.jp/hira-rin/20120408/1333864643&ei=jPuNT6jsC6mimQWD65GYDA&usg=AFQjCNG-214IO0wXn7tAor0JJUpDJpVs3Q