Skip to content

Commit f2c224a

Browse files
committed
led ws2812b
1 parent bcbba45 commit f2c224a

File tree

4 files changed

+12
-6
lines changed

4 files changed

+12
-6
lines changed

atmega328p.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,15 +57,20 @@ def analogRead(self, addr):
5757
return resp[3]
5858

5959
def setLed(self, begin_led, end_led, red, green, blue):
60-
resp = self.spi.xfer([START, CMD_SET_LED, begin_led, end_led, red,green, blue], BAUDRATE)
60+
resp = self.spi.xfer([START, CMD_SET_LED,
61+
min(max(begin_led, 0), 60),
62+
min(max(end_led, 0), 60),
63+
min(max(red, 0), 254),
64+
min(max(green, 0), 254),
65+
min(max(blue, 0), 254)], BAUDRATE)
6166
return resp[3]
6267

6368
def set_led(self, begin_led, end_led, red, green, blue):
6469
begin = begin_led - 1
6570
end = end_led - 1
66-
red = max(int(red * 255 / 100), 255)
67-
green = max(int(green * 255 / 100), 255)
68-
blue = max(int(blue * 255 / 100), 255)
71+
red = int(red * 255 / 100)
72+
green = int(green * 255 / 100)
73+
blue = int(blue * 255 / 100)
6974
return self.setLed(begin, end, red, green, blue)
7075

7176
def get_input(self, addr):

data/program_no_name.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"name": "no_name", "dom_code": "<xml xmlns=\"https://developers.google.com/blockly/xml\"></xml>", "code": "", "default": false}

