Skip to content

Commit e14de56

Browse files
committed
led ws2812b
2 parents 80c3b6f + ba9729e commit e14de56

File tree

7 files changed

+97
-34
lines changed

7 files changed

+97
-34
lines changed

atmega328p.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,12 +60,23 @@ def setLed(self, begin_led, end_led, red, green, blue):
6060
resp = self.spi.xfer([START, CMD_SET_LED, begin_led, end_led, red,green, blue], BAUDRATE)
6161
return resp[3]
6262

63+
def set_led(self, begin_led, end_led, red, green, blue):
64+
begin = begin_led - 1
65+
end = end_led - 1
66+
red = int(red * 255 / 100)
67+
green = int(green * 255 / 100)
68+
blue = int(blue * 255 / 100)
69+
return self.setLed(begin, end, red, green, blue)
70+
time.sleep(0.02)
71+
6372
def get_input(self, addr):
6473
if addr >= ADDR_AI_FIRST and addr <= ADDR_AI_LAST:
6574
return self.analogRead(addr)
6675
elif addr >= ADDR_DI_FIRST and addr <= ADDR_DI_LAST:
6776
return self.digitalRead(addr)
77+
time.sleep(0.02)
6878

6979
def set_output(self, addr, value):
7080
if addr >= ADDR_DO_FIRST and addr <= ADDR_DO_LAST:
7181
self.digitalWrite(addr, value)
82+
time.sleep(0.02)

