Skip to content

Commit 3fc6518

Browse files
committed
init
1 parent a39afc2 commit 3fc6518

15 files changed

Lines changed: 356 additions & 0 deletions

README.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# webduino-module-tm1637
2+
3+
Webduino Module for TM1637.
4+
5+
## Installation
6+
7+
```
8+
bower install https://github.com/webduinoio/webduino-module-tm1637.git
9+
```
10+
11+
## License
12+
13+
This project is licensed under the MIT license, see LICENSE for more information.

TM1637-blockly.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
+(function (window, webduino) {
2+
3+
'use strict';
4+
5+
window.getTM1637 = function (board, clk, dio) {
6+
return new webduino.module.TM1637(board, clk, dio);
7+
};
8+
9+
}(window, window.webduino));

TM1637.js

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
+(function (factory) {
2+
if (typeof exports === 'undefined') {
3+
factory(webduino || {});
4+
} else {
5+
module.exports = factory;
6+
}
7+
}(function (scope) {
8+
'use strict';
9+
10+
var self;
11+
var proto;
12+
var Module = scope.Module;
13+
14+
function TM1637(board, clk, dio) {
15+
Module.call(this);
16+
this._board = board;
17+
self = this;
18+
self._clk = clk;
19+
self._dio = dio;
20+
board.send([0xf0, 0x04, 0x44, 0x0, clk, dio, 0xf7]);
21+
board.on(webduino.BoardEvent.SYSEX_MESSAGE,
22+
function (event) {
23+
var m = event.message;
24+
sending = false;
25+
});
26+
}
27+
28+
TM1637.prototype = proto = Object.create(Module.prototype, {
29+
constructor: {
30+
value: TM1637
31+
}
32+
});
33+
34+
proto.brightness = function(num) { //num 0~8
35+
36+
this._board.send([0xf0, 0x04, 0x44, 0x1, num, 0xf7]);
37+
}
38+
39+
//
40+
// 1
41+
// ---
42+
// 6 | | 2
43+
// -7-
44+
// 5 | | 3
45+
// ---
46+
// 4
47+
// 7654321
48+
proto.setSegments = function(data) {
49+
console.log(data);
50+
for(var j = 0; j < 4; j++){
51+
if(data[j] != null){
52+
var StrData = data[j].toString();
53+
var total = 0;
54+
for(var i = 0; i < StrData.length; i++){
55+
var temp = 1 << (StrData.charAt(i) - 1 );
56+
total |= temp;
57+
}
58+
data[j] = total;
59+
}else {
60+
data[j] = 0;
61+
}
62+
}
63+
this._board.send([0xf0, 0x04, 0x44, 0x2, data[0], data[1], data[2], data[3], 0xf7]);
64+
}
65+
66+
proto.showDec = function(num, colon, zero){
67+
colon = colon ? 0x40 : 0;
68+
var StrData = num.toString();
69+
for(var i = 0; i < StrData.length; i++){
70+
// console.log(parseInt(StrData.charAt(i)));
71+
this._board.send([0xf0, 0x04, 0x44, 0x3, parseInt(StrData.charAt(i)), 0xf7]);
72+
}
73+
this._board.send([0xf0, 0x04, 0x44, 0x4, colon, zero, 0xf7]);
74+
}
75+
76+
proto.off = function(){
77+
this._board.send([0xf0, 0x04, 0x44, 0x5, 0xf7]);
78+
}
79+
80+
scope.module.TM1637 = TM1637;
81+
}));

blockly.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"types": ["tm1637_new", "tm1637_brightness", "tm1637_segments", "tm1637_showdec", "tm1637_off"],
3+
"category": "catMenu1",
4+
"scripts": [
5+
"blockly/blocks.js",
6+
"blockly/javascript.js"
7+
],
8+
"dependencies": [
9+
"TM1637.js",
10+
"TM1637-blockly.js"
11+
],
12+
"msg": "blockly/msg",
13+
"blocksMsg": "blockly/msg/blocks",
14+
"toolbox": "blockly/toolbox.xml"
15+
}

