1/* communication */ 2Blockly.Arduino["serial_init"]=function(block){ 3 var dropdown_speed=block.getFieldValue("SPEED"); 4 var dropdown_pin=block.getFieldValue("pin"); 5 window.localStorage.baudrate=dropdown_speed; 6 switch (dropdown_pin) { 7 case "0": 8 Blockly.Arduino.setups_["serial_begin"]="Serial.begin(" + dropdown_speed + ");"; 9 break; 10 case "19": 11 Blockly.Arduino.setups_["serial_begin"]="Serial1.begin(" + dropdown_speed + ");"; 12 break; 13 case "17": 14 Blockly.Arduino.setups_["serial_begin"]="Serial2.begin(" + dropdown_speed + ");"; 15 break 16 case "15": 17 Blockly.Arduino.setups_["serial_begin"]="Serial3.begin(" + dropdown_speed + ");"; 18 break 19 } 20 return "" 21}; 22Blockly.Arduino["serial_read"]=function(block){ 23 var code="Serial.read()"; 24 return [code, Blockly.Arduino.ORDER_ATOMIC] 25}; 26Blockly.Arduino["serial_line"]=function(block){ 27 var code='"\\n"'; 28 return [code, Blockly.Arduino.ORDER_ATOMIC] 29}; 30Blockly.Arduino["serial_writeln"]=function(block){ 31 return "Serial.println();\n" 32}; 33Blockly.Arduino["serial_tab"]=function(block){ 34 var code='" ; "'; 35 return [code, Blockly.Arduino.ORDER_ATOMIC] 36}; 37Blockly.Arduino["serial_available"]=function(block){ 38 var code="Serial.available()"; 39 return [code, Blockly.Arduino.ORDER_ATOMIC] 40}; 41Blockly.Arduino["serial_write"]=function(block){ 42 var content=Blockly.Arduino.valueToCode(block, "CONTENT", Blockly.Arduino.ORDER_ATOMIC); 43 return "Serial.print(" + content + ");\n" 44}; 45Blockly.Arduino["serial_flush"]=function(block){ 46 return "Serial.flush();\n" 47}; 48Blockly.Arduino["soft_init"]=function(block){ 49 var dropdown_pin1=block.getFieldValue("PIN1"); 50 var dropdown_pin2=block.getFieldValue("PIN2"); 51 var dropdown_speed=block.getFieldValue("SPEED"); 52 Blockly.Arduino.includes_["define_ss"]="#include <SoftwareSerial.h>";
53 Blockly.Arduino.definitions_["define_ss"]="SoftwareSerial mySerial(" + dropdown_pin1 + "," + dropdown_pin2 + ");"; 54 Blockly.Arduino.setups_["setup_sserial"]="mySerial.begin(" + dropdown_speed + ");"; 55 return "" 56}; 57Blockly.Arduino["soft_read"]=function(block){ 58 var code="mySerial.read()"; 59 return [code, Blockly.Arduino.ORDER_ATOMIC] 60}; 61Blockly.Arduino["soft_write"]=function(block){ 62 var content=Blockly.Arduino.valueToCode(block, "CONTENT", Blockly.Arduino.ORDER_ATOMIC); 63 return "mySerial.write(" + content + ");\n" 64}; 65Blockly.Arduino["soft_available"]=function(block){ 66 var code="mySerial.available()"; 67 return [code, Blockly.Arduino.ORDER_ATOMIC] 68}; 69/* wifi */ 70Blockly.Arduino['esp8266_init']=function(block){ 71 var mode=block.getFieldValue("clientserveur"); 72 var adressage=block.getFieldValue("staticdynamic"); 73 var reseau=block.getFieldValue("SSID"); 74 var cle=block.getFieldValue("KEY"); 75 Blockly.Arduino.includes_["esp8266"] = "#include <ESP8266WiFi.h>"; 76 if (adressage=="static"){ 77 var ipabc=block.getFieldValue("IPa")+","+block.getFieldValue("IPb")+","+block.getFieldValue("IPc"); 78 var ipd=block.getFieldValue("IPd"); 79 var passerelle=block.getFieldValue("GATEWAY"); 80 var masque=block.getFieldValue("MASKa")+","+block.getFieldValue("MASKb")+","+block.getFieldValue("MASKc")+","+block.getFieldValue("MASKd"); 81 Blockly.Arduino.definitions_["esp8266"] = 'IPAddress ip('+ipabc+','+ipd+');\nIPAddress gateway('+ipabc+','+passerelle+');\nIPAddress subnet('+masque+');\n'; 82 Blockly.Arduino.setups_["esp8266"] = 'WiFi.disconnect();\n delay(2500);\n WiFi.config(ip, gateway, subnet);\n WiFi.begin("'+reseau+'","'+cle+'");\n while (WiFi.status() != WL_CONNECTED) { delay(250); };\n'; 83 } else { 84 Blockly.Arduino.definitions_["esp8266"] = ""; 85 Blockly.Arduino.setups_["esp8266"] = 'WiFi.disconnect();\n delay(2500);\n WiFi.begin("'+reseau+'","'+cle+'");\n while (WiFi.status() != WL_CONNECTED) { delay(250); };\n'; 86 } 87 if (mode=="serveur"){ 88 var port=Blockly.Arduino.valueToCode(block, "V0", Blockly.Arduino.ORDER_ATOMIC); 89 Blockly.Arduino.definitions_["esp8266"] += 'WiFiServer server(' + port + ');\n'; 90 Blockly.Arduino.setups_["esp8266"] += ' server.begin();\n'; 91 } else { 92 Blockly.Arduino.definitions_["esp8266"] += 'WiFiClient client;\n'; 93 } 94 return "" ; 95}; 96Blockly.Arduino['esp8266_send']=function(block){ 97 var data=Blockly.Arduino.valueToCode(block, 'message', Blockly.Arduino.ORDER_ATOMIC); 98 var code = 'client.println("HTTP/1.1 200 OK");\nclient.println("Content-Type: text/html");\nclient.println("");\nclient.println("<!DOCTYPE HTML>");\n'; 99 code += 'client.println("<html>");\nclient.println(' + data + ');\nclient.println("</html>");\n'; 100 return code 101}; 102Blockly.Arduino['esp8266_send_html']=function(block){ 103 var htmlhead=Blockly.Arduino.statementToCode(block, 'HEAD'); 104 var htmlbody=Blockly.Arduino.statementToCode(block, "BODY"); 105 var code = 'client.println("HTTP/1.1 200 OK");\nclient.println("Content-Type: text/html; charset=UTF-8");\nclient.println("");\nclient.println("<!DOCTYPE HTML>");\n'; 106 code += 'client.println("<html>");\nclient.println("<head>");\n' + htmlhead + 'client.println("</head>");\n'; 107 code += 'client.println("<body>");\n' + htmlbody + 'client.println("</body>");\nclient.println("</html>");\n'; 108 code += 'delay(1);\nclient.stop();\n' ; 109 return code 110}; 111Blockly.Arduino['esp8266_wait_server']=function(block){ 112 return 'WiFiClient client = server.available();\nif (!client) return;\nwhile (!client.available()) { delay(1); }\nchar request = client.read();\nclient.flush();\n' 113}; 114Blockly.Arduino['esp8266_wait_client']=function(block){ 115 var host=Blockly.Arduino.valueToCode(block, "host", Blockly.Arduino.ORDER_ATOMIC); 116 var port=Blockly.Arduino.valueToCode(block, "port", Blockly.Arduino.ORDER_ATOMIC);
117 return 'if (!client.connect(' + host + ',' + port + ')) { delay(1000) ; return }.\nwhile (client.available()){ String reponse = client.read(); };\n' 118}; 119Blockly.Arduino["esp8266_request_indexof"]=function(block){ 120 var n=0; 121 var argument=Blockly.Arduino.valueToCode(block, "CASE" + n, Blockly.Arduino.ORDER_NONE); 122 var branch=Blockly.Arduino.statementToCode(block, "DO" + n); 123 var code='if (request.indexOf(' + argument + ') != -1) {\n' + branch + '}\n'; 124 for (n=1; n <= block.casebreakCount_; n++) { 125 argument=Blockly.Arduino.valueToCode(block, "CASE" + n, Blockly.Arduino.ORDER_NONE); 126 branch=Blockly.Arduino.statementToCode(block, "DO" + n); 127 code += 'if (request.indexOf(' + argument + ') != -1) {\n' + branch + '}\n' 128 } 129 return code 130}; 131/* bluetooth */ 132Blockly.Arduino["bluetooth_init"]=function(block){ 133 var dropdown_pin1=Blockly.Arduino.valueToCode(block,"PIN1", Blockly.Arduino.ORDER_NONE); 134 var dropdown_pin2=Blockly.Arduino.valueToCode(block,"PIN2", Blockly.Arduino.ORDER_NONE); 135 var dropdown_speed=block.getFieldValue("SPEED"); 136 var n=0; 137 Blockly.Arduino.includes_["define_ss"]="#include <SoftwareSerial.h>"; 138 Blockly.Arduino.definitions_["bluetooth"]="SoftwareSerial bluetooth("+dropdown_pin1+","+dropdown_pin2+");"; 139 Blockly.Arduino.setups_["bluetooth"]="bluetooth.begin(" + dropdown_speed + ");"; 140 return "" 141}; 142Blockly.Arduino["bluetooth_a"]=function(block){ 143 var value_data_s=Blockly.Arduino.valueToCode(block, "data_s", Blockly.Arduino.ORDER_NONE); 144 return "if (bluetooth.available() > 0) {\n bluetooth.write(" + value_data_s + ");\n}\n" 145}; 146Blockly.Arduino["bluetooth_print"]=function(block){ 147 var value_data_s=Blockly.Arduino.valueToCode(block, "data_s", Blockly.Arduino.ORDER_NONE); 148 return "if (bluetooth.available() > 0) {\n bluetooth.print(" + value_data_s + ");\n}\n" 149}; 150Blockly.Arduino["bluetooth_b"]=function(block){ 151 var n=0; 152 var argument=Blockly.Arduino.valueToCode(block, "CASE" + n, Blockly.Arduino.ORDER_NONE); 153 var branch=Blockly.Arduino.statementToCode(block, "DO" + n); 154 var code="if (bluetooth.available() > 0) {\n char dataR=bluetooth.read();\n if (dataR == " + argument + ") {\n " + branch + " }\n"; 155 for (n=1; n <= block.casebreakCount_; n++) { 156 argument=Blockly.Arduino.valueToCode(block, "CASE" + n, Blockly.Arduino.ORDER_NONE); 157 branch=Blockly.Arduino.statementToCode(block, "DO" + n); 158 code += " if (dataR == " + argument + ") {\n " + branch + " }\n" 159 } 160 code += "}\n" 161 return code 162}; 163/* structure */ 164Blockly.Arduino["base_setup_loop"]=function(block){ 165 var branch=Blockly.Arduino.statementToCode(block, "DO"); 166 var loop=Blockly.Arduino.statementToCode(block, "LOOP"); 167 if (Blockly.Arduino.INFINITE_LOOP_TRAP) branch=Blockly.Arduino.INFINITE_LOOP_TRAP.replace(/%1/g, "'" + block.id + "'") + branch; 168 var code=branch; 169 var setup_key=Blockly.Arduino.variableDB_.getDistinctName("base_setup", Blockly.Variables.NAME_TYPE); 170 Blockly.Arduino.setups_[setup_key]=code; 171 return [loop, Blockly.Arduino.ORDER_ATOMIC] 172}; 173Blockly.Arduino["base_loop"]=function(block){ 174 function statementToCodeNoTab(block, name) { 175 var targetBlock=block.getInputTargetBlock(name); 176 var code=Blockly.Arduino.blockToCode(targetBlock); 177 if (!goog.isString(code)) throw 'Expecting code from statement block "' + targetBlock.type + '".'; 178 return code 179 } 180 var loopBranch=statementToCodeNoTab(block, "LOOP"); 181 return loopBranch 182}; 183Blockly.Arduino["base_define"]=function(block){ 184 var branch=Blockly.Arduino.statementToCode(block, "DO"); 185 if (Blockly.Arduino.INFINITE_LOOP_TRAP) branch=Blockly.Arduino.INFINITE_LOOP_TRAP.replace(/%1/g, "'" + block.id + "'") + branch; 186 var code=branch; 187 var setup_key=Blockly.Arduino.variableDB_.getDistinctName("base_setup", Blockly.Variables.NAME_TYPE); 188 Blockly.Arduino.definitions_[setup_key]=code; 189 return "" 190}; 191Blockly.Arduino["base_code"]=function(block){ 192 return block.getFieldValue("TEXT") + "\n" 193}; 194Blockly.Arduino["base_end"]=function(block){ 195 return "while(true);\n" 196}; 197Blockly.Arduino["base_begin"]=function(block){ 198 return "" 199}; 200Blockly.Arduino['base_code_entree']=function(block){ 201 var code=block.getFieldValue("TEXT"); 202 return [code, Blockly.Arduino.ORDER_ATOMIC] ; 203}; 204/* temps */ 205Blockly.Arduino["inout_pulsein"]=function(block){ 206 var dropdown_pin=Blockly.Arduino.valueToCode(block, "PIN", Blockly.Arduino.ORDER_ATOMIC); 207 var dropdown_stat=block.getFieldValue("STAT"); 208 Blockly.Arduino.setups_["setup_input_" + dropdown_pin]="pinMode(" + dropdown_pin + ", INPUT);"; 209 var code="pulseIn(" + dropdown_pin + "," + dropdown_stat + ")"; 210 return [code, Blockly.Arduino.ORDER_ATOMIC] 211}; 212Blockly.Arduino["millis"]=function(block){ 213 var _u=block.getFieldValue("unite"); 214 switch (_u) { 215 case "u": 216 var code="micros()"; 217 break; 218 case "m": 219 var code="millis()"; 220 break; 221 case "s": 222 code="1000*millis()"; 223 break 224 } 225 return [code, Blockly.Arduino.ORDER_ATOMIC] 226}; 227Blockly.Arduino["chrono"]=function(block){ 228 var _u=block.getFieldValue("unite"); 229 switch (_u) { 230 case "u": 231 var code="start-micros()"; 232 break; 233 case "m": 234 var code="start-millis()"; 235 break; 236 case "s": 237 code="start-1000*millis()"; 238 break 239 } 240 return [code, Blockly.Arduino.ORDER_SUBTRACTION] 241}; 242Blockly.Arduino["millis_start"]=function(block){ 243 var _u=block.getFieldValue("unite"); 244 switch (_u) { 245 case "u": 246 var code="unsigned long start = micros();\n"; 247 break; 248 case "m": 249 var code="unsigned long start = millis();\n"; 250 break; 251 case "s": 252 code="unsigned long start = 1000*millis();\n"; 253 break 254 } 255 return code 256}; 257Blockly.Arduino["base_delay"]=function(block){ 258 var _u=block.getFieldValue("unite"); 259 var delay_time=Blockly.Arduino.valueToCode(block, "DELAY_TIME", Blockly.Arduino.ORDER_ATOMIC); 260 switch (_u) { 261 case "u": 262 var code="delayMicroseconds(" + delay_time + ");\n"; 263 break; 264 case "m": 265 var code="delay(" + delay_time + ");\n"; 266 break; 267 case "s": 268 code="delay(" + delay_time + "*1000);\n"; 269 break 270 }; 271 return code 272}; 273Blockly.Arduino["tempo_sans_delay"]=function(block){ 274 var _u=block.getFieldValue("unite"); 275 var delay_time=Blockly.Arduino.valueToCode(block, "DELAY_TIME", Blockly.Arduino.ORDER_ATOMIC); 276 var faire=Blockly.Arduino.statementToCode(block, "branche"); 277 var temps="temps"+delay_time; 278 Blockly.Arduino.definitions_["temporisation"+delay_time]="unsigned long "+temps+"=0 ;"; 279 switch (_u) { 280 case "u": 281 var code="if ((micros()-"+temps+")>=" + delay_time + ") {\n "+temps+"=micros();\n"+faire+"}\n"; 282 break; 283 case "m": 284 var code="if ((millis()-"+temps+")>=" + delay_time + ") {\n "+temps+"=millis();\n"+faire+"}\n"; 285 break; 286 case "s": 287 code="if ((millis()-"+temps+")>=" + delay_time + "*1000) {\n "+temps+"=millis();\n"+faire+"}\n"; 288 break 289 }; 290 return code 291}; 292/* entree sortie */ 293Blockly.Arduino["inout_attachInterrupt"]=function(block){ 294 var dropdown_pin=block.getFieldValue('PIN'); 295 var INT=parseInt(dropdown_pin)+2; 296 var dropdown_mode=block.getFieldValue('mode'); 297 var funcName='interrupt_'+dropdown_pin; 298 Blockly.Arduino.setups_['setup_Interrupt_'+dropdown_pin]='pinMode('+INT+', INPUT_PULLUP);\n attachInterrupt('+dropdown_pin+','+funcName+','+dropdown_mode+');'; 299 var branch=Blockly.Arduino.statementToCode(block, 'DO' ); 300 Blockly.Arduino.codeFunctions_[funcName] ='void ' + funcName + '() {\n' + branch + '}'; 301 return ""; 302}; 303Blockly.Arduino["inout_detachInterrupt"]=function(block){ 304 var dropdown_pin=block.getFieldValue('PIN'); 305 return 'detachInterrupt('+dropdown_pin+');\n'; 306}; 307Blockly.Arduino["inout_digital_write"]=function(block){ 308 var dropdown_pin=Blockly.Arduino.valueToCode(block, "PIN", Blockly.Arduino.ORDER_ATOMIC); 309 var dropdown_stat=Blockly.Arduino.valueToCode(block, "STAT", Blockly.Arduino.ORDER_ATOMIC); 310 Blockly.Arduino.setups_["setup_output_" + dropdown_pin]="pinMode(" + dropdown_pin + ", OUTPUT);"; 311 var code="digitalWrite(" + dropdown_pin + ", " + dropdown_stat + ");\n"; 312 return code 313}; 314Blockly.Arduino["inout_digital_read"]=function(block){ 315 var dropdown_pin=Blockly.Arduino.valueToCode(block, "PIN", Blockly.Arduino.ORDER_ATOMIC); 316 Blockly.Arduino.setups_["setup_input_" + dropdown_pin]="pinMode(" + dropdown_pin + ", INPUT_PULLUP);"; 317 var code="digitalRead(" + dropdown_pin + ")"; 318 return [code, Blockly.Arduino.ORDER_ATOMIC] 319}; 320Blockly.Arduino["digital_read"]=function(block){ 321 var pull_up=block.getFieldValue('pullup') == 'TRUE'; 322 var dropdown_pin=Blockly.Arduino.valueToCode(block, "PIN", Blockly.Arduino.ORDER_ATOMIC); 323 if (pull_up) { 324 Blockly.Arduino.setups_["setup_input_" + dropdown_pin]="pinMode(" + dropdown_pin + ", INPUT_PULLUP);" 325 } else { 326 Blockly.Arduino.setups_["setup_input_" + dropdown_pin]="pinMode(" + dropdown_pin + ", INPUT);" 327 }; 328 var code="digitalRead(" + dropdown_pin + ")"; 329 return [code, Blockly.Arduino.ORDER_ATOMIC] 330}; 331Blockly.Arduino["inout_analog_write"]=function(block){ 332 var dropdown_pin=block.getFieldValue("broche"); 333 var value_num=Blockly.Arduino.valueToCode(block, "NUM", Blockly.Arduino.ORDER_ATOMIC); 334 Blockly.Arduino.setups_["setup_output" + dropdown_pin]="pinMode(" + dropdown_pin + ", OUTPUT);"; 335 var code="analogWrite(" + dropdown_pin + ", " + value_num + ");\n"; 336 return code 337}; 338Blockly.Arduino["inout_analog_read"]=function(block){ 339 var dropdown_pin=block.getFieldValue("broche"); 340 var code="analogRead(" + dropdown_pin + ")"; 341 return [code, Blockly.Arduino.ORDER_ATOMIC] 342}; 343Blockly.Arduino["inout_angle_maths"]=function(block){ 344 var angle=block.getFieldValue("ANGLE"); 345 return [angle, Blockly.Arduino.ORDER_ATOMIC] 346}; 347Blockly.Arduino["toggle"]=function(block){ 348 var dropdown_pin=Blockly.Arduino.valueToCode(block, "PIN", Blockly.Arduino.ORDER_ATOMIC); 349 Blockly.Arduino.definitions_["toggle"+dropdown_pin]="boolean etat_" + dropdown_pin + "=LOW;"; 350 Blockly.Arduino.setups_["setup_output_" + dropdown_pin]="pinMode(" + dropdown_pin + ", OUTPUT);"; 351 return "digitalWrite(" + dropdown_pin + ", etat_" + dropdown_pin + ");\netat_"+ dropdown_pin + "=!etat_"+ dropdown_pin + ";\n"; 352}; 353/* stockage */ 354Blockly.Arduino['eeprom_write'] = function(block) { 355 var adresse = Blockly.Arduino.valueToCode(block, 'adr', Blockly.Arduino.ORDER_ATOMIC); 356 var valeur = Blockly.Arduino.valueToCode(block, 'val', Blockly.Arduino.ORDER_ATOMIC); 357 Blockly.Arduino.includes_["eeprom"]='#include <EEPROM.h>'; 358 return 'EEPROM.write('+adresse+','+valeur+');\n'; 359}; 360Blockly.Arduino['eeprom_read'] = function(block) { 361 var adresse = Blockly.Arduino.valueToCode(block, 'adr', Blockly.Arduino.ORDER_ATOMIC); 362 Blockly.Arduino.includes_["eeprom"]='#include <EEPROM.h>'; 363return ['EEPROM.read('+adresse+')', Blockly.Arduino.ORDER_ATOMIC]; 364};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.