距离表情小交互
1196357542@qq.com(讨论 | 贡献)2018年6月1日 (五) 12:56的版本 (创建页面,内容为“{| style="width: 800px;" |- | <p style="color: #4F4E4E;font-size:220%">'''Sensor-Ultrasonic+距离表情小交互'''</p> <br> 本示例给出了超声波传感器测…”)
Sensor-Ultrasonic+距离表情小交互
所需硬件
电路搭建 将Ultrasonic+传感器接到Hub的IIC引脚。
代码 #include <Microduino_Ultrasonic.h> //引用超声波库文件
#include <Microduino_Matrix.h>
uint8_t Addr[MatrixPix_X][MatrixPix_Y] = { //1x1
{48} //点阵IIC地址
};
Matrix display = Matrix(Addr, TYPE_S2); //TYPE_COLOR or TYPE_S2
Ultrasonic Ultrasonic1(ULTRASONIC_ADDR_1);//将Ultrasonic实例化
uint16_t Distance; //定义变量
uint32_t oledTime = millis();
uint8_t disFlag;
void setup() {
Serial.begin(9600); // 串口初始化
Ultrasonic1.begin(); //超声波初始化
display.setBrightness(100);
delay(2000);
display.clearDisplay();
disFlag = 2;
}
void loop() {
Distance = Ultrasonic1.getDistance(); //获取超声波测得的距离
Serial.println(Distance); //串口打印距离值
matrixDraw(Distance);
delay(10); //延时10ms
}
void matrixDraw(uint16_t Dis) {
if (Dis <= 150) {
if (disFlag == 0) return;
else {
disFlag = 0;
display.clearDisplay();
display.drawLine(0, 2, 7, 2);
display.drawLine(0, 3, 2, 7);
display.drawLine(7, 3, 5, 7);
display.setLed(3, 7, true);
display.setLed(4, 7, true);
}
}
else if ((Dis > 150) && (Dis < 300)) {
if (disFlag == 1) return;
else {
disFlag = 1;
display.clearDisplay();
display.drawLine(0, 2, 7, 2);
display.drawLine(0, 3, 1, 4);
display.drawLine(7, 3, 6, 4);
display.drawLine(1, 4, 6, 4);
}
}
else {
if (disFlag == 2) return;
else {
disFlag = 2;
display.clearDisplay();
display.drawLine(0, 5, 2, 3);
display.drawLine(7, 5, 5, 3);
display.setLed(3, 3, true);
display.setLed(4, 3, true);
}
}
}
|
应用效果
0-15厘米时,点阵效果如下:
15-30厘米时,点阵效果如下:
超过30厘米