From ea9fabe9a49e0e9a4d1f36533e4e34982554cfd8 Mon Sep 17 00:00:00 2001 From: Lukas Bachschwell Date: Mon, 11 Dec 2017 15:09:49 +0100 Subject: [PATCH 1/5] fixing init methods --- src/SimpleExpressions.cpp | 16 ++++------------ src/SimpleExpressions.h | 4 ++-- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/src/SimpleExpressions.cpp b/src/SimpleExpressions.cpp index 14a9790..42ae094 100755 --- a/src/SimpleExpressions.cpp +++ b/src/SimpleExpressions.cpp @@ -4,21 +4,13 @@ #define ledc_channel 5 void SimpleExpressionsClass::init(int aMouthPin, int aBuzzerPin) { - mouth = Adafruit_NeoPixel(7, aMouthPin, NEO_GRB + NEO_KHZ800); - mouth.begin(); - - buzzerPin = aBuzzerPin; - - #if defined(ESP32) - ledcSetup(ledc_channel, 2000, 8); // channel, max frequency, resolution - ledcAttachPin(aBuzzerPin, ledc_channel); - #endif - - + initMouth(aMouthPin); + initBuzzer(aBuzzerPin); clearMouth(); } -void SimpleExpressionsClass::init(int aMouthPin, int aBuzzerPin) { + +void SimpleExpressionsClass::initMouth(int aMouthPin) { mouth = Adafruit_NeoPixel(7, aMouthPin, NEO_GRB + NEO_KHZ800); mouth.begin(); clearMouth(); diff --git a/src/SimpleExpressions.h b/src/SimpleExpressions.h index ca77e94..e2f8e74 100755 --- a/src/SimpleExpressions.h +++ b/src/SimpleExpressions.h @@ -16,8 +16,8 @@ class SimpleExpressionsClass public: // General void init(int mouthPin, int buzzerPin); - void initMouth(int mouthPin); - void initBuzzer(int buzzerPin); + void initMouth(int mouthPin); + void initBuzzer(int buzzerPin); // Mouths void printMouth(int number, int r, int g, int b); From 8cf9d4583a0e322dc86b93622f2bced14d5ef63a Mon Sep 17 00:00:00 2001 From: Lukas Bachschwell Date: Tue, 12 Dec 2017 14:15:22 +0100 Subject: [PATCH 2/5] Mistakes --- lang/SimpleExpressions.json | 10 +- simpleExpression_blocks.js | 193 ++++++++++++++++++++---------------- 2 files changed, 111 insertions(+), 92 deletions(-) diff --git a/lang/SimpleExpressions.json b/lang/SimpleExpressions.json index b3b2f30..4fefbb5 100644 --- a/lang/SimpleExpressions.json +++ b/lang/SimpleExpressions.json @@ -1,11 +1,11 @@ { - "langs": + "langs": { - "en-GB": + "en-GB": { - "keys": + "keys": { - "LANG_CATEGORY_SOUND": "User Sound", + "LANG_CATEGORY_SOUND": "Sound", "LANG_SUBCATEGORY_BUZZER": "Buzzer", "LANG_PIEZO_BUZZER": "Buzzer", "LANG_PIEZO_BUZZER_PIN": "PIN", @@ -13,4 +13,4 @@ } } } -} \ No newline at end of file +} diff --git a/simpleExpression_blocks.js b/simpleExpression_blocks.js index 24c1173..d25af66 100644 --- a/simpleExpression_blocks.js +++ b/simpleExpression_blocks.js @@ -2,92 +2,111 @@ 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'), - 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_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; + 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.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')); - } - }; +Blockly.Arduino['show_mouth'] = function(block) { + 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.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 d5cef241bffe5e4ca383153190616456497d864d Mon Sep 17 00:00:00 2001 From: Lukas Bachschwell Date: Wed, 13 Dec 2017 13:41:07 +0100 Subject: [PATCH 3/5] Versionbump 1.1 --- library.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library.properties b/library.properties index c6a7ceb..11a846f 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=SimpleExpressions -version=1.0.0 +version=1.1.0 author=Lukas Bachschwell maintainer=Lukas Bachschwell sentence=Make you Robots cute and noisy From 5574f6f7329deabca8c1127c7bfdc0e53a1c534a Mon Sep 17 00:00:00 2001 From: Lukas Bachschwell Date: Wed, 13 Dec 2017 14:49:20 +0100 Subject: [PATCH 4/5] Bug fixes --- src/Sounds.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Sounds.h b/src/Sounds.h index 6ed709a..f14d3fd 100644 --- a/src/Sounds.h +++ b/src/Sounds.h @@ -134,7 +134,7 @@ const int songspeed = 1; -const PROGMEM int notes[] = { //Note of the song, 0 is a rest/pulse +const PROGMEM double notes[] = { //Note of the song, 0 is a rest/pulse NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0, NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0, NOTE_C5, NOTE_D5, NOTE_B4, NOTE_B4, 0, From 6d19e4bd02ef6c52f4f7f63e790bf490a258d412 Mon Sep 17 00:00:00 2001 From: Lukas Bachschwell Date: Wed, 13 Dec 2017 14:51:57 +0100 Subject: [PATCH 5/5] Update SimpleExpressions.cpp --- src/SimpleExpressions.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/SimpleExpressions.cpp b/src/SimpleExpressions.cpp index 42ae094..67fa5bb 100755 --- a/src/SimpleExpressions.cpp +++ b/src/SimpleExpressions.cpp @@ -29,7 +29,7 @@ void SimpleExpressionsClass::initBuzzer(int aBuzzerPin) { //-- MOUTHS ----------------------------------------// /////////////////////////////////////////////////////////////////// -void SimpleExpressionsClass::writeMouth(char mouthName[], int r, int g, int b) { +void SimpleExpressionsClass::writeMouth(const char mouthName[], int r, int g, int b) { int number = -1; for(int i = 0; i < frameCount; i++){ if(strncmp(shapes[i].name, mouthName, 20) == 0) { @@ -54,7 +54,7 @@ void SimpleExpressionsClass::printMouth(int number, int r, int g, int b) { clearPixels(); } -void SimpleExpressionsClass::writeMouth(char mouthName[] ) { +void SimpleExpressionsClass::writeMouth(const char mouthName[] ) { int number = -1; for(int i = 0; i < colorFrameCount; i++){ if(strncmp(shapes[i].name, mouthName, 20) == 0) {