37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验十一:人体手指触摸Touch金属触摸传感器模块FOR KY-036电路板电子积木
四、程序四:测试模块的触摸灵敏度,控制LED
实验开源图形编程(Mind+、Mixly、编玩边学)
五、程序五:触摸控制LED灯,并在串口输出波形
1、Arduino参考开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
程序五:触摸控制LED灯,并在串口输出波形
*/
//引脚和变量的声明
int led = 13 ; // 引脚 13 用于输出 LED
int touch = 2; // 当我们触摸传感器时将发送信号的 Pin 2 数字输入
int potenciometro = A0; // 引脚 A0 模拟输入
int valsensor = 0;
int val = 0; // 传感器检测变量
void setup () {
Serial.begin (9600);
pinMode (led, OUTPUT) ; // 我们将 LED 引脚定义为输出
pinMode (potenciometro, INPUT) ; // // 定义触摸端作为输入
}
void loop () {
valsensor = analogRead (potenciometro); //读数的值分配给 valsensor
Serial.println (valsensor); //在串行监视器中,读数值将被打印出来
val = digitalRead(touch); // val 将被分配 touch - Pin 2 的输出值
if (val == HIGH) //条件,如果传感器被触摸并且 val 为 HIGH-HIGH 那么
{
digitalWrite (led, HIGH); //打开引脚 13 输出的 LED
}
else //否则,如果传感器没有被触摸...
{
digitalWrite (led, LOW); //LED 熄灭
}
}
2、实验串口绘图器返回情况(长线为有触摸信号,点亮LED)
六、程序六:测试串口输出的触摸产生电压值
1、Arduino参考开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
程序五:测试串口输出的触摸产生电压值
*/
int Analog_Input = A0; // 传感器的模拟输出
int Digital_Input = 2; // 传感器的数字输出
void setup ( ) {
pinMode (Analog_Input, INPUT);
pinMode (Digital_Input, INPUT);
Serial.begin (9600) ;
}
// 程序读取输入引脚的当前值
// 并在串行输出上输出
void loop ( ) {
float Analogous;
int Digital;
//读取实际值,转换为电压值...
Analogous = analogRead (Analog_Input) * (5.0 / 1023.0);
Digital = digitalRead (Digital_Input) ;
//... 并在此时输出串口
Serial.print ("模拟电压值:");
Serial.print (Analogous, 4) ;
Serial.print ("V, ");
Serial.print ("限制") ;
if (Digital == 1)
{
Serial.println ("到达");
}
else
{
Serial.println ("尚未到达");
}
Serial.println ( " ----------------------------------------------------------------") ;
delay (1000) ;
}
2、实验串口返回情况
七、程序七:触摸传感器顺序点亮红灯、绿灯和蓝灯
Arduino参考开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
程序七:触摸传感器顺序点亮红灯、绿灯和蓝灯
*/
byte touch_sense = 2; // 指定输入引脚D2
// 这是指定 三色RGB LED 引脚的地方
byte led_red = 8;
byte led_green = 9;
byte led_blue = 10;
// 这些变量用于计时目的
int kk = 1; int time_out = 1;
bool state_on = 0;
void setup() {
// 以每秒 9600 位初始化串行通信
Serial.begin(9600);
// 使触摸传感器引脚成为输入
pinMode(touch_sense, INPUT);
// 使 LED 输出
pinMode(led_red, OUTPUT);
pinMode(led_green, OUTPUT);
pinMode(led_blue, OUTPUT);
// 将 LED 预定义为关闭
digitalWrite(led_red, LOW);
digitalWrite(led_green, LOW);
digitalWrite(led_blue, LOW);
}
void loop() {
time_out++; // 迭代
int touch_state = digitalRead(touch_sense);
Serial.print(touch_state);
// if 语句询问它被触发了多少次
if (touch_state == 1 and state_on == 0) {
kk++;
state_on = 1;
time_out = 1;
delay(50);
} else if (state_on == 1 and touch_state == 0) {
state_on = 0;
delay(50);
}
// 更改此项以更改必须触摸触摸传感器以注册更改的速度
if (time_out > 40) {
Serial.println(" ");
Serial.println(kk);
if (kk == 2) {
// red on for 1 click
digitalWrite(led_red, HIGH);
digitalWrite(led_green, LOW);
digitalWrite(led_blue, LOW);
} else if (kk == 3) {
// green on for 2 clicks
digitalWrite(led_green, HIGH);
digitalWrite(led_blue, LOW);
digitalWrite(led_red, LOW);
} else if (kk == 4) {
// blue on for 3 clicks
digitalWrite(led_blue, HIGH);
digitalWrite(led_green, LOW);
digitalWrite(led_red, LOW);
}
kk = 1;
time_out = 1;
delay(10);
}
Serial.println(touch_state); // 查看状态
delay(1);
}
2、实验串口返回情况
3、实验场景图(触摸传感器顺序点亮蓝灯、绿灯和红灯)