faneGin
文章15
标签11
分类4
控制BBC开发板矩阵的行和列

控制BBC开发板矩阵的行和列

引言

在之前做读写的时候我们具体谢啦如何调用LED服务特性的函数,今天我们就要具体细化这个函数来控制BBC开发板矩阵的行和列

代码展示

首先我们把BBC板矩阵的各行和列都定义一个函数来使其具体化,并将数据寄存都在这个数组里。

var led = [0, 0, 0, 0, 0];

var x=[0, 0, 0, 0, 0] ; //行为X

var y=[0, 0, 0, 0, 0] ;//列为y

行和列具体有10中形态:第一行都亮、第二行都亮、第三行都亮。。。。。。第五行都亮

列:第一列都亮、第二列都亮、第三列都亮。。。。。。第五列都亮

所以,我们只要具体将这10中状态的实现出来就可以了。具体如下:

第一行都亮

function h_1()//第一行都亮

​ { if(x[0]==0){led[0]=31;x[0]=1;}

​ else{ led[0]=0;x[0]=0; }

​ rowcol(); }

第二行都亮

function h_2()//第二行都亮

​ { if(x[1]==0){led[1]=31;x[1]=1;}

​ else{led[1]=0;x[1]=0; }

​ rowcol(); }

第三行都亮

function h_3()//第三行都亮

​ { if(x[2]==0){ led[2]=31; x[2]=1; }

​ else{led[2]=0; x[2]=0;}

​ rowcol(); }

。。。。。。以此类推,重点注意列

第一列都亮

function L_1()//第一列都亮

​ { var i=0; if(y[0]==0)

​ { for(i=0;i<=4;i++) led[i]=led[i]|(1<<4); y[0]=1; }

​ else{ for(i=0;i<=4;i++) led[i]=led[i]&(~(1<<4));y[0]=0; }

​ rowcol(); }

第二列都亮

function L_2()//第二列都亮

​ { var i=0; if(y[1]==0)

​ { for(i=0;i<=4;i++)led[i]=led[i]|(1<<3); y[1]=1; }

​ else{for(i=0;i<=4;i++)led[i]=led[i]&(~(1<<3));y[1]=0; }

​ rowcol(); }

第三列都亮

function L_3()

​ { var i=0; if(y[2]==0)

​ { for(i=0;i<=4;i++)led[i]=led[i]|(1<<2); y[2]=1;}

​ else{ for(i=0;i<=4;i++)led[i]=led[i]&(~(1<<2));y[2]=0;}

​ rowcol();}

以此类推。

但是光写出来具体状态不调用LED服务特性也不行,之前我们具体写了LED的randomLEDs()函数,我们可以仿照其再写一个类似的函数,来实现小灯的亮灭。具体如下

function rowcol()

​ {

​ console.log(“randomLEDs”);

​ // state validation

​ if (!connected)

​ {

​ alert(“Error: Discover and connect to a device before using this function”);

​ return;

​ }

​ if (!services_discovered)

​ {

​ alert(“Error: Service discovery has not yet completed”);

​ return;

​ }

​ if (!has_led_service)

​ {

​ alert(“Error: The connected device does not contain the LED service”);

​ return;

​ }

​ if (!has_led_matrix_state)

​ {

​ alert(“Error: The connected device does not contain the LED matrix state characteristic”);

​ return;

​ }

​ var led_matrix_data = new Uint8Array(led);

​ led_matrix_state.writeValue(led_matrix_data.buffer)

​ .then(_ => {

​ console.log(‘LED matrix state changed’);

​ })

​ .catch(error => {

​ console.log(‘Error: ‘ + error);

​ alert(‘Error: ‘ + error); return;

​ });

​ }

最后

因为光有函数没有具体调用接口,有函数也没用,所以我们可以通过具体实现几个按钮来完成。

效果图

我这边大写了我名字的H