之前完成了三个模块的软硬件的介绍,接下来,制作PCB板,对三个模块进行连接设计。
首先结合之前的各部分原理图组合成一份原理图
再进行绘制简单的PCB板
通过PCB制板厂,发送PCB订单,最后再进行焊接,完成PCB板的部分
对此,我们进行一个比较简单的软件设计。使用arduino继续进行开发。
首先根据原理图对引脚进行进行常量的定义。
// ========== 按键引脚定义 ==========
#define PIN_KEY_ON 2
#define PIN_KEY_OFF 3
两个开关分别为2和3。本次项目简单的使用开关控制串口的输出,如果2按下,就打开串口的输出,会输出ADXL357的信息。如果3按下,就会关闭串口的输出。
// 配置按键引脚,使用内部上拉
pinMode(PIN_KEY_ON, INPUT_PULLUP);
pinMode(PIN_KEY_OFF, INPUT_PULLUP);
按钮的原理图设计都是默认进行上拉,当按下的时候会是低电平。
// ========== 按键检测 ==========
if (digitalRead(PIN_KEY_ON) == LOW) {
print_enabled = true;
Serial.println("打印开启");
delay(200); // 简易去抖
}
if (digitalRead(PIN_KEY_OFF) == LOW) {
print_enabled = false;
Serial.println("打印关闭");
delay(200); // 简易去抖
}
后面通过判断变量就可以进行决定数据的接收
// ========== 若开启打印,则输出数据 ==========
if (print_enabled) {
int axisAddresses[] = {TEMP2, TEMP1, XDATA3, XDATA2, XDATA1, YDATA3, YDATA2, YDATA1, ZDATA3, ZDATA2, ZDATA1};
int axisMeasures[11] = {0};
readMultipleData(axisAddresses, 11, axisMeasures);
unsigned int tdata = (axisMeasures[0] << 8) + axisMeasures[1];
unsigned long xdata = (axisMeasures[4] >> 4) + (axisMeasures[3] << 4) + (axisMeasures[2] << 12);
unsigned long ydata = (axisMeasures[7] >> 4) + (axisMeasures[6] << 4) + (axisMeasures[5] << 12);
unsigned long zdata = (axisMeasures[10] >> 4) + (axisMeasures[9] << 4) + (axisMeasures[8] << 12);
if (xdata >= 0x80000) xdata = ~xdata + 1;
if (ydata >= 0x80000) ydata = ~ydata + 1;
if (zdata >= 0x80000) zdata = ~zdata + 1;
Serial.print("X = "); Serial.print((int32_t)xdata); Serial.print("\t");
Serial.print("Y = "); Serial.print((int32_t)ydata); Serial.print("\t");
Serial.print("Z = "); Serial.print((int32_t)zdata); Serial.print("\t");
Serial.print("Temp = "); Serial.println(tdata);
}
最后,这个简单的按钮与加速度计的配合就完成了。后面通过磁铁放在开关的上面就可以直接开关。