blockly/blocks.js

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
Blockly.Blocks['tm1637_new'] = {
2+
init: function () {
3+
this.appendDummyInput()
4+
.appendField(Blockly.Msg.WEBDUINO_TM1637, "七段顯示器 ( TM1637 ) ")
5+
.appendField(Blockly.Msg.WEBDUINO_TM1637_CLK, "CLK")
6+
.appendField(new Blockly.FieldDropdown(Code.getPinDropdown), "clk")
7+
.appendField(Blockly.Msg.WEBDUINO_TM1637_DIO, "DIO")
8+
.appendField(new Blockly.FieldDropdown(Code.getPinDropdown), "dio");
9+
this.setOutput(true);
10+
this.setColour(230);
11+
this.setTooltip('');
12+
this.setHelpUrl('http://webduinoio.github.io/demo/max7219/');
13+
}
14+
};
15+
16+
17+
Blockly.Blocks['tm1637_brightness'] = {
18+
init: function() {
19+
this.appendValueInput("brightness")
20+
.setCheck("Number")
21+
.appendField(Blockly.Msg.WEBDUINO_TM1637_SET, "設定")
22+
.appendField(new Blockly.FieldVariable("tm1637"), "var")
23+
.appendField(Blockly.Msg.WEBDUINO_TM1637_BRIGHTNESS, "亮度 (0~7)");
24+
this.setInputsInline(true);
25+
this.setPreviousStatement(true, null);
26+
this.setNextStatement(true, null);
27+
this.setColour(65);
28+
this.setTooltip('');
29+
this.setHelpUrl('http://www.example.com/');
30+
}
31+
};
32+
33+
Blockly.Blocks['tm1637_segments'] = {
34+
init: function() {
35+
this.appendDummyInput()
36+
.appendField(new Blockly.FieldVariable("tm1637"), "var")
37+
.appendField(Blockly.Msg.WEBDUINO_TM1637_SHOW_FOUR_DIGITS, "顯示四位數 (由左而右)");
38+
this.appendValueInput("list")
39+
.setCheck(null)
40+
.appendField(new Blockly.FieldImage("https://lh3.googleusercontent.com/qBQqa0xGAZ8abZAzgeia7zADGYlszfq0g1c57cha8fINgC7dVXLTw_uANk-6qSugo9SYQsLF7Yv0nVvOCmdaC1Kq_YU1g9aCYTsiXXfDTy8f5SyH9Saj0fOX-kaoJxpsrnWaMkSEEg=w2400", 150, 100, "*"))
41+
.appendField(Blockly.Msg.WEBDUINO_TM1637_CODE_ORDER , "代碼依序 (列表)");
42+
this.setPreviousStatement(true, null);
43+
this.setNextStatement(true, null);
44+
this.setColour(65);
45+
this.setTooltip('');
46+
this.setHelpUrl('http://www.example.com/');
47+
}
48+
};
49+
50+
Blockly.Blocks['tm1637_showdec'] = {
51+
init: function() {
52+
this.appendValueInput("decimal")
53+
.setCheck("Number")
54+
.appendField(new Blockly.FieldVariable("tm1637"), "var")
55+
.appendField(Blockly.Msg.WEBDUINO_TM1637_SHOW_NUMBER, "顯示數字 (0~9999)");
56+
this.appendDummyInput()
57+
.appendField(Blockly.Msg.WEBDUINO_TM1637_COLON, "冒號")
58+
.appendField(new Blockly.FieldCheckbox("TRUE"), "colon")
59+
.appendField(Blockly.Msg.WEBDUINO_TM1637_LEADING_ZERO, " 前面補零")
60+
.appendField(new Blockly.FieldCheckbox("TRUE"), "zero");
61+
this.setPreviousStatement(true, null);
62+
this.setNextStatement(true, null);
63+
this.setColour(65);
64+
this.setTooltip('');
65+
this.setHelpUrl('http://www.example.com/');
66+
}
67+
};
68+
69+
Blockly.Blocks['tm1637_off'] = {
70+
init: function() {
71+
this.appendDummyInput()
72+
.appendField(Blockly.Msg.WEBDUINO_TM1637_OFF, "關閉")
73+
.appendField(new Blockly.FieldVariable("tm1637"), "var");
74+
this.setInputsInline(false);
75+
this.setPreviousStatement(true, null);
76+
this.setNextStatement(true, null);
77+
this.setColour(65);
78+
this.setTooltip('');
79+
this.setHelpUrl('http://www.example.com/');
80+
}
81+
};

blockly/javascript.js

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
Blockly.JavaScript['tm1637_new'] = function (block) {
2+
3+
var dropdown_dio_ = block.getFieldValue('dio');
4+
var dropdown_clk_ = block.getFieldValue('clk');
5+
var code = 'getTM1637(board, ' + dropdown_clk_ + ', ' + dropdown_dio_ + ')';
6+
return [code, Blockly.JavaScript.ORDER_FUNCTION_CALL];
7+
};
8+
9+
Blockly.JavaScript['tm1637_brightness'] = function(block) {
10+
var variable_var = Blockly.JavaScript.variableDB_.getName(block.getFieldValue('var'), Blockly.Variables.NAME_TYPE);
11+
var value_brightness_ = Blockly.JavaScript.valueToCode(block, 'brightness', Blockly.JavaScript.ORDER_ATOMIC);
12+
var code = variable_var + '.brightness(' + value_brightness_ + ');\n';
13+
return code;
14+
};
15+
16+
Blockly.JavaScript['tm1637_segments'] = function(block) {
17+
var variable_var = Blockly.JavaScript.variableDB_.getName(block.getFieldValue('var'), Blockly.Variables.NAME_TYPE);
18+
var value_name = Blockly.JavaScript.valueToCode(block, 'NAME', Blockly.JavaScript.ORDER_ATOMIC);
19+
var value_list_ = Blockly.JavaScript.valueToCode(block, 'list', Blockly.JavaScript.ORDER_ATOMIC);
20+
var varData = Blockly.JavaScript.variableDB_.getDistinctName(
21+
'varData', Blockly.Variables.NAME_TYPE);
22+
var code = 'var ' + varData + '=' +
23+
value_list_ + ';\n'+
24+
variable_var + '.setSegments('+
25+
varData + ');\n';
26+
return code;
27+
};
28+
29+
Blockly.JavaScript['tm1637_showdec'] = function(block) {
30+
var variable_var = Blockly.JavaScript.variableDB_.getName(block.getFieldValue('var'), Blockly.Variables.NAME_TYPE);
31+
var value_decimal_ = Blockly.JavaScript.valueToCode(block, 'decimal', Blockly.JavaScript.ORDER_ATOMIC);
32+
var checkbox_colon_ = block.getFieldValue('colon') == 'TRUE';
33+
var checkbox_zero_ = block.getFieldValue('zero') == 'TRUE';
34+
var code = variable_var + '.showDec(' +
35+
value_decimal_ + ',' +
36+
checkbox_colon_ + ',' +
37+
checkbox_zero_ + ');\n';
38+
return code;
39+
};
40+
41+
Blockly.JavaScript['tm1637_off'] = function(block) {
42+
var variable_var = Blockly.JavaScript.variableDB_.getName(block.getFieldValue('var'), Blockly.Variables.NAME_TYPE);
43+
var code = variable_var + '.off();\n';
44+
return code;
45+
};
46+

