From 5e8dfc99205f19b235232db899baf7a3ce936a4d Mon Sep 17 00:00:00 2001 From: roboticafacil Date: Fri, 8 Dec 2017 13:41:15 +0100 Subject: [PATCH 1/5] modified: simpleExpression_blocks.js modified: src/SimpleExpressions.cpp modified: src/SimpleExpressions.h --- simpleExpression_blocks.js | 54 ++++++++++++++++++++++++-------------- src/SimpleExpressions.cpp | 15 +++++++++++ src/SimpleExpressions.h | 2 ++ 3 files changed, 51 insertions(+), 20 deletions(-) diff --git a/simpleExpression_blocks.js b/simpleExpression_blocks.js index 91a1cdd..8c3bf98 100644 --- a/simpleExpression_blocks.js +++ b/simpleExpression_blocks.js @@ -1,26 +1,40 @@ +Facilino.LANG_COLOUR_SCREEN_LEDSTRIP = '#8EAC32'; +Facilino.locales.defaultLanguage["LANG_SUBCATERGORY_WS2812"]="LED Strip"; +Facilino.locales.defaultLanguage["LANG_SIMPLEEXPRESSIONS_PIN"]="PIN"; +Facilino.locales.defaultLanguage["LANG_SIMPLEEXPRESSIONS_SHOWMOUTH_TOOLTIP"]="Draw an expression on the WS2812 led strip (ring-7)"; + Blockly.Blocks['show_mouth'] = { - category: 'SimpleExpressions', - colour: '#fbb117', - helpUrl: Facilino.getHelpUrl('show_mouth'), - tags: [], - examples: [], - init: function() { - this.appendDummyInput() - .appendField("showMouth"); - this.appendValueInput("Color") - .setCheck(null) - .appendField("Color"); - this.setColour("#fbb117"); - this.setTooltip(""); - } + category: Facilino.locales.getKey('LANG_CATEGORY_SCREEN'), + subcategory: Facilino.locales.getKey('LANG_SUBCATERGORY_WS2812'), + category_colour: Facilino.LANG_COLOUR_SCREEN, + colour: Facilino.LANG_COLOUR_SCREEN_LEDSTRIP, + helpUrl: Facilino.getHelpUrl('show_mouth'), + tags: [], + examples: [], + init: function() { + this.appendDummyInput('').appendField("WS2812 7-Ring").appendField(new Blockly.FieldImage('img/blocks/led_strip.svg', 40*options.zoom, 40*options.zoom)); + this.appendValueInput('PIN').appendField(Facilino.locales.getKey('LANG_SIMPLEEXPRESSIONS_PIN')).setAlign(Blockly.ALIGN_RIGHT).setCheck(Number); + this.appendDummyInput('').appendField('Expression').appendField(new Blockly.FieldDropdown([['Zeros','zeros'],['Happy Small','happySmall'],['Happy Full','happyFull'],['Sad Small','sadSmall'],['Sad Full','sadFull'],['Neutral','neutral'],['Circle','circle'],['Center','center'],['Hook','hook'],['Upsidedown Hook','upsidedownhook'],['Kooh','kooh'],['Upsidedown Kooh','upsidedownkooh'],['Cross','cross'],['Rect','rect'],['Left Arrow','leftarrow'],['Right Arrow','rightarrow'],['Left Half','lefthalf'],['Right Half','righthalf']]),'EXPRESSION').setAlign(Blockly.ALIGN_RIGHT); + var colour = new Blockly.FieldColour('#000000'); + colour.setColours(['#000000','#808080','#C0C0C0','#FFFFFF','#800000','#FF0000','#808000','#FFFF00','#008000','#00FF00','#008080','#00FFFF','#000080','#0000FF','#800080','#FF00FF']).setColumns(4); + this.appendDummyInput('').appendField('Color').appendField(colour,'COLOR').setAlign(Blockly.ALIGN_RIGHT); + this.setPreviousStatement(true,'code'); + this.setNextStatement(true,'code'); + this.setColour(Facilino.LANG_COLOUR_SCREEN_LEDSTRIP); + this.setTooltip(""); +} }; - - + Blockly.Arduino['show_mouth'] = function(block) { - var input_color = Blockly.Arduino.valueToCode(block, 'Color', Blockly.Arduino.ORDER_ATOMIC); - var code='SimpleExpressions.showMouth("'+'mouth_name'+'", ' + color + ')' ; - code+= '\n'; - return code; +var input_expression = this.getFieldValue('EXPRESSION'); +var input_color = this.getFieldValue('COLOR'); +var input_pin = Blockly.Arduino.valueToCode(this,'PIN',Blockly.Arduino.ORDER_ATOMIC) || ''; +Blockly.Arduino.definitions_['define_simpleexpressions_h'] = '#include '; +Blockly.Arduino.setups_['setup_simpleexpressions_mouth'] = 'SimpleExpressions.initMouth('+input_pin+');\n'; +var color_rgb=Facilino.hexToRgb(input_color); +var code='SimpleExpressions.writeMouth("'+input_expression+'",'+color_rgb.r +','+color_rgb.g+','+color_rgb.b+');\n' ; +code+= '\n'; +return code; }; Blockly.Blocks['play_sound'] = { diff --git a/src/SimpleExpressions.cpp b/src/SimpleExpressions.cpp index 0b13ebe..14a9790 100755 --- a/src/SimpleExpressions.cpp +++ b/src/SimpleExpressions.cpp @@ -18,6 +18,21 @@ void SimpleExpressionsClass::init(int aMouthPin, int aBuzzerPin) { clearMouth(); } +void SimpleExpressionsClass::init(int aMouthPin, int aBuzzerPin) { + mouth = Adafruit_NeoPixel(7, aMouthPin, NEO_GRB + NEO_KHZ800); + mouth.begin(); + clearMouth(); +} + +void SimpleExpressionsClass::initBuzzer(int aBuzzerPin) { + buzzerPin = aBuzzerPin; + + #if defined(ESP32) + ledcSetup(ledc_channel, 2000, 8); // channel, max frequency, resolution + ledcAttachPin(aBuzzerPin, ledc_channel); + #endif +} + /////////////////////////////////////////////////////////////////// //-- MOUTHS ----------------------------------------// /////////////////////////////////////////////////////////////////// diff --git a/src/SimpleExpressions.h b/src/SimpleExpressions.h index 0b7fd6c..ca77e94 100755 --- a/src/SimpleExpressions.h +++ b/src/SimpleExpressions.h @@ -16,6 +16,8 @@ class SimpleExpressionsClass public: // General void init(int mouthPin, int buzzerPin); + void initMouth(int mouthPin); + void initBuzzer(int buzzerPin); // Mouths void printMouth(int number, int r, int g, int b); From 8e0f1c42405a5b78455857f771669cd03d6265b8 Mon Sep 17 00:00:00 2001 From: roboticafacil Date: Fri, 8 Dec 2017 13:44:55 +0100 Subject: [PATCH 2/5] new file: img/blocks/led_strip.svg --- img/blocks/led_strip.svg | 95 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 img/blocks/led_strip.svg diff --git a/img/blocks/led_strip.svg b/img/blocks/led_strip.svg new file mode 100644 index 0000000..d0b2273 --- /dev/null +++ b/img/blocks/led_strip.svg @@ -0,0 +1,95 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + From 718ab33c32605f48de816e78170c59fba94d6528 Mon Sep 17 00:00:00 2001 From: roboticafacil Date: Fri, 8 Dec 2017 13:47:02 +0100 Subject: [PATCH 3/5] new file: img/blocks/credits.txt --- img/blocks/credits.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 img/blocks/credits.txt diff --git a/img/blocks/credits.txt b/img/blocks/credits.txt new file mode 100644 index 0000000..3cf2b3e --- /dev/null +++ b/img/blocks/credits.txt @@ -0,0 +1 @@ +Created by Leopoldo Armesto (based on the icon from Antoine Dieulesaint from the Noun Project) \ No newline at end of file From e1f29d04f4dbe141077171703ae0d474ee673b6d Mon Sep 17 00:00:00 2001 From: roboticafacil Date: Sat, 9 Dec 2017 11:38:55 +0100 Subject: [PATCH 4/5] modified: simpleExpression_blocks.js --- simpleExpression_blocks.js | 82 ++++++++++++++++++++++++++------------ 1 file changed, 56 insertions(+), 26 deletions(-) diff --git a/simpleExpression_blocks.js b/simpleExpression_blocks.js index 8c3bf98..c21a9b4 100644 --- a/simpleExpression_blocks.js +++ b/simpleExpression_blocks.js @@ -1,8 +1,3 @@ -Facilino.LANG_COLOUR_SCREEN_LEDSTRIP = '#8EAC32'; -Facilino.locales.defaultLanguage["LANG_SUBCATERGORY_WS2812"]="LED Strip"; -Facilino.locales.defaultLanguage["LANG_SIMPLEEXPRESSIONS_PIN"]="PIN"; -Facilino.locales.defaultLanguage["LANG_SIMPLEEXPRESSIONS_SHOWMOUTH_TOOLTIP"]="Draw an expression on the WS2812 led strip (ring-7)"; - Blockly.Blocks['show_mouth'] = { category: Facilino.locales.getKey('LANG_CATEGORY_SCREEN'), subcategory: Facilino.locales.getKey('LANG_SUBCATERGORY_WS2812'), @@ -37,24 +32,59 @@ code+= '\n'; return code; }; -Blockly.Blocks['play_sound'] = { - category: 'SimpleExpressions', - colour: '#fbb117', - helpUrl: Facilino.getHelpUrl('play_sound'), - tags: [], - examples: [], - init: function() { - this.appendDummyInput() - .appendField("play Sound"); - this.setColour("#fbb117"); - this.setTooltip(""); - } -}; - - -Blockly.Arduino['play_sound'] = function(block) { - var input_color = Blockly.Arduino.valueToCode(block, 'Color', Blockly.Arduino.ORDER_ATOMIC); - var code=''; - code+= '\n'; - return code; -}; + Blockly.Arduino.dyor_piezo_buzzer_predef_sounds = function() { + var dropdown_pin = Blockly.Arduino.valueToCode(this, 'PIN', Blockly.Arduino.ORDER_ATOMIC) || ''; + var code= ''; + Blockly.Arduino.definitions_['define_simpleexpressions_h'] = '#include '; + Blockly.Arduino.setups_['setup_simpleexpressions_buzzer'] = 'SimpleExpressions.initBuzzer('+dropdown_pin+');\n'; + code='SimpleExpressions.playSound('+this.getFieldValue('OPTION')+');\n'; + return code; + }; + + Blockly.Blocks.dyor_piezo_buzzer_predef_sounds = { + category: Facilino.locales.getKey('LANG_CATEGORY_SOUND'), + subcategory: Facilino.locales.getKey('LANG_SUBCATEGORY_BUZZER'), + tags: ['buzzer','sound'], + helpUrl: Facilino.getHelpUrl('dyor_piezo_buzzer_predef_sounds'), + examples: [''], + category_colour: Facilino.LANG_COLOUR_SOUND, + colour: Facilino.LANG_COLOUR_SOUND_BUZZER, + //dyor_piezo_buzzer initialization + init: function() { + this.setColour(Facilino.LANG_COLOUR_SOUND_BUZZER); + this.appendDummyInput('') + .appendField(Facilino.locales.getKey('LANG_PIEZO_BUZZER')) + .appendField(new Blockly.FieldImage('img/blocks/buzzer.svg', 52*options.zoom, 35*options.zoom)); + this.appendValueInput('PIN') + .appendField(Facilino.locales.getKey('LANG_PIEZO_BUZZER_PIN')).appendField(new Blockly.FieldImage("img/blocks/pwm_signal.svg",24*options.zoom,24*options.zoom)) + .setCheck(Number) + .setAlign(Blockly.ALIGN_RIGHT); + this.appendDummyInput('').appendField(new Blockly.FieldImage('img/blocks/speaker.svg', 24*options.zoom, 24*options.zoom)) + .appendField(new Blockly.FieldDropdown([ + ['CONNECTION', '0'], + ['DISCONNECTION', '1'], + ['BUTTON PUSHED', '2'], + ['MODE 1', '3'], + ['MODE 2', '4'], + ['MODE 3', '5'], + ['SURPRISE', '6'], + ['OHOOH', '7'], + ['OHOOH2', '8'], + ['CUDDLY', '9'], + ['SLEEPING','10'], + ['HAPPY','11'], + ['SUPER_HAPPY','12'], + ['HAPPY_SHORT','13'], + ['SAD','14'], + ['CONFUSED','15'], + ['FART1','16'], + ['FART2','17'], + ['FART3','18'], + ['PIRATES','19'] + ]), 'OPTION').setAlign(Blockly.ALIGN_RIGHT); + this.setInputsInline(false); + this.setPreviousStatement(true,'code'); + this.setNextStatement(true,'code'); + this.setTooltip(Facilino.locales.getKey('LANG_PIEZO_BUZZER_PREDEF_SOUNDS_TOOLTIP')); + } + }; From 3405cf52c98d9c8efb2cbb2874b77be7cfce0d20 Mon Sep 17 00:00:00 2001 From: roboticafacil Date: Sat, 9 Dec 2017 14:16:03 +0100 Subject: [PATCH 5/5] new file: lang/SimpleExpressions.json modified: simpleExpression_blocks.js --- lang/SimpleExpressions.json | 16 ++++++++++++++++ simpleExpression_blocks.js | 3 +++ 2 files changed, 19 insertions(+) create mode 100644 lang/SimpleExpressions.json diff --git a/lang/SimpleExpressions.json b/lang/SimpleExpressions.json new file mode 100644 index 0000000..b3b2f30 --- /dev/null +++ b/lang/SimpleExpressions.json @@ -0,0 +1,16 @@ +{ + "langs": + { + "en-GB": + { + "keys": + { + "LANG_CATEGORY_SOUND": "User Sound", + "LANG_SUBCATEGORY_BUZZER": "Buzzer", + "LANG_PIEZO_BUZZER": "Buzzer", + "LANG_PIEZO_BUZZER_PIN": "PIN", + "LANG_PIEZO_BUZZER_PREDEF_SOUNDS_TOOLTIP": "Plays some basic sounds based on SimpleExpressions library" + } + } + } +} \ No newline at end of file diff --git a/simpleExpression_blocks.js b/simpleExpression_blocks.js index c21a9b4..24c1173 100644 --- a/simpleExpression_blocks.js +++ b/simpleExpression_blocks.js @@ -1,3 +1,6 @@ +Facilino.LANG_COLOUR_SCREEN = '#ACCE42'; +Facilino.LANG_COLOUR_SCREEN_LEDSTRIP = '#8EAC32'; + Blockly.Blocks['show_mouth'] = { category: Facilino.locales.getKey('LANG_CATEGORY_SCREEN'), subcategory: Facilino.locales.getKey('LANG_SUBCATERGORY_WS2812'),