距离表情小交互

来自Microduino Wikipedia
跳转至: 导航搜索

Sensor-Ultrasonic+距离表情小交互


本示例给出了超声波传感器测距与点阵显示图案交互的效果



所需硬件


电路搭建

将Ultrasonic+传感器接到Hub的IIC引脚。
将mCenter+(或者用Battery、Core、Hub堆叠在一起代替mCenter+,代替后核心选择core)通过MicroUSB数据线接入电脑,核心选择core+ 5V。初次使用请参考:Getting Started

代码

#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厘米时,点阵效果如下:
Sensor Ultrasonic+ mouth1.jpg

15-30厘米时,点阵效果如下:
Sensor Ultrasonic+ mouth2.jpg

超过30厘米
Sensor Ultrasonic+ mouth3.jpg



返回Sensor-Ultrasonic 界面