data/program_test_led.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"name": "test_led", "dom_code": "<xml xmlns=\"https://developers.google.com/blockly/xml\"><variables><variable id=\"/xw.j?2UDr3u^6ElAbfw\">leds</variable><variable id=\"mV|1?_`t].w9ldDjB#Pd\">i</variable><variable id=\".^%KgNcWO{?uvr(igb/M\">c</variable></variables><block type=\"variables_set\" id=\"`7Sm1AK0q1yrCf3yj1jY\" x=\"28\" y=\"92\"><field name=\"VAR\" id=\"/xw.j?2UDr3u^6ElAbfw\">leds</field><value name=\"VALUE\"><block type=\"math_number\" id=\"~XqK1jXL`MkyR[:R*A^Z\"><field name=\"NUM\">60</field></block></value><next><block type=\"controls_repeat_ext\" id=\";niBg8v_6u=JPSvZ{Rq~\"><value name=\"TIMES\"><block type=\"math_number\" id=\"LbXC!xr+QmP1{y?aQKgh\"><field name=\"NUM\">1</field></block></value><statement name=\"DO\"><block type=\"coderbot_atmega_set_led\" id=\"U4M/5!Z8)ydVSl6!KGfl\"><value name=\"BEGIN\"><block type=\"math_number\" id=\"}+N@zF-K}std2rBA.rcB\"><field name=\"NUM\">1</field></block></value><value name=\"END\"><block type=\"variables_get\" id=\"ug]D+ea8)#!5hvSs*L$U\"><field name=\"VAR\" id=\"/xw.j?2UDr3u^6ElAbfw\">leds</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\">1</field></block></value><value name=\"TO\"><block type=\"variables_get\" id=\"mSG+|MQ6P8$;Des`tSSz\"><field name=\"VAR\" id=\"/xw.j?2UDr3u^6ElAbfw\">leds</field></block></value><value name=\"BY\"><block type=\"math_number\" id=\"L,d:{%h6_[vN@,jN/wi2\"><field name=\"NUM\">60</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\">100</field></block></value><value name=\"BY\"><block type=\"math_number\" id=\")/gFUFR1opq/8HgCVNws\"><field name=\"NUM\">100</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\">1</field></block></value><value name=\"END\"><block type=\"variables_get\" id=\"X*ZrOoMNe%xtt*yp3#|a\"><field name=\"VAR\" id=\"/xw.j?2UDr3u^6ElAbfw\">leds</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_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\">1</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></block></next></block></statement></block></statement></block></next></block></statement></block></next></block></xml>", "code": "leds = None\ni = None\nc = None\n\ndef upRange(start, stop, step):\n while start <= stop:\n yield start\n start += abs(step)\n\ndef downRange(start, stop, step):\n while start >= stop:\n yield start\n start -= abs(step)\n\n\nleds = 60\nfor count in range(1):\n get_prog_eng().check_end()\n get_atmega().set_led(1, leds, 0, 0, 0)\n for i in (1 <= float(leds)) and upRange(1, float(leds), 60) or downRange(1, float(leds), 60):\n get_prog_eng().check_end()\n for c in range(1, 101, 100):\n get_prog_eng().check_end()\n get_atmega().set_led(1, leds, 0, 0, 0)\n get_atmega().set_led(i, i + 1, c * 1, c * 8, c * 16)\n", "default": false}
1+
{"name": "test_led", "dom_code": "<xml xmlns=\"https://developers.google.com/blockly/xml\"><variables><variable id=\"/xw.j?2UDr3u^6ElAbfw\">leds</variable><variable id=\"mV|1?_`t].w9ldDjB#Pd\">i</variable><variable id=\".^%KgNcWO{?uvr(igb/M\">c</variable></variables><block type=\"variables_set\" id=\"`7Sm1AK0q1yrCf3yj1jY\" x=\"83\" y=\"6\"><field name=\"VAR\" id=\"/xw.j?2UDr3u^6ElAbfw\">leds</field><value name=\"VALUE\"><block type=\"math_number\" id=\"~XqK1jXL`MkyR[:R*A^Z\"><field name=\"NUM\">60</field></block></value><next><block type=\"controls_repeat_ext\" id=\";niBg8v_6u=JPSvZ{Rq~\"><value name=\"TIMES\"><block type=\"math_number\" id=\"LbXC!xr+QmP1{y?aQKgh\"><field name=\"NUM\">3</field></block></value><statement name=\"DO\"><block type=\"coderbot_atmega_set_led\" id=\"U4M/5!Z8)ydVSl6!KGfl\"><value name=\"BEGIN\"><block type=\"math_number\" id=\"}+N@zF-K}std2rBA.rcB\"><field name=\"NUM\">1</field></block></value><value name=\"END\"><block type=\"variables_get\" id=\"ug]D+ea8)#!5hvSs*L$U\"><field name=\"VAR\" id=\"/xw.j?2UDr3u^6ElAbfw\">leds</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\">1</field></block></value><value name=\"TO\"><block type=\"variables_get\" id=\"mSG+|MQ6P8$;Des`tSSz\"><field name=\"VAR\" id=\"/xw.j?2UDr3u^6ElAbfw\">leds</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=\"coderbot_atmega_set_led\" id=\",(rL?k}`#UYM@CY`5ZOF\"><value name=\"BEGIN\"><block type=\"math_number\" id=\"Ql5,)ZkO{_chavvTnCn6\"><field name=\"NUM\">1</field></block></value><value name=\"END\"><block type=\"math_arithmetic\" id=\"TSN}K9t%.206Lp03*^#u\"><field name=\"OP\">MINUS</field><value name=\"A\"><block type=\"variables_get\" id=\"%|yMnq+m;GQhyw2I3(7Q\"><field name=\"VAR\" id=\"mV|1?_`t].w9ldDjB#Pd\">i</field></block></value><value name=\"B\"><block type=\"math_number\" id=\"E=ifR{(UUuG+j*hsDx8S\"><field name=\"NUM\">1</field></block></value></block></value><value name=\"RED\"><block type=\"math_number\" id=\"@yqVmOuAeq~eAL*N|q+#\"><field name=\"NUM\">0</field></block></value><value name=\"GREEN\"><block type=\"math_number\" id=\"@YVgd/x:B#YxVjxS:,T@\"><field name=\"NUM\">0</field></block></value><value name=\"BLUE\"><block type=\"math_number\" id=\"k5+jbhcY0MWc_z2@03{n\"><field name=\"NUM\">0</field></block></value><next><block type=\"coderbot_atmega_set_led\" id=\"xu/0IEI)Ts8=FqPFqVn)\"><value name=\"BEGIN\"><block type=\"math_arithmetic\" id=\")Rx_thG1*MJwhu5a`GCX\"><field name=\"OP\">ADD</field><value name=\"A\"><block type=\"variables_get\" id=\"i|S#;A}wazp[.tZonQ;g\"><field name=\"VAR\" id=\"mV|1?_`t].w9ldDjB#Pd\">i</field></block></value><value name=\"B\"><block type=\"math_number\" id=\"7t{7y%u?Mz?k]GO$1SA9\"><field name=\"NUM\">5</field></block></value></block></value><value name=\"END\"><block type=\"variables_get\" id=\"X*ZrOoMNe%xtt*yp3#|a\"><field name=\"VAR\" id=\"/xw.j?2UDr3u^6ElAbfw\">leds</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=\"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\">100</field></block></value><value name=\"BY\"><block type=\"math_number\" id=\")/gFUFR1opq/8HgCVNws\"><field name=\"NUM\">5</field></block></value><statement name=\"DO\"><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\">5</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\">0</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\">0</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\">3</field></block></value></block></value></block></statement></block></next></block></next></block></statement><next><block type=\"coderbot_atmega_set_led\" id=\"|6n;D0.SJPHwfd2TTH1o\"><value name=\"BEGIN\"><block type=\"math_number\" id=\"`?=rb;gGH5)zvs{.0W[c\"><field name=\"NUM\">1</field></block></value><value name=\"END\"><block type=\"variables_get\" id=\"ri2K1wws76aIcZg@hC/I\"><field name=\"VAR\" id=\"/xw.j?2UDr3u^6ElAbfw\">leds</field></block></value><value name=\"RED\"><block type=\"math_number\" id=\"`T5m0oiNlt3kn34rWK#g\"><field name=\"NUM\">0</field></block></value><value name=\"GREEN\"><block type=\"math_number\" id=\"dEo{NKNG6@2_2neC|bXa\"><field name=\"NUM\">0</field></block></value><value name=\"BLUE\"><block type=\"math_number\" id=\"AvIT+M?iR;e05eB{r40_\"><field name=\"NUM\">0</field></block></value></block></next></block></next></block></statement></block></next></block></xml>", "code": "leds = None\ni = None\nc = None\n\ndef upRange(start, stop, step):\n while start <= stop:\n yield start\n start += abs(step)\n\ndef downRange(start, stop, step):\n while start >= stop:\n yield start\n start -= abs(step)\n\n\nleds = 60\nfor count in range(3):\n get_prog_eng().check_end()\n get_atmega().set_led(1, leds, 0, 0, 0)\n for i in (1 <= float(leds)) and upRange(1, float(leds), 1) or downRange(1, float(leds), 1):\n get_prog_eng().check_end()\n get_atmega().set_led(1, i - 1, 0, 0, 0)\n get_atmega().set_led(i + 5, leds, 0, 0, 0)\n for c in range(1, 101, 5):\n get_prog_eng().check_end()\n get_atmega().set_led(i, i + 5, c * 0, c * 0, c * 3)\n get_atmega().set_led(1, leds, 0, 0, 0)\n", "default": false}

0 commit comments

Comments
 (0)