Espruino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2944|回复: 1

菜单控制 LED

[复制链接]

6

主题

21

帖子

110

积分

注册会员

Rank: 2

积分
110
发表于 2014-7-11 03:54:50 | 显示全部楼层 |阅读模式
[mw_shl_code=javascript,true]/*

  菜单控制 LED
  by qq:20437023

*/

SPI1.setup({ sck:B3, mosi:B5, order: "lsb", baud: 1000000 });

var g = require("MemoryLCD").connect(SPI1, B4/*SCS*/, C12/*EXTCOMIN*/,128/*宽*/, 128/*高*/);
g.setFontVector(20);
g.clear();
var w = g.getWidth();//屏幕宽
var h = g.getHeight();//屏幕高

// 菜单显示内容
var menus = ["LED1","LED2","LED3"];
// 缺省焦点
var index = 1;
// 所有 LED 集合
var leds=[LED1,LED2,LED3];
// 绘制菜单
function drawMenu(){
  var x=32;
  var y=32;
  for(var i=1;i<menus.length+1;i++){
    if(index!=i){
      g.setColor(0,0,0);
      g.fillRect(x, y+(i-1)*21, w-32, y+i*21);
      g.setColor(255, 255, 255);
      g.drawRect(x, y+(i-1)*21, w-32, y+i*21);
      g.drawString(menus[i-1],x,y+(i-1)*21);
    }else{
      g.setColor(255, 255, 255);
      g.fillRect(x, y+(i-1)*21, w-32, y+i*21);
      g.setColor(0,0,0);
      g.drawString(menus[i-1],x,y+(i-1)*21);
    }
    y+=2;// 菜单间隔
  }
  g.flip();
}

setWatch(function() {
  index++;
  if(index>(menus.length))index=1;
  console.log(index);
  drawMenu();
  digitalWrite(leds[index-1], !digitalRead(leds[index-1]) );
},BTN1,{repeat:true,edge:'rising',debounce:10});

/*
// 为什么同时用两个 setWatch 就不好使了呢?
// 本来准备菜单选好了第二个按钮控制开或者关的
setWatch(function(){
  console.log(index);
  digitalWrite(leds[index-1], !digitalRead(leds[index-1]) );
},BTN2,{repeat:true,edge:'rising',debounce:10});
*/

// 初始化菜单以及LED
drawMenu();
digitalWrite(leds[index-1],index);
save();
[/mw_shl_code]

26

主题

92

帖子

4万

积分

论坛元老

Rank: 8Rank: 8

积分
40603

最佳新人活跃会员突出贡献论坛元老

发表于 2014-7-11 09:26:11 | 显示全部楼层
不能直接调用BTN2的,需要加入var BTN2=C5;板子的资料我已经给你发到邮箱了,你没看到吗?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|Espruino中文社区 ( 苏14007051 )

GMT+8, 2019-10-22 14:41 , Processed in 0.179455 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表