add slider
This commit is contained in:
		
							parent
							
								
									b42e466304
								
							
						
					
					
						commit
						78f8bad4b3
					
				
							
								
								
									
										56
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										56
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @ -1096,6 +1096,16 @@ | |||||||
|         "to-fast-properties": "^2.0.0" |         "to-fast-properties": "^2.0.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "@blockly/block-plus-minus": { | ||||||
|  |       "version": "2.0.8", | ||||||
|  |       "resolved": "https://registry.npmjs.org/@blockly/block-plus-minus/-/block-plus-minus-2.0.8.tgz", | ||||||
|  |       "integrity": "sha512-LRn+Js2rZ14XyrSoEf7wTz6/ESNW2MI5TkXJ2wWFJVA+/E4lTfBwXeZpRFYRP9DZwNEv9alZETyEcBbK+FCZKw==" | ||||||
|  |     }, | ||||||
|  |     "@blockly/field-slider": { | ||||||
|  |       "version": "2.0.7", | ||||||
|  |       "resolved": "https://registry.npmjs.org/@blockly/field-slider/-/field-slider-2.0.7.tgz", | ||||||
|  |       "integrity": "sha512-kSFeeyfJboj2zOz55hgunFzRHQZUTWmKgw695GOwOGvt4wTG5SQ2/pNnd+C41vdjaOdjaI8tlwiyWg4oJ/MPeA==" | ||||||
|  |     }, | ||||||
|     "@cnakazawa/watch": { |     "@cnakazawa/watch": { | ||||||
|       "version": "1.0.4", |       "version": "1.0.4", | ||||||
|       "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", |       "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", | ||||||
| @ -3694,6 +3704,17 @@ | |||||||
|       "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", |       "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", | ||||||
|       "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==" |       "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==" | ||||||
|     }, |     }, | ||||||
|  |     "clipboard": { | ||||||
|  |       "version": "2.0.6", | ||||||
|  |       "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.6.tgz", | ||||||
|  |       "integrity": "sha512-g5zbiixBRk/wyKakSwCKd7vQXDjFnAMGHoEyBogG/bw9kTD9GvdAvaoRR1ALcEzt3pVKxZR0pViekPMIS0QyGg==", | ||||||
|  |       "optional": true, | ||||||
|  |       "requires": { | ||||||
|  |         "good-listener": "^1.2.2", | ||||||
|  |         "select": "^1.1.2", | ||||||
|  |         "tiny-emitter": "^2.0.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "cliui": { |     "cliui": { | ||||||
|       "version": "5.0.0", |       "version": "5.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", |       "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", | ||||||
| @ -4588,6 +4609,12 @@ | |||||||
|       "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", |       "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", | ||||||
|       "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" |       "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" | ||||||
|     }, |     }, | ||||||
|  |     "delegate": { | ||||||
|  |       "version": "3.2.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", | ||||||
|  |       "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==", | ||||||
|  |       "optional": true | ||||||
|  |     }, | ||||||
|     "depd": { |     "depd": { | ||||||
|       "version": "1.1.2", |       "version": "1.1.2", | ||||||
|       "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", |       "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", | ||||||
| @ -6350,6 +6377,15 @@ | |||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "good-listener": { | ||||||
|  |       "version": "1.2.2", | ||||||
|  |       "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", | ||||||
|  |       "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", | ||||||
|  |       "optional": true, | ||||||
|  |       "requires": { | ||||||
|  |         "delegate": "^3.1.2" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "graceful-fs": { |     "graceful-fs": { | ||||||
|       "version": "4.2.4", |       "version": "4.2.4", | ||||||
|       "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", |       "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", | ||||||
| @ -10490,6 +10526,14 @@ | |||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "prismjs": { | ||||||
|  |       "version": "1.21.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.21.0.tgz", | ||||||
|  |       "integrity": "sha512-uGdSIu1nk3kej2iZsLyDoJ7e9bnPzIgY0naW/HdknGj61zScaprVEVGHrPoXqI+M9sP0NDnTK2jpkvmldpuqDw==", | ||||||
|  |       "requires": { | ||||||
|  |         "clipboard": "^2.0.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "process": { |     "process": { | ||||||
|       "version": "0.11.10", |       "version": "0.11.10", | ||||||
|       "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", |       "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", | ||||||
| @ -11659,6 +11703,12 @@ | |||||||
|         "ajv-keywords": "^3.4.1" |         "ajv-keywords": "^3.4.1" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "select": { | ||||||
|  |       "version": "1.1.2", | ||||||
|  |       "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", | ||||||
|  |       "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=", | ||||||
|  |       "optional": true | ||||||
|  |     }, | ||||||
|     "select-hose": { |     "select-hose": { | ||||||
|       "version": "2.0.0", |       "version": "2.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", |       "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", | ||||||
| @ -12827,6 +12877,12 @@ | |||||||
|       "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", |       "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", | ||||||
|       "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" |       "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" | ||||||
|     }, |     }, | ||||||
|  |     "tiny-emitter": { | ||||||
|  |       "version": "2.1.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", | ||||||
|  |       "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", | ||||||
|  |       "optional": true | ||||||
|  |     }, | ||||||
|     "tiny-invariant": { |     "tiny-invariant": { | ||||||
|       "version": "1.1.0", |       "version": "1.1.0", | ||||||
|       "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz", |       "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz", | ||||||
|  | |||||||
| @ -3,6 +3,8 @@ | |||||||
|   "version": "0.1.0", |   "version": "0.1.0", | ||||||
|   "private": true, |   "private": true, | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|  |     "@blockly/block-plus-minus": "^2.0.8", | ||||||
|  |     "@blockly/field-slider": "^2.0.7", | ||||||
|     "@fortawesome/fontawesome-svg-core": "^1.2.30", |     "@fortawesome/fontawesome-svg-core": "^1.2.30", | ||||||
|     "@fortawesome/free-solid-svg-icons": "^5.14.0", |     "@fortawesome/free-solid-svg-icons": "^5.14.0", | ||||||
|     "@fortawesome/react-fontawesome": "^0.1.11", |     "@fortawesome/react-fontawesome": "^0.1.11", | ||||||
|  | |||||||
| @ -7,6 +7,7 @@ import './sensebox-osem'; | |||||||
| import './sensebox-web'; | import './sensebox-web'; | ||||||
| import './sensebox-display'; | import './sensebox-display'; | ||||||
| import './sensebox-lora'; | import './sensebox-lora'; | ||||||
|  | import './sensebox-led'; | ||||||
| import './io'; | import './io'; | ||||||
| import './math'; | import './math'; | ||||||
| import './map'; | import './map'; | ||||||
|  | |||||||
| @ -1,6 +1,8 @@ | |||||||
| import * as Blockly from 'blockly/core'; | import * as Blockly from 'blockly/core'; | ||||||
| import { getColour } from '../helpers/colour'; | import { getColour } from '../helpers/colour'; | ||||||
| import * as Types from '../helpers/types' | import * as Types from '../helpers/types' | ||||||
|  | import { FieldSlider } from '@blockly/field-slider'; | ||||||
|  | import { Field } from '..'; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| Blockly.Blocks['sensebox_display_beginDisplay'] = { | Blockly.Blocks['sensebox_display_beginDisplay'] = { | ||||||
| @ -35,12 +37,15 @@ Blockly.Blocks['sensebox_display_printDisplay'] = { | |||||||
|         this.appendDummyInput() |         this.appendDummyInput() | ||||||
|             .appendField(Blockly.Msg.senseBox_display_color) |             .appendField(Blockly.Msg.senseBox_display_color) | ||||||
|             .appendField(new Blockly.FieldDropdown([[Blockly.Msg.senseBox_display_white, "WHITE,BLACK"], [Blockly.Msg.senseBox_display_black, "BLACK,WHITE"]]), "COLOR"); |             .appendField(new Blockly.FieldDropdown([[Blockly.Msg.senseBox_display_white, "WHITE,BLACK"], [Blockly.Msg.senseBox_display_black, "BLACK,WHITE"]]), "COLOR"); | ||||||
|         this.appendValueInput("SIZE", 'Number') |         this.appendDummyInput() | ||||||
|             .appendField(Blockly.Msg.senseBox_display_setSize); |             .appendField(Blockly.Msg.senseBox_display_setSize) | ||||||
|         this.appendValueInput("X", 'Number') |             .appendField(new FieldSlider(1, 1, 4), "SIZE"); | ||||||
|             .appendField(Blockly.Msg.senseBox_display_printDisplay_x); |         this.appendDummyInput() | ||||||
|         this.appendValueInput("Y", 'Number') |             .appendField(Blockly.Msg.senseBox_display_printDisplay_x) | ||||||
|             .appendField(Blockly.Msg.senseBox_display_printDisplay_y); |             .appendField(new FieldSlider(0, 0, 64), "X"); | ||||||
|  |         this.appendDummyInput() | ||||||
|  |             .appendField(Blockly.Msg.senseBox_display_printDisplay_y) | ||||||
|  |             .appendField(new FieldSlider(0, 0, 128), "Y"); | ||||||
|         this.appendValueInput('printDisplay') |         this.appendValueInput('printDisplay') | ||||||
|             .appendField(Blockly.Msg.senseBox_display_printDisplay_value) |             .appendField(Blockly.Msg.senseBox_display_printDisplay_value) | ||||||
|             .setCheck(null); |             .setCheck(null); | ||||||
|  | |||||||
							
								
								
									
										28
									
								
								src/components/Blockly/blocks/sensebox-led.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								src/components/Blockly/blocks/sensebox-led.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,28 @@ | |||||||
|  | import * as Blockly from 'blockly'; | ||||||
|  | import { FieldSlider } from '@blockly/field-slider'; | ||||||
|  | import { getColour } from '../helpers/colour' | ||||||
|  | import { selectedBoard } from '../helpers/board' | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Blockly.Blocks['sensebox_rgb_led'] = { | ||||||
|  |     init: function () { | ||||||
|  |         this.setColour(getColour().sensebox); | ||||||
|  |         this.appendDummyInput() | ||||||
|  |             .appendField(Blockly.Msg.senseBox_rgb_led) | ||||||
|  |             .appendField("Pin:") | ||||||
|  |             .appendField(new Blockly.FieldDropdown(selectedBoard().digitalPins), "PIN") | ||||||
|  |         this.appendDummyInput() | ||||||
|  |             .appendField(Blockly.Msg.COLOUR_RGB_RED)//Blockly.Msg.senseBox_basic_red
 | ||||||
|  |             .appendField(new FieldSlider(255, 0, 255), "RED"); | ||||||
|  |         this.appendDummyInput() | ||||||
|  |             .appendField(Blockly.Msg.COLOUR_RGB_GREEN)//Blockly.Msg.senseBox_basic_green
 | ||||||
|  |             .appendField(new FieldSlider(255, 0, 255), "GREEN"); | ||||||
|  |         this.appendDummyInput() | ||||||
|  |             .appendField(Blockly.Msg.COLOUR_RGB_BLUE)//Blockly.Msg.senseBox_basic_green
 | ||||||
|  |             .appendField(new FieldSlider(255, 0, 255), "BLUE"); | ||||||
|  |         this.setPreviousStatement(true, null); | ||||||
|  |         this.setNextStatement(true, null); | ||||||
|  |         this.setTooltip(Blockly.Msg.senseBox_rgb_led_tip); | ||||||
|  |         this.setHelpUrl('https://sensebox.de/books'); | ||||||
|  |     } | ||||||
|  | }; | ||||||
| @ -6,6 +6,7 @@ import './sensebox-osem'; | |||||||
| import './sensebox-web'; | import './sensebox-web'; | ||||||
| import './sensebox-display'; | import './sensebox-display'; | ||||||
| import './sensebox-lora'; | import './sensebox-lora'; | ||||||
|  | import './sensebox-led'; | ||||||
| import './logic'; | import './logic'; | ||||||
| import './math'; | import './math'; | ||||||
| import './map'; | import './map'; | ||||||
|  | |||||||
							
								
								
									
										15
									
								
								src/components/Blockly/generator/sensebox-led.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								src/components/Blockly/generator/sensebox-led.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | |||||||
|  | import * as Blockly from 'blockly/core'; | ||||||
|  | import { Block } from 'blockly'; | ||||||
|  | 
 | ||||||
|  | Blockly.Arduino.sensebox_rgb_led = function () { | ||||||
|  |     var dropdown_pin = this.getFieldValue('PIN'); | ||||||
|  |     var red = this.getFieldValue('RED') || '0' | ||||||
|  |     var green = this.getFieldValue('GREEN') || '0' | ||||||
|  |     var blue = this.getFieldValue('BLUE') || '0' | ||||||
|  |     Blockly.Arduino.libraries_['define_rgb_led' + dropdown_pin] = '#include <Adafruit_NeoPixel.h>\n Adafruit_NeoPixel rgb_led_' + dropdown_pin + ' = Adafruit_NeoPixel(1,' + dropdown_pin + ',NEO_RGB + NEO_KHZ800);\n'; | ||||||
|  |     Blockly.Arduino.setupCode_['setup_rgb_led' + dropdown_pin] = 'rgb_led_' + dropdown_pin + '.begin();'; | ||||||
|  | 
 | ||||||
|  |     var code = 'rgb_led_' + dropdown_pin + '.setPixelColor(0,rgb_led_' + dropdown_pin + '.Color(' + red + ',' + green + ',' + blue + '));\n'; | ||||||
|  |     code += 'rgb_led_' + dropdown_pin + '.show();'; | ||||||
|  |     return code; | ||||||
|  | }; | ||||||
| @ -1,6 +1,7 @@ | |||||||
| import React from 'react'; | import React from 'react'; | ||||||
| import { Block, Value, Field, Shadow, Category } from '../'; | import { Block, Value, Field, Shadow, Category } from '../'; | ||||||
| import { getColour } from '../helpers/colour' | import { getColour } from '../helpers/colour' | ||||||
|  | import '@blockly/block-plus-minus'; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class Toolbox extends React.Component { | class Toolbox extends React.Component { | ||||||
| @ -23,6 +24,9 @@ class Toolbox extends React.Component { | |||||||
|                         <Block type="sensebox_wifi" /> |                         <Block type="sensebox_wifi" /> | ||||||
|                         <Block type="sensebox_startap" /> |                         <Block type="sensebox_startap" /> | ||||||
|                     </Category> |                     </Category> | ||||||
|  |                     <Category name="LED" colour={getColour().sensebox}> | ||||||
|  |                         <Block type="sensebox_rgb_led" /> | ||||||
|  |                     </Category> | ||||||
|                     <Category name="Display" colour={getColour().sensebox}> |                     <Category name="Display" colour={getColour().sensebox}> | ||||||
|                         <Block type="sensebox_display_beginDisplay" /> |                         <Block type="sensebox_display_beginDisplay" /> | ||||||
|                         <Block type="sensebox_display_show" /> |                         <Block type="sensebox_display_show" /> | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user