模拟电压表
| Language | English |
|---|
目的本教程将教大家如何用Microduino做一个模拟电压表,电压表的读数在Processing中显示。 设备
原理图原理图使用A2,显示电压读数显示在频道一中,一共四个频道分配对应A0,A1,A2,A3你也可以试试。 程序调试步骤一:按着原理图搭建硬件环境,像这样:
本例需要两端的代码,Processing端和Microduino端 Microduino: //得到电压值后通过串口输出用以Processing端接收 void loop()
{
// take a number of analog samples and add them up
while (sample_count < NUM_SAMPLES) {
// sample each channel A2 to A5
for (l_cnt = 0; l_cnt < 4; l_cnt++) {
sum[l_cnt] += analogRead(A2 + l_cnt);
}
sample_count++;
delay(10);
}
// calculate the voltage for each channel
for (l_cnt = 0; l_cnt < 4; l_cnt++) {
voltage[l_cnt] = ((float)sum[l_cnt] / (float)NUM_SAMPLES * V_REF) / 1024.0;
}
// each voltage is multiplied by the resistor network
// division factor to calculate the actual voltage
voltage[0] = voltage[0] * DIV_1;
voltage[1] = voltage[1] * DIV_2;
voltage[2] = voltage[2] * DIV_3;
voltage[3] = voltage[3] * DIV_4;
// send voltages to Processing application via serial port / USB
// voltage 1 - A (pin A2)
Serial.print("A ");
Serial.print(voltage[0], 1);
Serial.print("V ");
// voltage 2 - B (pin A3)
Serial.print("B ");
Serial.print(voltage[1], 1);
Serial.print("V ");
// voltge 3 - C (pin A4)
Serial.print("C ");
Serial.print(voltage[2], 1);
Serial.print("V ");
// voltage 4 - D (pin A5)
Serial.print("D ");
Serial.print(voltage[3], 1);
Serial.print("V ");
Serial.println("");
delay(10);
// reset count and sums
sample_count = 0;
for (l_cnt = 0; l_cnt < 4; l_cnt++) {
sum[l_cnt] = 0;
}
}
Processing: //得到第一个串口的数据 println(Serial.list()); // modify Serial.list()[0] to select correct serial port ser_port = new Serial(this, Serial.list()[0], 9600);
// 串口事件函数 void serialEvent(Serial p) // 显示频道数和电压值 void voltage (int channel, String volts) //绘制图表轴 void DrawGraphAxis(int pos_x, int pos_y, int width, int height) //绘制图表 void DrawGraph (String voltage, int channel, int pos_x, int pos_y, int scale) // 绘制标尺,单选框 void DrawScaleSelect (int x_pos, int y_pos, int scale)
步骤三:下载代码并编译通过。 步骤四:运行后,找个电池之类的,放到上图中红线和黑线之间,看屏幕上的读数。 结果屏幕上第四频道会显示A5 pin的电压读数,像这样:
视频 |


