“距离表情小交互”的版本间的差异
(创建页面,内容为“{| style="width: 800px;" |- | <p style="color: #4F4E4E;font-size:220%">'''Sensor-Ultrasonic+距离表情小交互'''</p> <br> 本示例给出了超声波传感器测…”) |
|||
第9行: | 第9行: | ||
<br> | <br> | ||
<p style="color: #E87E05;font-size:135%">所需硬件</p> | <p style="color: #E87E05;font-size:135%">所需硬件</p> | ||
− | *[[ | + | *[[mCenter+]] |
− | |||
− | |||
*[[Sensor-Ultrasonic+]] | *[[Sensor-Ultrasonic+]] | ||
<br> | <br> | ||
第17行: | 第15行: | ||
将Ultrasonic+传感器接到Hub的IIC引脚。 | 将Ultrasonic+传感器接到Hub的IIC引脚。 | ||
<br> | <br> | ||
− | + | 将mCenter+(或者用Battery、Core、Hub堆叠在一起代替mCenter+,代替后核心选择core)通过MicroUSB数据线接入电脑,核心选择core+ 5V。初次使用请参考:[[AVR核心:Getting_started/zh|Getting Started]]。 | |
<br> | <br> | ||
<br> | <br> | ||
第92行: | 第90行: | ||
<p style="color: #E87E05;font-size:135%">应用效果</p> | <p style="color: #E87E05;font-size:135%">应用效果</p> | ||
− | 0-15厘米时,点阵效果如下: | + | 0-15厘米时,点阵效果如下:<br> |
− | [[File:Sensor_Ultrasonic+_mouth1.jpg|200px | + | [[File:Sensor_Ultrasonic+_mouth1.jpg|200px]] |
<br> | <br> | ||
− | 15-30厘米时,点阵效果如下: | + | 15-30厘米时,点阵效果如下:<br> |
− | [[File:Sensor_Ultrasonic+_mouth2.jpg|200px | + | [[File:Sensor_Ultrasonic+_mouth2.jpg|200px]] |
<br> | <br> | ||
− | 超过30厘米 | + | 超过30厘米<br> |
− | [[File:Sensor_Ultrasonic+_mouth3.jpg|200px | + | [[File:Sensor_Ultrasonic+_mouth3.jpg|200px]] |
<br> | <br> | ||
+ | |||
+ | |||
+ | |||
[[Sensor-Ultrasonic/zh|返回Sensor-Ultrasonic 界面]] | [[Sensor-Ultrasonic/zh|返回Sensor-Ultrasonic 界面]] |
2018年6月7日 (四) 03:07的最新版本
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);
}
}
}
|
应用效果