Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 66 additions & 0 deletions blockly/blocks/arduino/beta.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
Blockly.Blocks['ledder_block'] = {
init: function() {
this.appendDummyInput()
.appendField("Zet LedUp v2 LED")
.appendField(new Blockly.FieldDropdown([["1","L0"], ["2","L1"], ["3","L2"], ["4","L3"], ["5","L4"], ["6","L5"], ["allemaal","L6"]]), "LED")
.appendField("aan? Waar/Onwaar:")
.appendField(new Blockly.FieldDropdown([["Waar","true"], ["Onwaar","false"]]), "LEDSTATE");
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setTooltip("");
this.setHelpUrl("");
this.setColour(Blockly.Blocks.light.HUE);
}
};

Blockly.Blocks['ledder_block_variabele'] = {
init: function() {
this.appendDummyInput()
.appendField("Zet LedUp v2 LED");
this.appendValueInput("led")
.setCheck("Number");
this.appendValueInput("status")
.setCheck("Boolean")
.appendField("aan? True/False:");
this.setInputsInline(true);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setColour(Blockly.Blocks.light.HUE);
this.setTooltip("Geef als LED nummer een getal van 0 tot 5 ");
this.setHelpUrl("");
}
};

Blockly.Blocks['setup_block'] = {
init: function() {
this.appendDummyInput()
.appendField("LedUpKidz v2");
this.appendDummyInput()
.appendField("Type:")
.appendField(new Blockly.FieldDropdown([["tester","TEST"], ["final","FINAL"]]), "ProgSelecter");
this.appendDummyInput()
.appendField("Test leds:")
.appendField(new Blockly.FieldCheckbox("TRUE"), "LEDTESTER");
this.appendStatementInput("FUNCS")
.setCheck("function")
.appendField("Effecten:");
this.appendDummyInput()
.appendField("Druk knop voor volgende effect");
this.setColour(315);
this.setTooltip("Dit is de setup blok, selecteer welk type chip je gebruikt. Of je de ledjes wilt testen als je het programma opstart en de acties/functies die je wilt uitvoeren. Per druk op de drukknop ga je naar de volgende actie, hou de knop ingedrukt voor slaapmodus, druk nog eens voor wakker te maken.");
this.setHelpUrl("https://www.youtube.com/watch?v=xvFZjo5PgG0");

}
};