data/program_test_led.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"name": "test_led", "dom_code": "<xml xmlns=\"https://developers.google.com/blockly/xml\"><variables><variable id=\"mV|1?_`t].w9ldDjB#Pd\">i</variable><variable id=\".^%KgNcWO{?uvr(igb/M\">c</variable></variables><block type=\"coderbot_atmega_set_led\" id=\"U4M/5!Z8)ydVSl6!KGfl\" x=\"210\" y=\"90\"><value name=\"BEGIN\"><block type=\"math_number\" id=\"}+N@zF-K}std2rBA.rcB\"><field name=\"NUM\">0</field></block></value><value name=\"END\"><block type=\"math_number\" id=\"P5Z~%^uZJH*2vb_Y4kX9\"><field name=\"NUM\">60</field></block></value><value name=\"RED\"><block type=\"math_number\" id=\"n`wi],+ar)H__{76(8aO\"><field name=\"NUM\">0</field></block></value><value name=\"GREEN\"><block type=\"math_number\" id=\"aXK={ZR{EA-S~kZ4r2x)\"><field name=\"NUM\">0</field></block></value><value name=\"BLUE\"><block type=\"math_number\" id=\"H5Av._zz|gP;e)uQnw7D\"><field name=\"NUM\">0</field></block></value><next><block type=\"controls_for\" id=\"(HLoJr|poNT!f(*wl5Gt\"><field name=\"VAR\" id=\"mV|1?_`t].w9ldDjB#Pd\">i</field><value name=\"FROM\"><block type=\"math_number\" id=\"q%I+x1$v$Hb9qjS^gv|X\"><field name=\"NUM\">0</field></block></value><value name=\"TO\"><block type=\"math_number\" id=\"LGGuAK)PAr0r_@a~AbsB\"><field name=\"NUM\">60</field></block></value><value name=\"BY\"><block type=\"math_number\" id=\"L,d:{%h6_[vN@,jN/wi2\"><field name=\"NUM\">1</field></block></value><statement name=\"DO\"><block type=\"controls_for\" id=\"E`+DR_wKgE9^3DO}G8ew\"><field name=\"VAR\" id=\".^%KgNcWO{?uvr(igb/M\">c</field><value name=\"FROM\"><block type=\"math_number\" id=\"_q2GlJkegi#GR|dez;A!\"><field name=\"NUM\">1</field></block></value><value name=\"TO\"><block type=\"math_number\" id=\"x/aQ`cU1Ks(6=yJu{2^k\"><field name=\"NUM\">255</field></block></value><value name=\"BY\"><block type=\"math_number\" id=\")/gFUFR1opq/8HgCVNws\"><field name=\"NUM\">128</field></block></value><statement name=\"DO\"><block type=\"coderbot_atmega_set_led\" id=\"xu/0IEI)Ts8=FqPFqVn)\"><value name=\"BEGIN\"><block type=\"math_number\" id=\"4MV@oe@Q!BsCsU($,I}V\"><field name=\"NUM\">0</field></block></value><value name=\"END\"><block type=\"math_number\" id=\"]ziY%|-2qX($LMkS;NH~\"><field name=\"NUM\">60</field></block></value><value name=\"RED\"><block type=\"math_number\" id=\"3]+P|Rq;Si5wHGK6/@^3\"><field name=\"NUM\">0</field></block></value><value name=\"GREEN\"><block type=\"math_number\" id=\"q#!lPC%rrlw~8O*O:sz^\"><field name=\"NUM\">0</field></block></value><value name=\"BLUE\"><block type=\"math_number\" id=\"l!Tzd:G5fPm=3Kax^5M0\"><field name=\"NUM\">0</field></block></value><next><block type=\"coderbot_sleep\" id=\"rJ5o4y{SN/n1}Vzi[)@9\"><value name=\"ELAPSE\"><block type=\"math_number\" id=\"=plx%e,VpcB`l8%=I[dd\"><field name=\"NUM\">0.01</field></block></value><next><block type=\"coderbot_atmega_set_led\" id=\"chy~IyYrzHH*[t+@jnZ#\"><value name=\"BEGIN\"><block type=\"variables_get\" id=\"HtnTmdSQ[/||-yHV!Li.\"><field name=\"VAR\" id=\"mV|1?_`t].w9ldDjB#Pd\">i</field></block></value><value name=\"END\"><block type=\"math_arithmetic\" id=\"Y#AHd_Be05gTr_XeqTO:\"><field name=\"OP\">ADD</field><value name=\"A\"><block type=\"variables_get\" id=\"$y/*rz!oS[8Z8-H2#Iuk\"><field name=\"VAR\" id=\"mV|1?_`t].w9ldDjB#Pd\">i</field></block></value><value name=\"B\"><block type=\"math_number\" id=\"j*iHZ-T$?yn%m-FJCY{c\"><field name=\"NUM\">4</field></block></value></block></value><value name=\"RED\"><block type=\"math_arithmetic\" id=\";kBE!f4tZqXL^tuWv7zr\"><field name=\"OP\">MULTIPLY</field><value name=\"A\"><block type=\"variables_get\" id=\"deHK(hlFV.KR=uZg9z;w\"><field name=\"VAR\" id=\".^%KgNcWO{?uvr(igb/M\">c</field></block></value><value name=\"B\"><block type=\"math_number\" id=\"46z)lg$93j{/jj.Co{^(\"><field name=\"NUM\">1</field></block></value></block></value><value name=\"GREEN\"><block type=\"math_arithmetic\" id=\";Esa/)mXftItk:dsgx2H\"><field name=\"OP\">MULTIPLY</field><value name=\"A\"><block type=\"variables_get\" id=\"@:64T_Ryd_XG~BF|-3l}\"><field name=\"VAR\" id=\".^%KgNcWO{?uvr(igb/M\">c</field></block></value><value name=\"B\"><block type=\"math_number\" id=\"`0hSm^wEqrW:-mM%CjiZ\"><field name=\"NUM\">8</field></block></value></block></value><value name=\"BLUE\"><block type=\"math_arithmetic\" id=\"iUrI|HZnVrxre*:bpwtp\"><field name=\"OP\">MULTIPLY</field><value name=\"A\"><block type=\"variables_get\" id=\"aKlo?CPZPeg]$~[L)y^h\"><field name=\"VAR\" id=\".^%KgNcWO{?uvr(igb/M\">c</field></block></value><value name=\"B\"><block type=\"math_number\" id=\"f:`}o(Dz)Fp`fXC^GIN@\"><field name=\"NUM\">16</field></block></value></block></value><next><block type=\"coderbot_sleep\" id=\"1Z-.l2%Vkx*yL*3]%h(V\"><value name=\"ELAPSE\"><block type=\"math_number\" id=\"V9Wx(%_,5.6ASw.N4RcG\"><field name=\"NUM\">0.05</field></block></value></block></next></block></next></block></next></block></statement></block></statement></block></next></block></xml>", "code": "i = None\nc = None\n\n\nget_atmega().set_led(0, 60, 0, 0, 0)\nfor i in range(61):\n get_prog_eng().check_end()\n for c in range(1, 256, 128):\n get_prog_eng().check_end()\n get_atmega().set_led(0, 60, 0, 0, 0)\n get_bot().sleep(0.01)\n get_atmega().set_led(i, i + 4, c * 1, c * 8, c * 16)\n get_bot().sleep(0.05)\n", "default": false}