blockly/msg/blocks/en.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
Blockly.Msg.WEBDUINO_TM1637 = "Seven-segment display (TM1637)";
2+
Blockly.Msg.WEBDUINO_TM1637_CLK = "CLK";
3+
Blockly.Msg.WEBDUINO_TM1637_DIO = "DIO";
4+
Blockly.Msg.WEBDUINO_TM1637_SET = "Settings";
5+
Blockly.Msg.WEBDUINO_TM1637_BRIGHTNESS = "brightness (0~7)";
6+
Blockly.Msg.WEBDUINO_TM1637_SHOW_FOUR_DIGITS = "Show four digits (from left to right)";
7+
Blockly.Msg.WEBDUINO_TM1637_CODE_ORDER = "Code in order (list)";
8+
Blockly.Msg.WEBDUINO_TM1637_SHOW_NUMBER = "Show numbers (0~9999)";
9+
Blockly.Msg.WEBDUINO_TM1637_COLON = "colon";
10+
Blockly.Msg.WEBDUINO_TM1637_LEADING_ZERO = "front zero";
11+
Blockly.Msg.WEBDUINO_TM1637_OFF = "Close";

blockly/msg/blocks/zh-hans.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
Blockly.Msg.WEBDUINO_TM1637 = "七段显示器 ( TM1637 ) ";
2+
Blockly.Msg.WEBDUINO_TM1637_CLK = "CLK";
3+
Blockly.Msg.WEBDUINO_TM1637_DIO = "DIO";
4+
Blockly.Msg.WEBDUINO_TM1637_SET = "设定";
5+
Blockly.Msg.WEBDUINO_TM1637_BRIGHTNESS = "亮度 (0~7)";
6+
Blockly.Msg.WEBDUINO_TM1637_SHOW_FOUR_DIGITS = "显示四位数 (由左而右)";
7+
Blockly.Msg.WEBDUINO_TM1637_CODE_ORDER = "代码依序 (列表)";
8+
Blockly.Msg.WEBDUINO_TM1637_SHOW_NUMBER = "显示数字 (0~9999)";
9+
Blockly.Msg.WEBDUINO_TM1637_COLON = "冒号";
10+
Blockly.Msg.WEBDUINO_TM1637_LEADING_ZERO = " 前面补零";
11+
Blockly.Msg.WEBDUINO_TM1637_OFF = "关闭";

blockly/msg/blocks/zh-hant.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
Blockly.Msg.WEBDUINO_TM1637 = "七段顯示器 ( TM1637 ) ";
2+
Blockly.Msg.WEBDUINO_TM1637_CLK = "CLK";
3+
Blockly.Msg.WEBDUINO_TM1637_DIO = "DIO";
4+
Blockly.Msg.WEBDUINO_TM1637_SET = "設定";
5+
Blockly.Msg.WEBDUINO_TM1637_BRIGHTNESS = "亮度 (0~7)";
6+
Blockly.Msg.WEBDUINO_TM1637_SHOW_FOUR_DIGITS = "顯示四位數 (由左而右)";
7+
Blockly.Msg.WEBDUINO_TM1637_CODE_ORDER = "代碼依序 (列表)";
8+
Blockly.Msg.WEBDUINO_TM1637_SHOW_NUMBER = "顯示數字 (0~9999)";
9+
Blockly.Msg.WEBDUINO_TM1637_COLON = "冒號";
10+
Blockly.Msg.WEBDUINO_TM1637_LEADING_ZERO = " 前面補零";
11+
Blockly.Msg.WEBDUINO_TM1637_OFF = "關閉";

blockly/msg/en.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
MSG.catTM1637 = "Seven-Segments Display";

0 commit comments

Comments
 (0)