结合之前学的温度传感器,来做一个温度感应的小风扇。当温度达到设定的阀值时,小风扇就会转动起来。温度低于某一个温度值,风扇就会停止。

# 部署

  1. LCD的接口RS-D7分别连接到OSEPP UNO的2~7号引脚。
    2.电动马达(Fan Motor)的INA端子接到OSEPP UNO的9号引脚。
    3.电动马达(Fan Motor)的INB端子接到OSEPP UNO的8号引脚。
    4.温度传感器接到OSEPP UNO的A0引脚。

# 程序搭建

  • oseppBlock 积木知识

电动马达设定积木。INA是顺时针驱动引脚,INB是逆时针驱动引脚。

电动马达驱动积木。可以选择正转和反转,正转是顺时针,反转是逆时针。设定值的范围是0-255

  • oseppBlock程序

code/1.obp

  • Arduino程序
#include <LiquidCrystal.h>

LiquidCrystal lcd1(2, 3, 4, 5, 6, 7); //定义LCD引脚

void setup()
{
    lcd1.begin(16, 2);
    //lm35_1
    pinMode(A0, INPUT); //定义A0为输入模式
    //fan1
    pinMode(9, OUTPUT);  //定义9号引脚为输出模式
    pinMode(10, OUTPUT); //定义10号引脚为输出模式
}

void loop()
{
    if (analogRead(A0) * 0.48828125 > 30) //如果温度值大于30度
    {
        analogWrite(9, 255); //3号引脚输出pwm为255
        analogWrite(10, 0);  //5号引脚输出pwm为0
    }
    else if (analogRead(A0) * 0.48828125 < 29) //如果温度值小于29度
    {
        analogWrite(9, 0);  //2号引脚输出pwm为0
        analogWrite(10, 0); //5号引脚输出pwm为0
    }
    lcd1.clear();                            //清屏
    lcd1.setCursor(0, 0);                    //显示光标定位
    lcd1.print(analogRead(A0) * 0.48828125); //显示温度
    delay(3000);                             //延时1000毫秒
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

# 运行结果

如果你当前实验环境温度高于30摄氏度时,小风扇就会转动起来。如果低于29度就停止转动。你可以根据显示屏上面显示你当前的环境温度来修改这两个值,让风扇在这个值的变化中间启停。

# 解析

流程图

uml diagram

如果温度传感器感应到的温度大于30度,风扇就会转动。代码里面判断> 30,大于30度。当温度刚好是30度时,风扇是不会转动的,要31度才可以。

如果要求达到30度就转动的话,代码要用if (analogRead(A0) * 0.48828125 >= 30)。就是把大于符号改成大于等于符号。小于29度同理。

# 操作视频