37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百零三:TTP224 四路 电容式 触摸开关 数字触摸传感器模块
四位与八位电容按键矩阵模块实验环境
一、四位与八位电容按键矩阵模块实验所需硬件清单
Arduino Uno开发板 X1
杜邦线 若干(备了9条)
LED发光二极管(蓝色)X1
四位TTP224矩阵键盘模块X1
八位TTP226矩阵键盘模块X1
高电平触发有源蜂鸣器模块X1
5MM三色RGB全彩LED模块X1
高电平触发单路5V继电器模块X1
三色LED交通灯模块(红绿黄灯)X1
Proto Shield 原型扩展板(带mini面包板)X1
四、程序四:TTP224電容觸控控制LED燈
1、Arduino参考开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
程序四:TTP224電容觸控控制LED燈
实验结果:用3个按键控制3个LED灯,触碰开关时,LED灯亮,
手一放开就会熄灭。按键4是开关的功能,按一下全开,再按一下全关。
*/
boolean b4=false; // LED 状态
void setup() {
Serial.begin(9600);
// LED
pinMode(9, OUTPUT); // LED 1
pinMode(10, OUTPUT); // LED 2
pinMode(11, OUTPUT); // LED 3
// 按鍵
pinMode(2, INPUT); // 按鍵 1
pinMode(3, INPUT); // 按鍵 2
pinMode(4, INPUT); // 按鍵 3
pinMode(5, INPUT); // 按鍵 4
}
void loop() {
// 按鍵 1
if(digitalRead(2)){
Serial.println("Button 1 Touched ");
digitalWrite(9, HIGH); // LED 亮
delay(200);
}
else{
digitalWrite(9, LOW); // LED 熄灭
}
// 按鍵 2
if(digitalRead(3)){
Serial.println("Button 2 Touched ");
digitalWrite(10, HIGH); // LED 亮
delay(200);
}
else{
digitalWrite(10, LOW); // LED 熄灭
}
// 按鍵 3
if(digitalRead(4)){
Serial.println("Button 3 Touched ");
digitalWrite(11, HIGH); // LED 亮
delay(200);
}
else{
digitalWrite(11, LOW); // LED 熄灭
}
// 按鍵4
if(digitalRead(5)){
Serial.println("Button 4 Touched ");
b4=!b4; // 改变开关状态
delay(300);
}
if (b4) { // LED 全亮
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
}
else{ // LED 熄灭
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
}
}
2、实验接线参考示意图
3、实验串口返回情况
4、实验场景图
五、程序五:检查每个键是否被触摸,输出是否显示在串行监视器上
1、Arduino参考开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
程序五:检查每个键是否被触摸,输出是否显示在串行监视器上
*/
//定义按键
const int touchButton_1 = 4;
const int touchButton_2 = 5;
const int touchButton_3 = 6;
const int touchButton_4 = 7;
void setup() {
Serial.begin(9600);
//设置输入按键
pinMode(touchButton_1, INPUT);
pinMode(touchButton_2, INPUT);
pinMode(touchButton_3, INPUT);
pinMode(touchButton_4, INPUT);
}
void loop() {
//串口打印按键数值
Serial.print(digitalRead(touchButton_1));
Serial.print("\t");
Serial.print(digitalRead(touchButton_2));
Serial.print("\t");
Serial.print(digitalRead(touchButton_3));
Serial.print("\t");
Serial.println(digitalRead(touchButton_4));
delay(1500);
}
2、实验串口返回情况
六、程序六:控制 RGB LED 的颜色值并在串行监视器上显示当前值
1、Arduino参考开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
程序六:控制 RGB LED 的颜色值并在串行监视器上显示当前值
*/
#define Button1 2 //按钮引脚
#define Button2 3
#define Button3 4
#define Button4 5
#define LED_R 9 //RGB 引脚应该是 pwm
#define LED_G 10
#define LED_B 11
int Red = 0, Blue = 0, Green = 0; //要影响到RGB的颜色值
//存储按钮状态
bool Button1_State, Button2_State, Button3_State, Button4_State;
void setup() {
Serial.begin(9600); //设置串口通讯
pinMode(Button1, INPUT); //设置引脚模式
pinMode(Button2, INPUT);
pinMode(Button3, INPUT);
pinMode(Button4, INPUT);
pinMode(LED_R, OUTPUT);
pinMode(LED_G, OUTPUT);
pinMode(LED_B, OUTPUT);
}
void loop() {
Serial.print(Red); //在串口监视器上显示颜色值
Serial.print("\t");
Serial.print(Green);
Serial.print("\t");
Serial.println(Blue);
Button1_State = digitalRead(Button1); //读取按钮状态
Button2_State = digitalRead(Button2);
Button3_State = digitalRead(Button3);
Button4_State = digitalRead(Button4);
analogWrite(LED_R, Red); //将值写入RGB
analogWrite(LED_G, Green);
analogWrite(LED_B, Blue);
if (Button1_State == HIGH) //按钮1控制红色,2绿色和3蓝色
Red += 20; //每次按下该值都会增加20,您可以根据需要更改
if (Red >= 255) //如果超过限制将被带回0
Red = 0;
if (Button2_State == HIGH)
Green += 20;
if (Green >= 255)
Green = 0;
if (Button3_State == HIGH)
Blue += 20;
if (Blue >= 255)
Blue = 0;
if (Button4_State == HIGH) { //按钮4将值重置为0
Red = 0;
Green = 0;
Blue = 0;
}
//为了避免一次触摸被计为10或更多,虽然100相当大,
//你可以减少它并实验测试
delay(100);
}
2、实验接线参考示意图
3、实验串口返回情况
4、实验场景图