距离表情小交互
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);
}
}
}
|
应用效果