KE2049 keyes brick 魔术光杯传感器(焊盘孔) 防反插白色端子

ke2049-1

1.概述

这是一个常用的魔术光杯传感器。原理是利用PWM调光的原理,两个传感器的亮度发生变化。滚珠开关提供数字信号,触发PWM的调节,通过程序的设计,我们就能看到类似于两组装满光的杯子倒来倒去的效果了。为方便接线,我们将A3 A5当做数字口用,利用PWM的基本原理,我们将A3 A5信号端模拟成两个PWM口。

为了方面接线,我们还配送1根4pin线,线的一端为白色防反插接口(和传感器上防反插白色端子匹配),另一端为4pin杜邦线母头接口。

传感器兼容各种单片机控制板,如arduino系列单片机。使用时,我们可以在单片机上堆叠一个传感器扩展板。传感器和自带导线连接,然后连接在传感器扩展板上,简单方便同时,传感器自带2个直径为3mm的定位孔,方便你将传感器固定在其他设备。

2.规格参数

导线长度:200mm

工作电压:DC 3.3-5V

控制信号:数字信号(模拟PWM信号)

接口:间距为2.54mm 4pin防反接口

定位孔大小:直径为3mm

尺寸:34*27*15mm

重量: 3.2g*2

3.连接图

KE2049-3

4.测试代码

int LedPinA = A3;

int LedPinB = A5;

int ButtonPinA = A2;

int ButtonPinB = A4;

int buttonStateA = 0;

int buttonStateB = 0;

int brightnessA = 0;

int brightnessB= 1000;

void setup()

{

Serial.begin(9600);//设置波特率

pinMode(LedPinA, OUTPUT);

pinMode(LedPinB, OUTPUT);

pinMode(ButtonPinA, INPUT);

pinMode(ButtonPinB, INPUT);

}

void loop()

{

buttonStateA = digitalRead(ButtonPinA);//读取数字口7的数值赋值给buttonStateA

if (buttonStateA == HIGH && brightnessA != 1000)

//当buttonStateA为高电平且brightnessA不为1000

{

brightnessA++;//brightnessA加1

}

if (buttonStateA == LOW && brightnessA != 0)

//当buttonStateA为低电平且brightnessA不为0

{

brightnessA– ;//brightnessA减1

}

Serial.print(brightnessA);//显示brightnessA数值

Serial.print(” “);

buttonStateB = digitalRead(ButtonPinB);//读取数字口4的数值赋值给buttonStateB

if (buttonStateB == HIGH && brightnessB != 0)

//当buttonStateB为高电平且brightnessA不为0

{

brightnessB–;//brightnessB减1

}

if (buttonStateB == LOW && brightnessB != 1000)

//当buttonStateB为低电平且brightnessA不为1000

{

brightnessB++;//brightnessB加1

}

Serial.println(brightnessB);//显示brightnessB数值,并自动换行

if((brightnessA>0)&&(brightnessA< 1000))

PWMA(brightnessA);

if (brightnessA ==0)

digitalWrite(A3, LOW);

if (brightnessA==1000)

digitalWrite(A3, HIGH);

if ((brightnessB>0)&&(brightnessB< 1000))

PWMB(brightnessB);

if (brightnessB==0)

digitalWrite(A5, LOW);

if (brightnessB==1000)

digitalWrite(A5, HIGH);

}

void PWMA(int val)//定义一个脉冲函数

{

for (int i =0; i <5; i++)

{

digitalWrite(A3, HIGH);

delayMicroseconds(val); // Approximately 10% duty cycle @ 1KHz

digitalWrite(A3, LOW);

delayMicroseconds(1000 – val); //修改这里的1000可以调整频率

}

}

void PWMB(int val1)//定义一个脉冲函数

{

for (int i =0; i <5; i++)

{

digital

Write(A5, HIGH);

delayMicroseconds(val1); // Approximately 10% duty cycle @ 1KHz

digitalWrite(A5, LOW);

delayMicroseconds(1000 – val1); //修改这里的1000可以调整频率

}

}

5.测试结果

烧录好测试代码,按照接线图连接好线;利用USB接口上电后,进入串口监视器,设置波特率为9600。将两个魔术光杯传感器同时倾斜一边, 一个魔术光杯上的LED逐渐变暗,同时另一个逐渐变亮,最终一个LED完全熄灭,一个LED最亮;在串口监视器中看到对应具体数值变化,如下图。当倾斜另一边中,现象一样,方向相反。