Files
2023-12-25 14:01:24 +07:00

2 lines
10 KiB
Plaintext

{"category":"SN74HC595","color":"#008f00","blocks":["__SN74HC595_import","__SN74HC595_Init","__SN74HC595_Raw","__SN74HC595_Text"],"jscode":"// Block __SN74HC595_import\nvar __SN74HC595_import_json = {\n \"previousStatement\": null,\n \"nextStatement\": null,\n \"message0\": \"%1\",\n \"args0\": [\n {\n \"type\": \"field_label\",\n \"text\": \"import SN74HC595\"\n }\n ],\n \"colour\": \"#008f00\"\n};\n\nwindow['Blockly'].Blocks['__SN74HC595_import'] = {\n init: function() {\n this.jsonInit(__SN74HC595_import_json);\n }\n};\n\nwindow['Blockly'].Python['__SN74HC595_import'] = function(block) {\n return `import machine\n\nclass SN74HC595:\n ds = None\n st = None\n sh = None\n ready = False\n\n def __init__(self, ds, st, sh):\n self.ds = machine.Pin(ds, mode=machine.Pin.OUT, pull=0x00)\n self.st = machine.Pin(st, mode=machine.Pin.OUT, pull=0x00)\n self.sh = machine.Pin(sh, mode=machine.Pin.OUT, pull=0x00)\n self.ready = True\n\n def Raw(self, value):\n if self.ready == True:\n self.ds.value(0)\n for i in range(8):\n self.sh.value((value >> (7 - i)) & 1)\n self.st.value(1)\n self.st.value(0)\n self.ds.value(1)\n\n def Text(self, value, alphabet, delay = 250):\n if self.ready == True:\n length = len(value)\n for i in range(length):\n symbol = value[i]\n if symbol == '.':\n continue\n if symbol in alphabet.keys():\n if i < length - 1 and value[i + 1] == '.':\n self.Raw(alphabet[value[i]] | alphabet['.'])\n else:\n self.Raw(alphabet[value[i]])\n wait_ms(delay)\n` + \"\\n\";\n};\n\n// Block __SN74HC595_Init\nvar __SN74HC595_Init_json = {\n \"previousStatement\": null,\n \"nextStatement\": null,\n \"message0\": \"%1\",\n \"args0\": [\n {\n \"type\": \"field_label\",\n \"text\": \"Init\"\n }\n ],\n \"message1\": \"%1 %2\",\n \"args1\": [\n {\n \"type\": \"field_label\",\n \"text\": \"name\"\n },\n {\n \"type\": \"field_input\",\n \"text\": \"\",\n \"spellcheck\": false,\n \"name\": \"name\"\n }\n ],\n \"message2\": \"%1\",\n \"args2\": [\n {\n \"type\": \"field_label\",\n \"text\": \"Pinout:\"\n }\n ],\n \"message3\": \"%1 %2\",\n \"args3\": [\n {\n \"type\": \"field_label\",\n \"text\": \"DS_Data\"\n },\n {\n \"type\": \"input_value\",\n \"name\": \"DS_Data\"\n }\n ],\n \"message4\": \"%1 %2\",\n \"args4\": [\n {\n \"type\": \"field_label\",\n \"text\": \"STCP_Latch\"\n },\n {\n \"type\": \"input_value\",\n \"name\": \"STCP_Latch\"\n }\n ],\n \"message5\": \"%1 %2\",\n \"args5\": [\n {\n \"type\": \"field_label\",\n \"text\": \"SHCP_Clock\"\n },\n {\n \"type\": \"input_value\",\n \"name\": \"SHCP_Clock\"\n }\n ],\n \"colour\": \"#008f00\"\n};\n\nwindow['Blockly'].Blocks['__SN74HC595_Init'] = {\n init: function() {\n this.jsonInit(__SN74HC595_Init_json);\n }\n};\n\nwindow['Blockly'].Python['__SN74HC595_Init'] = function(block) {\n var name = block.getFieldValue('name');\nvar DS_Data = Blockly.Python.valueToCode(block, 'DS_Data', Blockly.Python.ORDER_NONE);\nvar STCP_Latch = Blockly.Python.valueToCode(block, 'STCP_Latch', Blockly.Python.ORDER_NONE);\nvar SHCP_Clock = Blockly.Python.valueToCode(block, 'SHCP_Clock', Blockly.Python.ORDER_NONE);\n return `${name} = SN74HC595(${DS_Data}, ${STCP_Latch}, ${SHCP_Clock})\n` + \"\\n\";\n};\n\n// Block __SN74HC595_Raw\nvar __SN74HC595_Raw_json = {\n \"previousStatement\": null,\n \"nextStatement\": null,\n \"message0\": \"%1\",\n \"args0\": [\n {\n \"type\": \"field_label\",\n \"text\": \"Raw\"\n }\n ],\n \"message1\": \"%1 %2\",\n \"args1\": [\n {\n \"type\": \"field_label\",\n \"text\": \"name\"\n },\n {\n \"type\": \"field_input\",\n \"text\": \"\",\n \"spellcheck\": false,\n \"name\": \"name\"\n }\n ],\n \"message2\": \"%1 %2\",\n \"args2\": [\n {\n \"type\": \"field_label\",\n \"text\": \"value\"\n },\n {\n \"type\": \"input_value\",\n \"name\": \"value\"\n }\n ],\n \"colour\": \"#008f00\"\n};\n\nwindow['Blockly'].Blocks['__SN74HC595_Raw'] = {\n init: function() {\n this.jsonInit(__SN74HC595_Raw_json);\n }\n};\n\nwindow['Blockly'].Python['__SN74HC595_Raw'] = function(block) {\n var name = block.getFieldValue('name');\nvar value = Blockly.Python.valueToCode(block, 'value', Blockly.Python.ORDER_NONE);\n return `${name}.Raw(${value})\n` + \"\\n\";\n};\n\n// Block __SN74HC595_Text\nvar __SN74HC595_Text_json = {\n \"previousStatement\": null,\n \"nextStatement\": null,\n \"message0\": \"%1\",\n \"args0\": [\n {\n \"type\": \"field_label\",\n \"text\": \"Text\"\n }\n ],\n \"message1\": \"%1 %2\",\n \"args1\": [\n {\n \"type\": \"field_label\",\n \"text\": \"name\"\n },\n {\n \"type\": \"field_input\",\n \"text\": \"\",\n \"spellcheck\": false,\n \"name\": \"name\"\n }\n ],\n \"message2\": \"%1 %2\",\n \"args2\": [\n {\n \"type\": \"field_label\",\n \"text\": \"value\"\n },\n {\n \"type\": \"input_value\",\n \"name\": \"value\"\n }\n ],\n \"message3\": \"%1 %2\",\n \"args3\": [\n {\n \"type\": \"field_label\",\n \"text\": \"alphabet\"\n },\n {\n \"type\": \"input_value\",\n \"name\": \"alphabet\"\n }\n ],\n \"message4\": \"%1 %2\",\n \"args4\": [\n {\n \"type\": \"field_label\",\n \"text\": \"delay\"\n },\n {\n \"type\": \"input_value\",\n \"name\": \"delay\"\n }\n ],\n \"colour\": \"#008f00\"\n};\n\nwindow['Blockly'].Blocks['__SN74HC595_Text'] = {\n init: function() {\n this.jsonInit(__SN74HC595_Text_json);\n }\n};\n\nwindow['Blockly'].Python['__SN74HC595_Text'] = function(block) {\n var name = block.getFieldValue('name');\nvar value = Blockly.Python.valueToCode(block, 'value', Blockly.Python.ORDER_NONE);\nvar alphabet = Blockly.Python.valueToCode(block, 'alphabet', Blockly.Python.ORDER_NONE);\nvar delay = Blockly.Python.valueToCode(block, 'delay', Blockly.Python.ORDER_NONE);\n return `${name}.Text(${value}, ${alphabet}, ${delay})\n` + \"\\n\";\n};\n\n","code":{"import":["window['Blockly'].Python['__SN74HC595_import'] = function(block) {\n return `import machine\n\nclass SN74HC595:\n ds = None\n st = None\n sh = None\n ready = False\n\n def __init__(self, ds, st, sh):\n self.ds = machine.Pin(ds, mode=machine.Pin.OUT, pull=0x00)\n self.st = machine.Pin(st, mode=machine.Pin.OUT, pull=0x00)\n self.sh = machine.Pin(sh, mode=machine.Pin.OUT, pull=0x00)\n self.ready = True\n\n def Raw(self, value):\n if self.ready == True:\n self.ds.value(0)\n for i in range(8):\n self.sh.value((value >> (7 - i)) & 1)\n self.st.value(1)\n self.st.value(0)\n self.ds.value(1)\n\n def Text(self, value, alphabet, delay = 250):\n if self.ready == True:\n length = len(value)\n for i in range(length):\n symbol = value[i]\n if symbol == '.':\n continue\n if symbol in alphabet.keys():\n if i < length - 1 and value[i + 1] == '.':\n self.Raw(alphabet[value[i]] | alphabet['.'])\n else:\n self.Raw(alphabet[value[i]])\n wait_ms(delay)\n` + \"\\n\";\n};\n\n","import machine\n\nclass SN74HC595:\n ds = None\n st = None\n sh = None\n ready = False\n\n def __init__(self, ds, st, sh):\n self.ds = machine.Pin(ds, mode=machine.Pin.OUT, pull=0x00)\n self.st = machine.Pin(st, mode=machine.Pin.OUT, pull=0x00)\n self.sh = machine.Pin(sh, mode=machine.Pin.OUT, pull=0x00)\n self.ready = True\n\n def Raw(self, value):\n if self.ready == True:\n self.ds.value(0)\n for i in range(8):\n self.sh.value((value >> (7 - i)) & 1)\n self.st.value(1)\n self.st.value(0)\n self.ds.value(1)\n\n def Text(self, value, alphabet, delay = 250):\n if self.ready == True:\n length = len(value)\n for i in range(length):\n symbol = value[i]\n if symbol == '.':\n continue\n if symbol in alphabet.keys():\n if i < length - 1 and value[i + 1] == '.':\n self.Raw(alphabet[value[i]] | alphabet['.'])\n else:\n self.Raw(alphabet[value[i]])\n wait_ms(delay)\n"],"Init":["window['Blockly'].Python['__SN74HC595_Init'] = function(block) {\n var name = block.getFieldValue('name');\nvar DS_Data = Blockly.Python.valueToCode(block, 'DS_Data', Blockly.Python.ORDER_NONE);\nvar STCP_Latch = Blockly.Python.valueToCode(block, 'STCP_Latch', Blockly.Python.ORDER_NONE);\nvar SHCP_Clock = Blockly.Python.valueToCode(block, 'SHCP_Clock', Blockly.Python.ORDER_NONE);\n return `${name} = SN74HC595(${DS_Data}, ${STCP_Latch}, ${SHCP_Clock})\n` + \"\\n\";\n};\n\n","${name} = SN74HC595(${DS_Data}, ${STCP_Latch}, ${SHCP_Clock})\n"],"Raw":["window['Blockly'].Python['__SN74HC595_Raw'] = function(block) {\n var name = block.getFieldValue('name');\nvar value = Blockly.Python.valueToCode(block, 'value', Blockly.Python.ORDER_NONE);\n return `${name}.Raw(${value})\n` + \"\\n\";\n};\n\n","${name}.Raw(${value})\n"],"Text":["window['Blockly'].Python['__SN74HC595_Text'] = function(block) {\n var name = block.getFieldValue('name');\nvar value = Blockly.Python.valueToCode(block, 'value', Blockly.Python.ORDER_NONE);\nvar alphabet = Blockly.Python.valueToCode(block, 'alphabet', Blockly.Python.ORDER_NONE);\nvar delay = Blockly.Python.valueToCode(block, 'delay', Blockly.Python.ORDER_NONE);\n return `${name}.Text(${value}, ${alphabet}, ${delay})\n` + \"\\n\";\n};\n\n","${name}.Text(${value}, ${alphabet}, ${delay})\n"]}}