Arduino UNOとExcelでオシロっぽい何かを作る(高速化編)
Arduino UNOとExcelでオシロっぽい何かを作る、というのをだいぶ前にやってみた。
その時はA/Dコンバータの速度が遅くて、もう1kHzくらいで限界だった。例えば、ファンクションジェネレータ((Tenma 72-5016)を発掘)で正弦波を入れてみると、上から1kHz、5kHz、10kHzだが、もう5kHzではちゃんと拾ってない。。。
実際のATmegaはもっと速いはず、、、と思って調べると、高速化の話が出てました。
http://arduino.cc/forum/index.php/topic,6549.0.html
なるほど、プリスケーラの値を変えればいいと。
const int analogInPin = A0;
unsigned long Time[256];
int Volt[256];
void setup() {
Serial.begin(57600);
#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif
cbi(ADCSRA,ADPS2) ;
sbi(ADCSRA,ADPS1) ;
cbi(ADCSRA,ADPS0) ;
}
void loop() {
unsigned int i;
Serial.println("A");
for (i=0;i<256;i++) {
Time[i]=micros();
Volt[i] = analogRead(analogInPin);
delayMicroseconds(2);
}
for (i=0;i<256;i++) {
Serial.print(Time[i]);
Serial.print(" ");
Serial.println(Volt[i]);
}
}
というようなプログラムをArduinoに入れて、Excelの方はEasyCommを使って、
(*EasyCommはお手軽にシリアル通信できるすぐれものソフトです。http://www.activecell.jp/download/)
Option Explicit
Private Sub CommandButton1_Click()
Dim s As String
Dim i As Integer, j As Integer
Dim temp As Variant
Dim Time As Double, Volt As Double, Time0 As Double
ec.COMn = 4
ec.HandShaking = ec.HANDSHAKEs.No
ec.Setting = "57600,n,8,1"
ec.Delimiter = "CRLF"
ec.InBufferClear
s = ec.AsciiLine
For j = 0 To 300
Application.ScreenUpdating = False
s = ec.AsciiLine
If s = "A" Then
s = ec.AsciiLine
temp = Split(s, " ")
Time0 = CDbl(temp(0)) / 1000000#
Volt = 4.95 * (CDbl(temp(1)) / 1023#)
Worksheets("Sheet1").Cells(2, 3) = 0#
Worksheets("Sheet1").Cells(2, 4) = Volt
For i = 1 To 255
s = ec.AsciiLine
temp = Split(s, " ")
Time = CDbl(temp(0)) / 1000000#
Volt = 4.95 * (CDbl(temp(1)) / 1023#)
Worksheets("Sheet1").Cells(i + 2, 3) = Time - Time0
Worksheets("Sheet1").Cells(i + 2, 4) = Volt
Next i
Application.ScreenUpdating = True
End If
Next j
ec.COMn = 0
End Sub
のようなプログラムで見てみると、、、上から1kHz、10kHz、20kHzまでそれなりに見えてる。
« GeoGebra5.0betaでは3次元グラフが描ける、、、ということは描くものはもうこれしかないだろう(おっぱい方程式) | トップページ | 今TBSで”世界の超S級危険生物コレクション”見てたら、手話で会話するゴリラ、ココが子猫を失ったときの映像が、、、悲しすぎる、、、 »
「学問・資格」カテゴリの記事
- 高周波・RFニュース 2025年1月23日 5G Americasの新ホワイトペーパー「AI時代のセルラーネットワークの信頼性とセキュリティ」、KyoceraAVXの新薄膜フィルタ、TDKの車載/一般用C0G特性1,250V 3225サイズMLCC、Semtechの5G LPWAモジュール(2025.01.23)
- 高周波・RFニュース 2025年1月22日 everythingRFマガジンにMarkiの宇宙向けミリ波部品の記事、NordicのRF52810を使った太陽電池で動き暗闇でも3週間持つアセットトトラッカー、KnowlessのMRIの技術解説記事、Broadcomの3.5Dパッケージング解説(2025.01.22)
- UnityでVisual C#用の数値計算ライブラリMath.NET numericsを使う(3) 3D画面に補間(Interpolate) を行って表示する。リニア、3次スプライン、有理関数などいろいろ使える。(2025.01.23)
« GeoGebra5.0betaでは3次元グラフが描ける、、、ということは描くものはもうこれしかないだろう(おっぱい方程式) | トップページ | 今TBSで”世界の超S級危険生物コレクション”見てたら、手話で会話するゴリラ、ココが子猫を失ったときの映像が、、、悲しすぎる、、、 »
コメント