data/programs.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"_default": {"1": {"name": "test_find_code", "filename": "./data/defaults/programs/program_test_find_code.json", "default": "True"}, "2": {"name": "demo_color_seeker", "filename": "./data/defaults/programs/program_demo_color_seeker.json", "default": "True"}, "3": {"name": "demo_sound_clap_control", "filename": "./data/defaults/programs/program_demo_sound_clap_control.json", "default": "True"}, "4": {"name": "test_find_path_ahead", "filename": "./data/defaults/programs/program_test_find_path_ahead.json", "default": "True"}, "5": {"name": "test_sound_hear", "filename": "./data/defaults/programs/program_test_sound_hear.json", "default": "True"}, "6": {"name": "test_find_color", "filename": "./data/defaults/programs/program_test_find_color.json", "default": "True"}, "7": {"name": "test_cnn_classifier", "filename": "./data/defaults/programs/program_test_cnn_classifier.json", "default": "True"}, "8": {"name": "test_sound_rec", "filename": "./data/defaults/programs/program_test_sound_rec.json", "default": "True"}, "9": {"name": "test_find_face", "filename": "./data/defaults/programs/program_test_find_face.json", "default": "True"}, "10": {"name": "demo_obstacle_avoidance", "filename": "./data/defaults/programs/program_demo_obstacle_avoidance.json", "default": "True"}, "11": {"name": "test_img_average", "filename": "./data/defaults/programs/program_test_img_average.json", "default": "True"}, "12": {"name": "demo_ar_tags", "filename": "./data/defaults/programs/program_demo_ar_tags.json", "default": "True"}, "13": {"name": "test_cnn_object_detect", "filename": "./data/defaults/programs/program_test_cnn_object_detect.json", "default": "True"}, "14": {"name": "demo_line_follower", "filename": "./data/defaults/programs/program_demo_line_follower.json", "default": "True"}, "15": {"name": "cat_follower", "filename": "./data/defaults/programs/program_demo_cat_follower.json", "default": "True"}, "16": {"name": "test_music", "filename": "./data/defaults/programs/program_test_music.json", "default": "True"}, "17": {"name": "demo_cat_follower", "filename": "./data/defaults/programs/program_demo_cat_follower.json", "default": "True"}, "18": {"name": "test_input", "filename": "./data/defaults/programs/program_test_input.json", "default": "True"}, "19": {"name": "test_output", "filename": "./data/defaults/programs/program_test_output.json", "default": "True"}, "20": {"name": "demo_io_ext", "filename": "./data/defaults/programs/program_demo_io_ext.json", "default": "True"}, "21": {"name": "test_sonars", "filename": "./data/defaults/programs/program_test_sonars.json", "default": "True"}}}
1+
{"_default": {"1": {"name": "test_find_code", "filename": "./data/defaults/programs/program_test_find_code.json", "default": "True"}, "2": {"name": "demo_color_seeker", "filename": "./data/defaults/programs/program_demo_color_seeker.json", "default": "True"}, "3": {"name": "demo_sound_clap_control", "filename": "./data/defaults/programs/program_demo_sound_clap_control.json", "default": "True"}, "4": {"name": "test_find_path_ahead", "filename": "./data/defaults/programs/program_test_find_path_ahead.json", "default": "True"}, "5": {"name": "test_sound_hear", "filename": "./data/defaults/programs/program_test_sound_hear.json", "default": "True"}, "6": {"name": "test_find_color", "filename": "./data/defaults/programs/program_test_find_color.json", "default": "True"}, "7": {"name": "test_cnn_classifier", "filename": "./data/defaults/programs/program_test_cnn_classifier.json", "default": "True"}, "8": {"name": "test_sound_rec", "filename": "./data/defaults/programs/program_test_sound_rec.json", "default": "True"}, "9": {"name": "test_find_face", "filename": "./data/defaults/programs/program_test_find_face.json", "default": "True"}, "10": {"name": "demo_obstacle_avoidance", "filename": "./data/defaults/programs/program_demo_obstacle_avoidance.json", "default": "True"}, "11": {"name": "test_img_average", "filename": "./data/defaults/programs/program_test_img_average.json", "default": "True"}, "12": {"name": "demo_ar_tags", "filename": "./data/defaults/programs/program_demo_ar_tags.json", "default": "True"}, "13": {"name": "test_cnn_object_detect", "filename": "./data/defaults/programs/program_test_cnn_object_detect.json", "default": "True"}, "14": {"name": "demo_line_follower", "filename": "./data/defaults/programs/program_demo_line_follower.json", "default": "True"}, "15": {"name": "cat_follower", "filename": "./data/defaults/programs/program_demo_cat_follower.json", "default": "True"}, "16": {"name": "test_music", "filename": "./data/defaults/programs/program_test_music.json", "default": "True"}, "17": {"name": "demo_cat_follower", "filename": "./data/defaults/programs/program_demo_cat_follower.json", "default": "True"}, "18": {"name": "test_input", "filename": "./data/defaults/programs/program_test_input.json", "default": "True"}, "19": {"name": "test_output", "filename": "./data/defaults/programs/program_test_output.json", "default": "True"}, "20": {"name": "demo_io_ext", "filename": "./data/defaults/programs/program_demo_io_ext.json", "default": "True"}, "21": {"name": "test_sonars", "filename": "./data/defaults/programs/program_test_sonars.json", "default": "True"}, "22": {"name": "test_led", "dom_code": "<xml xmlns=\"https://developers.google.com/blockly/xml\"><variables><variable id=\"mV|1?_`t].w9ldDjB#Pd\">i</variable><variable id=\".^%KgNcWO{?uvr(igb/M\">c</variable></variables><block type=\"coderbot_atmega_set_led\" id=\"U4M/5!Z8)ydVSl6!KGfl\" x=\"210\" y=\"90\"><value name=\"BEGIN\"><block type=\"math_number\" id=\"}+N@zF-K}std2rBA.rcB\"><field name=\"NUM\">0</field></block></value><value name=\"END\"><block type=\"math_number\" id=\"P5Z~%^uZJH*2vb_Y4kX9\"><field name=\"NUM\">60</field></block></value><value name=\"RED\"><block type=\"math_number\" id=\"n`wi],+ar)H__{76(8aO\"><field name=\"NUM\">0</field></block></value><value name=\"GREEN\"><block type=\"math_number\" id=\"aXK={ZR{EA-S~kZ4r2x)\"><field name=\"NUM\">0</field></block></value><value name=\"BLUE\"><block type=\"math_number\" id=\"H5Av._zz|gP;e)uQnw7D\"><field name=\"NUM\">0</field></block></value><next><block type=\"controls_for\" id=\"(HLoJr|poNT!f(*wl5Gt\"><field name=\"VAR\" id=\"mV|1?_`t].w9ldDjB#Pd\">i</field><value name=\"FROM\"><block type=\"math_number\" id=\"q%I+x1$v$Hb9qjS^gv|X\"><field name=\"NUM\">0</field></block></value><value name=\"TO\"><block type=\"math_number\" id=\"LGGuAK)PAr0r_@a~AbsB\"><field name=\"NUM\">60</field></block></value><value name=\"BY\"><block type=\"math_number\" id=\"L,d:{%h6_[vN@,jN/wi2\"><field name=\"NUM\">1</field></block></value><statement name=\"DO\"><block type=\"controls_for\" id=\"E`+DR_wKgE9^3DO}G8ew\"><field name=\"VAR\" id=\".^%KgNcWO{?uvr(igb/M\">c</field><value name=\"FROM\"><block type=\"math_number\" id=\"_q2GlJkegi#GR|dez;A!\"><field name=\"NUM\">1</field></block></value><value name=\"TO\"><block type=\"math_number\" id=\"x/aQ`cU1Ks(6=yJu{2^k\"><field name=\"NUM\">255</field></block></value><value name=\"BY\"><block type=\"math_number\" id=\")/gFUFR1opq/8HgCVNws\"><field name=\"NUM\">128</field></block></value><statement name=\"DO\"><block type=\"coderbot_atmega_set_led\" id=\"xu/0IEI)Ts8=FqPFqVn)\"><value name=\"BEGIN\"><block type=\"math_number\" id=\"4MV@oe@Q!BsCsU($,I}V\"><field name=\"NUM\">0</field></block></value><value name=\"END\"><block type=\"math_number\" id=\"]ziY%|-2qX($LMkS;NH~\"><field name=\"NUM\">60</field></block></value><value name=\"RED\"><block type=\"math_number\" id=\"3]+P|Rq;Si5wHGK6/@^3\"><field name=\"NUM\">0</field></block></value><value name=\"GREEN\"><block type=\"math_number\" id=\"q#!lPC%rrlw~8O*O:sz^\"><field name=\"NUM\">0</field></block></value><value name=\"BLUE\"><block type=\"math_number\" id=\"l!Tzd:G5fPm=3Kax^5M0\"><field name=\"NUM\">0</field></block></value><next><block type=\"coderbot_sleep\" id=\"rJ5o4y{SN/n1}Vzi[)@9\"><value name=\"ELAPSE\"><block type=\"math_number\" id=\"=plx%e,VpcB`l8%=I[dd\"><field name=\"NUM\">0.01</field></block></value><next><block type=\"coderbot_atmega_set_led\" id=\"chy~IyYrzHH*[t+@jnZ#\"><value name=\"BEGIN\"><block type=\"variables_get\" id=\"HtnTmdSQ[/||-yHV!Li.\"><field name=\"VAR\" id=\"mV|1?_`t].w9ldDjB#Pd\">i</field></block></value><value name=\"END\"><block type=\"math_arithmetic\" id=\"Y#AHd_Be05gTr_XeqTO:\"><field name=\"OP\">ADD</field><value name=\"A\"><block type=\"variables_get\" id=\"$y/*rz!oS[8Z8-H2#Iuk\"><field name=\"VAR\" id=\"mV|1?_`t].w9ldDjB#Pd\">i</field></block></value><value name=\"B\"><block type=\"math_number\" id=\"j*iHZ-T$?yn%m-FJCY{c\"><field name=\"NUM\">4</field></block></value></block></value><value name=\"RED\"><block type=\"math_arithmetic\" id=\";kBE!f4tZqXL^tuWv7zr\"><field name=\"OP\">MULTIPLY</field><value name=\"A\"><block type=\"variables_get\" id=\"deHK(hlFV.KR=uZg9z;w\"><field name=\"VAR\" id=\".^%KgNcWO{?uvr(igb/M\">c</field></block></value><value name=\"B\"><block type=\"math_number\" id=\"46z)lg$93j{/jj.Co{^(\"><field name=\"NUM\">1</field></block></value></block></value><value name=\"GREEN\"><block type=\"math_arithmetic\" id=\";Esa/)mXftItk:dsgx2H\"><field name=\"OP\">MULTIPLY</field><value name=\"A\"><block type=\"variables_get\" id=\"@:64T_Ryd_XG~BF|-3l}\"><field name=\"VAR\" id=\".^%KgNcWO{?uvr(igb/M\">c</field></block></value><value name=\"B\"><block type=\"math_number\" id=\"`0hSm^wEqrW:-mM%CjiZ\"><field name=\"NUM\">8</field></block></value></block></value><value name=\"BLUE\"><block type=\"math_arithmetic\" id=\"iUrI|HZnVrxre*:bpwtp\"><field name=\"OP\">MULTIPLY</field><value name=\"A\"><block type=\"variables_get\" id=\"aKlo?CPZPeg]$~[L)y^h\"><field name=\"VAR\" id=\".^%KgNcWO{?uvr(igb/M\">c</field></block></value><value name=\"B\"><block type=\"math_number\" id=\"f:`}o(Dz)Fp`fXC^GIN@\"><field name=\"NUM\">16</field></block></value></block></value><next><block type=\"coderbot_sleep\" id=\"1Z-.l2%Vkx*yL*3]%h(V\"><value name=\"ELAPSE\"><block type=\"math_number\" id=\"V9Wx(%_,5.6ASw.N4RcG\"><field name=\"NUM\">0.05</field></block></value></block></next></block></next></block></next></block></statement></block></statement></block></next></block></xml>", "code": "i = None\nc = None\n\n\nget_atmega().set_led(0, 60, 0, 0, 0)\nfor i in range(61):\n get_prog_eng().check_end()\n for c in range(1, 256, 128):\n get_prog_eng().check_end()\n get_atmega().set_led(0, 60, 0, 0, 0)\n get_bot().sleep(0.01)\n get_atmega().set_led(i, i + 4, c * 1, c * 8, c * 16)\n get_bot().sleep(0.05)\n", "default": false, "filename": "./data/program_test_led.json"}}}

