37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验八十五:LCD1602液晶显示屏1602A模块 蓝屏黄绿屏灰屏5V 3.3V焊排针 IIC/I2C
知识点:液晶
某些物质在熔融状态或被溶剂溶解之后,尽管失去固态物质的刚性,却获得了液体的易流动性,并保留着部分晶态物质分子的各向异性有序排列,形成一种兼有晶体和液体的部分性质的中间态, 这种由固态向液态转化过程中存在的取向有序流体称为液晶。液晶是在自然界中出现的一种十分新奇的中间态,并由此引发了一个全新的研究领域。自然界是由各种各样不同的物质组成。以前,人们熟知的是物质存在有3态:固态、液态和气态。而固态又可以分为晶态和非晶态。在晶态固体中分子具有取向有序性和位置有序性,即所谓的长程有序。当然这些分子在平衡位置会发生少许振动,但平均说来,它们一直保持这种高度有序的排列状态。
当通电时导通,排列变得有秩序,使光线容易通过;不通电时排列混乱,阻止光线通过。让液晶如闸门般地阻隔或让光线穿透。从技术上简单地说,液晶面板包含了两片相当精致的无钠玻璃素材,称为Substrates,中间夹着一层液晶。当光束通过这层液晶时,液晶本身会排排站立或扭转呈不规则状,因而阻隔或使光束顺利通过。大多数液晶都属于有机复合物,由长棒状的分子构成。在自然状态下,这些棒状分子的长轴大致平行。将液晶倒入一个经精良加工的开槽平面,液晶分子会顺着槽排列,所以假如那些槽非常平行,则各分子也是完全平行的。液晶是一种介于晶体状态和液态状态之间的中间物质。它兼有液体和晶体的某些特点,表现出一些独特的性质。
液晶显示材料
具有明显的优点:驱动电压低、功耗微小、可靠性高、显示信息量大、彩色显示、无闪烁、对人体无危害、生产过程自动化、成本低廉、可以制成各种规格和类型的液晶显示器,便于携带等。由于这些优点。用液晶材料制成的计算机终端和电视可以大幅度减小体积等。液晶显示技术对显示显像产品结构产生了深刻影响,促进了微电子技术和光电信息技术的发展。液晶显示材料最常见的用途是电子表和计算器的显示板,为什么会显示数字呢?原来这种液态光电显示材料,利用液晶的电光效应把电信号转换成字符、图像等可见信号。液晶在正常情况下,其分子排列很有秩序,显得清澈透明,一旦加上直流电场后,分子的排列被打乱,一部分液晶会改变光的传播方向,液晶屏前后的偏光片会阻挡特定方向的光线,从而产生颜色深浅的差异,因而能显示数字和图象。
LCD 构成
1.背光源(或背光模组)——由于液晶分子自身是无法发光的,因此若想出现画面,液晶显示器需要专门的发光源来提供光线,然后经过液晶分子的偏转来产生不同的颜色。而背光源起到的就是提供光能的作用。之前液晶显示器采用的都是名叫CCFL的冷阴极射线管,其发光原理与日光灯几乎完全相同,而现在新品液晶显示器都采用了更加节能、长寿面的LED背光源。灯管(或LED)发光后藉由导光板将光线分布到各处,通过背面的反射板将所有的光线的方向集中朝向液晶分子。最后光线通过prism sheet以及扩散板将光线均匀的散发出去,避免出现中央亮度过高、四周亮度过低的情况。
2.上下层两个偏光片——偏光片的作用是让光线从单方向通过。
3.上层和下层两块玻璃基板——玻璃基板不仅仅是两块玻璃那么简单,其内侧具有沟槽结构,并附着配向膜,可以让液晶分子沿着沟槽整齐的排列。在上、下两层玻璃两侧会贴有TFT薄膜晶体管和彩色滤光片。
4.ITO透明导电层——其作用是提供导电通路,分为像素电极(P级)和公共电极(M级)。在下一页中我们为大家讲解液晶面板结构更多的内容。
5.薄膜晶体管(就是我们经常所说的TFT)——我们经常说TFT-LCD,其实际上指的就是这个薄膜晶体管,它的作用类似于开关,TFT能够控制IC控制电路上的信号电压,并将其输送到液晶分子中,决定液晶分子偏转的角度大小,因此其是非常重要的一个部件。
6.液晶分子层 ——液晶分子层是改变光线偏光状态最重要的元素,通过电力和弹性力共同决定其排列和偏光状态。
7.彩色滤光片——通过液晶分子偏转的光线只能显示不同的灰阶,但是不能提供红、绿、蓝(RGB)三原色,而彩色滤光片则由RGB三种过滤片组成,通过三者混和调节各个颜色与亮度。液晶面板中每一个像素由红、绿、蓝3个点构成,每种颜色的点各自拥有不同的灰阶变化。
IIC/I2C接口LCD1602转接板
控制板IO口只有20个,加些传感器、SD卡啥的,继电器等模块多了,IO口就不够用了,原来的1602屏至少需要7个IO口才能驱动起来,这个模块可以帮你省5个IO口。
参数
1.供电电压:+5V
2.支持I2C协议
3.具有背光灯,和对比度调节电位器
4.4线输出更简单
5.设备地址:0x27
Arduino实验接线示意图
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验八十五:LCD1602液晶显示屏1602A模块 蓝屏黄绿屏灰屏5V 3.3V焊排针 IIC/I2C
LCD1602A扫描I2C地址程序之二
Arduino实验开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验八十八: LCD1602A液晶屏5V显示模块(IIC/I2C接口)
项目四:LCD1602A扫描I2C地址程序之二
Arduino------LCD1602
5V-------------VCC
GND-----------GND
A4-----------SDA IIC 数据线
A5-----------SCL IIC 时钟线
*/
#include
void setup() {
Serial.begin (115200); // 等待串口连接
while (!Serial) { }
Serial.println ();
Serial.println ("I2C scanner. Scanning ...");
byte count = 0;
Wire.begin();
for (byte i = 8; i < 120; i++) {
Wire.beginTransmission (i);
if (Wire.endTransmission () == 0) {
Serial.print ("Found address: ");
Serial.print (i, DEC);
Serial.print (" (0x");
Serial.print (i, HEX);
Serial.println (")");
count++;
delay (1); // 也许不需要?
} // 反应良好
} // for循环的结尾
Serial.println ("Done.");
Serial.print ("Found ");
Serial.print (count, DEC);
Serial.println (" device(s).");
} // 测试结束
void loop() {
}
实验串口返回情况
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验八十八: LCD1602A液晶屏5V显示模块(IIC/I2C接口)
项目:显示超声波测距开源代码
Arduino实验开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验八十八: LCD1602A液晶屏5V显示模块(IIC/I2C接口)
项目:显示超声波测距
Arduino------LCD1602
5V-------------VCC
GND-----------GND
A4-----------SDA IIC 数据线
A5-----------SCL IIC 时钟线
*/
#include
#include
#include
double angle_rad = PI / 180.0;
double angle_deg = 180.0 / PI;
float getDistance(int trig, int echo) {
pinMode(trig, OUTPUT);
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
pinMode(echo, INPUT);
return pulseIn(echo, HIGH, 30000) / 58.0;
}
byte getLCDaddress() {
Wire.begin();
byte LCDaddress = 0x27;
Wire.beginTransmission(LCDaddress);
byte resultNumber = Wire.endTransmission();
if (resultNumber == 0) {
return LCDaddress;
} else {
LCDaddress = 0x3F;
}
Wire.beginTransmission(LCDaddress);
resultNumber = Wire.endTransmission();
if (resultNumber == 0) {
return LCDaddress;
}
}
LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x3F, 16, 2);
void setup(){
lcd = LiquidCrystal_I2C(getLCDaddress(), 16, 2);
lcd.init(); //初始化LCD
lcd.backlight(); //打开背光
lcd.display();
}
void loop() {
lcd.setCursor(0, 0);
lcd.print(getDistance(7, 8));
lcd.setCursor(10, 1);
lcd.print(getDistance(7, 8));
delay(1 * 1000);
}
Arduino实验场景图
实验开源图形编程(Mixly、Mind+、编玩边学)
LCD1602A显示超声波测距
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实程序七:使用微波传感器制作Arduino运动探测器
安装库:IDE—工具—管理库—搜索LiquidCrystal_I2C库—安装
实验接线:微波传感器接D2,D12接蜂鸣器,D13接LED灯
LCD1602A IIC接口A4、A5
Arduino实验开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实程序七:使用微波传感器制作Arduino运动探测器
安装库:IDE—工具—管理库—搜索LiquidCrystal_I2C库—安装
实验接线:微波传感器接D2,D12接蜂鸣器,D13接LED灯
LCD1602A IIC接口A4、A5
*/
#include
#include
// 将LCD地址设置为0x27,以显示16个字符和2行
LiquidCrystal_I2C lcd(0x27, 16, 2);
int Sensor = 2; // D2接微波传感器
int LED = 13; // D13接LED灯
int Buzzer = 12; // D12接蜂鸣器
int flg = 0; // 变更检测标志
void setup()
{
Serial.begin(9600);
lcd.init(); //初始化LCD
lcd.clear(); // 清除LED屏幕
lcd.print("...MAKER.PRO...");
delay(2000);
lcd.backlight(); //打开背光
pinMode (Sensor, INPUT); // 将微波雷达引脚定义为输入
pinMode (Buzzer, OUTPUT); // 定义蜂鸣器为输出
pinMode (LED, OUTPUT); // 定义LED为输出
Serial.println("Waiting for motion");// 准备就绪
}
void loop()
{
int val = digitalRead(Sensor); //赋值微波感应信号给变量
if ((val > 0) && (flg == 0))// 检测到运动信号
{
digitalWrite(LED, HIGH);
digitalWrite(Buzzer, HIGH);
lcd.clear();
Serial.println("Motion Detected");
lcd.print("Motion Detected");
flg = 1;
}
if (val == 0) // 没有检测到运动
{
digitalWrite(LED, LOW);
digitalWrite(Buzzer, LOW);
lcd.clear(); // 清除LED屏幕
Serial.println("NO Motion");
lcd.print("NO Motion ");
flg = 0;
}
delay(100);
}
程序八开源图形编程(Mind+、编玩边学)