time.js 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. /**
  2. * @license Licensed under the Apache License, Version 2.0 (the "License"):
  3. * http://www.apache.org/licenses/LICENSE-2.0
  4. */
  5. /**
  6. * @fileoverview Arduino code generator for the Time blocks.
  7. * Arduino built-in function docs: http://arduino.cc/en/Reference/HomePage
  8. */
  9. 'use strict';
  10. goog.provide('Blockly.Python.time');
  11. goog.require('Blockly.Python');
  12. /**
  13. * Code generator for the delay Arduino block.
  14. * Arduino code: loop { delay(X); }
  15. * @param {!Blockly.Block} block Block to generate the code from.
  16. * @return {string} Completed code.
  17. */
  18. Blockly.Python['time_delay'] = function(block) {
  19. // var time_type = block.getFieldValue('type');
  20. Blockly.Python.includes_['import_time'] = 'import time';
  21. var delayTime = Blockly.Python.valueToCode(
  22. block, 'DELAY_TIME_MILI', Blockly.Python.ORDER_ATOMIC) || '0';
  23. var code = 'time.sleep_ms(' + delayTime + ')\n';
  24. return code;
  25. };
  26. /**
  27. * Code generator for the delayMicroseconds block.
  28. * Arduino code: loop { delayMicroseconds(X); }
  29. * @param {!Blockly.Block} block Block to generate the code from.
  30. * @return {string} Completed code.
  31. */
  32. Blockly.Python['time_delaymicros'] = function(block) {
  33. // var time_type = block.getFieldValue('type');
  34. Blockly.Python.includes_['import_time'] = 'import time';
  35. var delayTimeMs = Blockly.Python.valueToCode(
  36. block, 'DELAY_TIME_MICRO', Blockly.Python.ORDER_ATOMIC) || '0';
  37. var code = 'time.sleep(' + delayTimeMs + ')\n';
  38. return code;
  39. };
  40. /**
  41. * Code generator for the elapsed time in milliseconds block.
  42. * Arduino code: loop { millis() }
  43. * @param {!Blockly.Block} block Block to generate the code from.
  44. * @return {array} Completed code with order of operation.
  45. */
  46. Blockly.Python['time_millis'] = function(block) {
  47. // var time_type = block.getFieldValue('type');
  48. Blockly.Python.includes_['import_time'] = 'import time';
  49. // if (time_type == 'on_esp32') {
  50. // var code = 'time.ticks_ms()';
  51. //} else if (time_type == 'on_ai') {
  52. var code = 'time.ticks_ms()';
  53. //}
  54. return [code, Blockly.Python.ORDER_ATOMIC];
  55. };
  56. /**
  57. * Code generator for the elapsed time in microseconds block.
  58. * Arduino code: loop { micros() }
  59. * @param {!Blockly.Block} block Block to generate the code from.
  60. * @return {array} Completed code with order of operation.
  61. */
  62. Blockly.Python['time_micros'] = function(block) {
  63. // var time_type = block.getFieldValue('type');
  64. Blockly.Python.includes_['import_time'] = 'import time';
  65. // if (time_type == 'on_esp32') {
  66. // var code = 'time.time()';
  67. // } else if (time_type == 'on_ai') {
  68. var code = 'time.ticks_us()';
  69. // }
  70. return [code, Blockly.Python.ORDER_ATOMIC];
  71. };
  72. /**
  73. * Code generator for the wait forever (end of program) block
  74. * Arduino code: loop { while(true); }
  75. * @param {!Blockly.Block} block Block to generate the code from.
  76. * @return {string} Completed code.
  77. */
  78. Blockly.Python['infinite_loop'] = function(block) {
  79. return 'while(true)\n';
  80. };
  81. Blockly.Python['time_chrono_setup'] = function(block) {
  82. Blockly.Python.addInclude("chrono.h", "#include <Chrono.h>\n");
  83. Blockly.Python.addDeclaration("chrono_dec", "Chrono myChrono\n");
  84. }
  85. Blockly.Python['time_chrono_reset'] = function(block) {
  86. var code = "myChrono.restart()\n";
  87. return code;
  88. }
  89. Blockly.Python['time_chrono_elapsed'] = function(block) {
  90. var code = "myChrono.elapsed()";
  91. return [code, Blockly.Python.ORDER_ATOMIC];
  92. }
  93. Blockly.Python['time_chrono_timeCheck'] = function(block) {
  94. var time = Blockly.Python.valueToCode(this, "TIME", Blockly.Python.ORDER_ATOMIC);
  95. var code = "myChrono.hasPassed(" + time + ")";
  96. return [code, Blockly.Python.ORDER_ATOMIC];
  97. }
  98. Blockly.Python['time_everySecond'] = function(block) {
  99. // var time = Blockly.Python.valueToCode(this, "TIME", Blockly.Python.ORDER_ATOMIC);
  100. // Blockly.Python.addDeclaration("everySecondState_"+time ,"int everySecondState_"+time+" = 0;")
  101. // var stack_statements = Blockly.Python.statementToCode(block, "STACK", Blockly.Python.ORDER_ATOMIC)
  102. // if (time >= 2)
  103. // var code = "if ((millis() / 1000) % " + time + " == " + (time - 2) + " && everySecondState_"+time+" == 0) {\n"+
  104. // " "+stack_statements+"\n"+
  105. // " everySecondState_"+time+" = 1\n"+
  106. // "} else if ((millis() / 1000) % " + time + " == " + (time-1) +") {\n"+
  107. // " everySecondState_"+time+" = 0\n"+
  108. // "}\n"
  109. // else {
  110. // var code = "if ((millis() / 100) % 10 == 1 && everySecondState_"+time+" == 0) {\n"+
  111. // " "+stack_statements+"\n"+
  112. // " everySecondState_"+time+" = 1\n"+
  113. // "} else if ((millis() / 100) % 10 == 2 && everySecondState_"+time+" == 1) {\n"+
  114. // " everySecondState_"+time+" = 0\n"+
  115. // "}\n"
  116. // }
  117. code = "";
  118. return code;
  119. }
  120. Blockly.Python['time_everyMilliSecond'] = function(block) {
  121. // var time = Blockly.Python.valueToCode(this, "TIME", Blockly.Python.ORDER_ATOMIC);
  122. // Blockly.Python.addDeclaration("timePeriodExecutionState_" + time, "int timePeriodExecutionState_" + time + " = 0;")
  123. // var stack_statements = Blockly.Python.statementToCode(block, "STACK", Blockly.Python.ORDER_ATOMIC)
  124. // var code = "if ((millis()) % " + time + " == " + (time - 1) + " && timePeriodExecutionState_" + time + " == 0) {\n" +
  125. // " " + stack_statements + "\n" +
  126. // " timePeriodExecutionState_" + time + " = 1\n" +
  127. // "} else if ((millis()) % " + time + " == " + 0 + ") {\n" +
  128. // " timePeriodExecutionState_" + time + " = 0\n" +
  129. // "}\n"
  130. code = "";
  131. return code;
  132. }