requirements_stub.txt

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,50 @@
11
# Basic set of required packages. If you need to run on a real system (NOT in STUB mode)
22
# install the packages in `requirements.txt` too.
33

4-
absl-py==0.9.0
4+
absl-py==1.0.0
55
astor==0.8.1
6-
Babel==2.8.0
7-
certifi==2018.4.16
6+
Babel==2.9.1
7+
certifi==2021.10.8
88
chardet==3.0.4
9-
click==7.0
9+
click==7.1.2
1010
clickclick==1.2.2
11-
connexion==1.4.2
12-
Flask==1.1.1
11+
connexion==1.5.3
12+
Flask==1.1.4
1313
Flask-Babel==0.12.2
14-
Flask-Cors==3.0.8
14+
Flask-Cors==3.0.10
1515
gast==0.2.2
16-
grpcio==1.26.0
17-
idna==2.8
18-
pybind11==2.4.3
19-
inflection==0.3.1
20-
itsdangerous==0.24
21-
Jinja2==2.11.1
16+
grpcio==1.41.1
17+
idna==2.10
18+
pybind11==2.9.0
19+
inflection==0.5.1
20+
itsdangerous==1.1.0
21+
Jinja2==2.11.3
2222
jsonschema==2.6.0
23-
Markdown==3.1.1
23+
Markdown==3.2.2
2424
MarkupSafe==1.1.1
25-
numpy==1.17.4
26-
opencv-contrib-python==4.1.1.26
27-
pigpio==1.45
28-
Pillow==7.0.0
25+
numpy==1.21.4
26+
opencv-contrib-python==4.5.3.56
27+
pigpio==1.78
28+
Pillow==9.0.0
2929
protobuf==3.11.3
30-
Pypubsub==4.0.0
31-
pytz==2018.4
30+
Pypubsub==4.0.3
31+
pytz==2021.3
3232
pyyaml>=4.2b1
33-
pyzbar==0.1.7
34-
requests==2.22.0
35-
six==1.14.0
36-
swagger-spec-validator==2.3.1
33+
pyzbar==0.1.8
34+
requests==2.27.1
35+
six==1.16.0
36+
swagger-spec-validator==2.7.4
3737
termcolor==1.1.0
38-
tinydb==3.12.1
38+
tinydb==3.15.2
3939
tensorflow==2.1.0
4040
tensorflow_hub>=0.7.0
41-
urllib3==1.24.2
42-
Werkzeug==0.15.3
41+
urllib3==1.26.8
42+
Werkzeug==0.16.1
4343
setuptools==42.0.1
44-
smbus2==0.3.0
45-
spidev==3.4
46-
cachetools==3.0.0
47-
sox==1.3.7
48-
pytesseract==0.3.4
49-
sox==1.3.7
44+
smbus2==0.4.1
45+
spidev==3.5
46+
cachetools==3.1.1
47+
sox==1.4.1
5048
pyalsaaudio==0.9.0
49+
pytesseract==0.3.8
50+
sox==1.4.1

