PageSourceSearch

https://fontainejp.github.io/blocs&generateurs/arduino_generateurs_cpp.js

js fontainejp.github.io collected 2026-10-03 09:12:38 UTC 16,915 bytes, 364 lines download raw bytes

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.