Blockly.Blocks['write_block'] = {
init: function() {
this.appendDummyInput()
.appendField("writeReg");
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setColour(20);
this.setTooltip("schrijft naar shiftregister");
this.setHelpUrl("");
}
};
2 changes: 1 addition & 1 deletion blockly/blocks/logic.js
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ Blockly.defineBlocksWithJsonArray([ // BEGIN JSON EXTRACT
// If/else block that does not use a mutator.
{
"type": "controls_ifelse",
"message0": "%{BKY_CONTROLS_IF_MSG_IF} %1",
"message0": "%{BKY_CONTROLS_IF_MSG_IF} %1",
"args0": [
{
"type": "input_value",
Expand Down
4 changes: 2 additions & 2 deletions blockly/blocks/loops.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ goog.require('Blockly.FieldDropdown');
goog.require('Blockly.FieldLabel');
goog.require('Blockly.FieldNumber');
goog.require('Blockly.FieldVariable');
goog.require('Blockly.Warning');
goog.require('Blockly.Warning');


/**
Expand Down Expand Up @@ -164,7 +164,7 @@ Blockly.defineBlocksWithJsonArray([ // BEGIN JSON EXTRACT
},
{
"type": "input_value",
"name": "LIST",
"name": "LIST",
"check": "Array"
}
],
Expand Down
106 changes: 106 additions & 0 deletions blockly/generators/arduino/beta.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
goog.provide('Blockly.Arduino.beta');


goog.require('Blockly.Blocks');

Blockly.Arduino['ledder_block'] = function(block) {
var dropdown_led = block.getFieldValue('LED');
var dropdown_ledstate = block.getFieldValue('LEDSTATE');
dropdown_led = dropdown_led.replaceAll("L","");
var code;
if(dropdown_led<6)
{
code = "registers[" + dropdown_led + "]=" + dropdown_ledstate + ";\nwritereg();\n";
}
else code = "memset(registers," + dropdown_ledstate + ",sizeof(registers));\nwritereg();\n"
return code;
};

Blockly.Arduino['ledder_block_variabele'] = function(block) {
var value_led = Blockly.Arduino.valueToCode(block, 'led', Blockly.Arduino.ORDER_ATOMIC || '0');
var value_status = Blockly.Arduino.valueToCode(block, 'status', Blockly.Arduino.ORDER_ATOMIC || true);
// TODO: Assemble JavaScript into code variable.
var code;
code = "registers[" + value_led + "]=" + value_status + ";\nwritereg();\n";
return code;
};


Blockly.Arduino['write_block'] = function(block) {
// TODO: Assemble JavaScript into code variable.
var code = 'writereg();\n';
return code;
};



Blockly.Arduino['setup_block'] = function(block) {
var testleds = block.getFieldValue('LEDTESTER');
var functies = Blockly.Arduino.statementToCode(block, 'FUNCS');
var programmer = block.getFieldValue('ProgSelecter');
var Decl="";
var Func="";
var Incl="";
var Setp="";
var code="";

var Index= functies.indexOf(";");
var testopslag =[]
while (Index != -1)
{
Index= functies.indexOf(";");
if(Index != -1)
{
testopslag.push(functies.substring(0,Index+1))
}
functies = functies.substring(Index+1);
}

var epic = "switch(mode)\n{";
for(var counter=0; counter<(testopslag.length);counter++)
{
epic+= "\ncase " + counter + ":" + testopslag[counter] + "\nbreak;";
}
epic+="\n}\n";

Incl += ("#include <avr/sleep.h> // Sleep Modes\n#include <avr/power.h> // Power management");


if(programmer=="FINAL")
{
Decl += ("#define DATA 0 //data pin shift reg\n#define RCLK 1 //latch pin shift reg\n#define SRCLK 2 //clock pin shift reg\n#define BUTTON 4\n#define DELAYML 100\n#define LONGPRESS 1000\n\n");

Func += ("ISR (PCINT0_vect) {\n if (digitalRead(BUTTON)==HIGH) {\n pressTime = millis();}\n if(digitalRead(BUTTON)==LOW) {\n if(millis() - pressTime >= LONGPRESS) sleep = true;\n else mode++;}\n if (mode >= " + testopslag.length + ") mode = 0;\n}\n\n");
Setp += ("\nADCSRA = 0;\nPCMSK |= bit(PCINT4);\nGIFR |= bit(PCIF);\nGIMSK |= bit(PCIE);\n")
Setp += ("pinMode(DATA,OUTPUT);\npinMode(RCLK,OUTPUT);\npinMode(SRCLK,OUTPUT);\npinMode(BUTTON,INPUT);")
}
if(programmer=="TEST")
{
Decl += "#define DATA 7 //data pin shift reg\n#define RCLK 5 //clock pin shift reg\n#define SRCLK 6 //latch pin shift reg\n#define BUTTON 2\n#define DELAYML 100\n#define LONGPRESS 1000\n\n"
Func += "void buttonIntrupt() {\nif (digitalRead(BUTTON)==LOW) pressTime = millis();\nif(digitalRead(BUTTON)==HIGH) \n{\nif(millis() - pressTime >= LONGPRESS) sleep = true;\nelse mode++;\n}\nif (mode >= 2) mode = 0;\n}\n\n";
Setp += ("pinMode(DATA,OUTPUT);\npinMode(RCLK,OUTPUT);\npinMode(SRCLK,OUTPUT);\npinMode(BUTTON,INPUT_PULLUP);")
Setp += "\nattachInterrupt(digitalPinToInterrupt(BUTTON), buttonIntrupt, CHANGE);";
}


Func += ("void goToSleep() {\n memset(registers,false,sizeof(registers));\n writereg();\n\n set_sleep_mode(SLEEP_MODE_PWR_DOWN);\n power_all_disable (); // power off ADC, Timer 0 and 1, serial interface\n sleep_enable();\n sleep_cpu();\n sleep_disable(); //power everything back on\n power_all_enable();\n sleep=false;\n mode=0;\n}\n\n");


Decl += ("int mode = 0;\nboolean registers[6];\nbool sleep = false;\nlong pressTime = 0;")

Func += ("void writereg() {\n digitalWrite(SRCLK,LOW);\n\n for(int i=sizeof(registers)-1;i>=0;i--)\n {\n digitalWrite(RCLK,LOW);\n digitalWrite(DATA,registers[i]);\n digitalWrite(RCLK,HIGH);\n }\n\n digitalWrite(SRCLK,HIGH);\n}");

if(testleds=="TRUE")
{ Setp += ("\nmemset(registers,true,sizeof(registers));\nwritereg();\ndelay(DELAYML);\nmemset(registers,false,sizeof(registers));\nwritereg();\ndelay(DELAYML);")
}


code+=epic;
Blockly.Arduino.addInclude("setupInclude",Incl);
Blockly.Arduino.addDeclaration("setupDecl",Decl);
Blockly.Arduino.addFunction("Setup",Func);
Blockly.Arduino.addSetup("setupSetup",Setp);


return code + "\nif(sleep) goToSleep();";
};
14 changes: 13 additions & 1 deletion blockly/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@
<script src="blocks/arduino/servo.js"></script>
<script src="blocks/arduino/spi.js"></script>
<script src="blocks/arduino/stepper.js"></script>
<script src="blocks/arduino/beta.js"></script>
<script src="blocks/arduino/tft.js"></script>
<script src="blocks/arduino/time.js"></script>
<script src="blocks/arduino/tone.js"></script>
Expand Down Expand Up @@ -96,6 +97,7 @@
<script src="generators/arduino/stepper.js"></script>
<script src="generators/arduino/tft.js"></script>
<script src="generators/arduino/text.js"></script>
<script src="generators/arduino/beta.js"></script>
<script src="generators/arduino/time.js"></script>
<script src="generators/arduino/tone.js"></script>
<script src="generators/arduino/variables.js"></script>
Expand Down Expand Up @@ -262,7 +264,7 @@
<option value='{"builder":"arduino:avr:diecimila:cpu=atmega168","ext":"duemilanove168"}'>Arduino Duemilanove168</option>
<option value='{"builder":"arduino:avr:yun","ext":"yun"}'>Arduino Yun</option>
</select>
Kies poort:
Kies poort:
<select class="form-control" id="portType">
</select><br/>

Expand Down Expand Up @@ -1358,6 +1360,16 @@
</block>
</category>
</category>
<category id="New" name="Extra">
<block type="ledder_block">
</block>
<block type="ledder_block_variabele">
</block>
<block type="setup_block">
</block>
<block type="write_block">
</block>
</category>
</category>
</xml>;

Expand Down
Loading