static/js/blockly/blocks.js

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1274,3 +1274,47 @@ Blockly.Python['coderbot_atmega_set_output'] = function(block) {
12741274
var code = 'get_atmega().set_output(' + output + ', ' + value + ')\n';
12751275
return code;
12761276
};
1277+
1278+
Blockly.Blocks['coderbot_atmega_set_led'] = {
1279+
/**
1280+
* Block for set_output function.
1281+
* @this Blockly.Block
1282+
*/
1283+
init: function() {
1284+
this.setHelpUrl(Blockly.Msg.LOGIC_BOOLEAN_HELPURL);
1285+
this.setColour(240);
1286+
this.appendDummyInput()
1287+
.appendField(Blockly.Msg.CODERBOT_ATMEGA_LED_SET)
1288+
this.appendValueInput('BEGIN')
1289+
.setCheck('Number')
1290+
.appendField(Blockly.Msg.CODERBOT_ATMEGA_LED_BEGIN);
1291+
this.appendValueInput('END')
1292+
.setCheck('Number')
1293+
.appendField(Blockly.Msg.CODERBOT_ATMEGA_LED_END);
1294+
this.appendValueInput('RED')
1295+
.setCheck('Number')
1296+
.appendField(Blockly.Msg.CODERBOT_ATMEGA_LED_RED);
1297+
this.appendValueInput('GREEN')
1298+
.setCheck('Number')
1299+
.appendField(Blockly.Msg.CODERBOT_ATMEGA_LED_GREEN);
1300+
this.appendValueInput('BLUE')
1301+
.setCheck('Number')
1302+
.appendField(Blockly.Msg.CODERBOT_ATMEGA_LED_BLUE);
1303+
this.setInputsInline(true);
1304+
this.setPreviousStatement(true);
1305+
this.setNextStatement(true);
1306+
this.setTooltip(Blockly.Msg.LOGIC_BOOLEAN_TOOLTIP);
1307+
}
1308+
};
1309+
1310+
Blockly.Python['coderbot_atmega_set_led'] = function(block) {
1311+
// input index: 0, 10 are Digital
1312+
var begin = Blockly.Python.valueToCode(block, 'BEGIN', Blockly.Python.ORDER_NONE);
1313+
var end = Blockly.Python.valueToCode(block, 'END', Blockly.Python.ORDER_NONE);
1314+
var red = Blockly.Python.valueToCode(block, 'RED', Blockly.Python.ORDER_NONE);
1315+
var green = Blockly.Python.valueToCode(block, 'GREEN', Blockly.Python.ORDER_NONE);
1316+
var blue = Blockly.Python.valueToCode(block, 'BLUE', Blockly.Python.ORDER_NONE);
1317+
var code = 'get_atmega().set_led(' + begin + ', ' + end + ', ' + red + ', ' + green + ', ' + blue + ')\n';
1318+
1319+
return code;
1320+
};

0 commit comments

Comments
 (0)