Published © CC BY-NC-SA

2 Motors + Servo Project

The project utilizes two H-bridge controlled DC motors and a servo to create a rear wheel drive RC car.

BeginnerFull instructions provided1 hour117
2 Motors + Servo Project

Things used in this project

Hardware components

SG90 Micro-servo motor
SG90 Micro-servo motor
×1
DC Motor, Miniature
DC Motor, Miniature
×2
Dual H-Bridge motor drivers L293D
Texas Instruments Dual H-Bridge motor drivers L293D
×1
Jumper wires (generic)
Jumper wires (generic)
×20
Quantum Starter Bundle
Quantum Integration Quantum Starter Bundle
×1
Quantum Component Kit
Quantum Integration Quantum Component Kit
×1

Software apps and online services

Quantum Integration Platform
Quantum Integration Platform

Hand tools and fabrication machines

Multitool, Screwdriver
Multitool, Screwdriver

Story

Read more

Schematics

2_9uJ9mS2mpB.png

4_tsf6Peap41.png

6_x8QWV7t5WP.png

7_684a08FV5B.png

steered_chassis_CHwhToRSpT.fzz

Code

Steering Car App.json

JSON
{"id":"3","name":"Steering Car","identifier":"Steering Car","offsetX":229.38548159491089,"offsetY":-113.89988370784467,"zoom":54.037851969401075,"gridSize":0,"links":[{"id":"1","internalFlowId":"199","type":"default","selected":false,"points":[{"id":"6269a4cf-ad7b-4158-acd5-ba09c8fdbed7","selected":false,"x":797.1094235936002,"y":691.640611547478},{"id":"bbd6c0ec-a70c-4f10-9175-13819b77ff5c","selected":false,"x":937.6972780224784,"y":691.3032967711705},{"id":"eded2519-8791-4c6e-ae09-08ba637f37fd","selected":false,"x":938.1818713315802,"y":735.6308974411282},{"id":"adb1020a-a40d-4664-bc17-b7e9b834b3fe","selected":false,"x":1023.0000236035233,"y":736.4687701706641}],"labels":[],"width":3,"color":"rgba(255,255,255,0.5)","curvyness":50,"source":"7","target":"6","sourcePort":"68","targetPort":"59"},{"id":"2","internalFlowId":"200","type":"default","selected":false,"points":[{"id":"81e9047e-3dc6-414c-a6f6-5ecdb55de753","selected":false,"x":367.07811622457734,"y":692.8593998892043},{"id":"f83fd3b7-e16e-40aa-a513-9cf582bc2610","selected":false,"x":558.320564129788,"y":691.1557822446721},{"id":"c1c5c744-a13e-4f2e-9f29-8bd89f0d804a","selected":false,"x":633.1094064422341,"y":691.640611547478}],"labels":[],"width":3,"color":"rgba(255,255,255,0.5)","curvyness":50,"source":"5","target":"7","sourcePort":"55","targetPort":"62"},{"id":"3","internalFlowId":"201","type":"default","selected":false,"points":[{"id":"22b5c241-1620-4047-81cc-bd2cb08a77e7","selected":false,"x":-24.250030453907158,"y":917.9062751859074},{"id":"c4a76e8f-6eb4-4300-9242-428183dec04f","selected":false,"x":115.59375735183882,"y":918.5781187066419}],"labels":[],"width":3,"color":"rgba(255,255,255,0.5)","curvyness":50,"source":"8","target":"11","sourcePort":"71","targetPort":"78"},{"id":"4","internalFlowId":"202","type":"default","selected":false,"points":[{"id":"0976e9b6-258e-4d83-a481-22e54e47728a","selected":false,"x":-30.703109522318442,"y":1085.5781548470206},{"id":"00123478-d5c9-492f-b9e6-c6145a801967","selected":false,"x":115.59375735183882,"y":1085.1094325074275}],"labels":[],"width":3,"color":"rgba(255,255,255,0.5)","curvyness":50,"source":"9","target":"12","sourcePort":"74","targetPort":"81"},{"id":"5","internalFlowId":"203","type":"default","selected":false,"points":[{"id":"53813929-cc09-465a-808e-f3d63dd115a7","selected":false,"x":-31.781256660214808,"y":1243.5312127824986},{"id":"ad22a82a-3ce9-47a8-997f-c2f437b65ba5","selected":false,"x":113.99990538160624,"y":1243.6250552582248}],"labels":[],"width":3,"color":"rgba(255,255,255,0.5)","curvyness":50,"source":"10","target":"13","sourcePort":"77","targetPort":"84"},{"id":"6","internalFlowId":"204","type":"default","selected":false,"points":[{"id":"fa466bca-111e-46af-b52c-d5b39b12cf57","selected":false,"x":-41.422,"y":440.766},{"id":"76a4e506-6a07-417d-b724-919871d6804f","selected":false,"x":142.641,"y":439.687}],"labels":[],"width":3,"color":"rgba(255,255,255,0.5)","curvyness":50,"source":"15","target":"14","sourcePort":"94","targetPort":"87"},{"id":"7","internalFlowId":"205","type":"default","selected":false,"points":[{"id":"4623b7ba-f448-40a9-bfb2-86d217977b27","selected":false,"x":752.3749849363809,"y":244.73438112989766},{"id":"0719d91f-13fe-4fcf-a4db-6718ed6d06a7","selected":false,"x":913.1368575519748,"y":245.05054013826256},{"id":"29855ac2-7295-4544-854f-8163198d4f7b","selected":false,"x":913.1368575519748,"y":175.3839350539095},{"id":"94e4a993-9c62-4115-b139-3cbb2f07dc09","selected":false,"x":1013.5469255460993,"y":175.87501437059325}],"labels":[],"width":3,"color":"rgba(255,255,255,0.5)","curvyness":50,"source":"3","target":"2","sourcePort":"51","targetPort":"44"},{"id":"8","internalFlowId":"206","type":"default","selected":false,"points":[{"id":"7e168f82-592e-4d1d-bdb7-5e0dcaea6b6c","selected":false,"x":752.3749849363809,"y":244.73438112989766},{"id":"596c61ea-8993-407b-a928-5762d86be030","selected":false,"x":913.1368575519748,"y":245.05054013826256},{"id":"2f074fca-25b2-44ca-a237-d71037713be8","selected":false,"x":913.1368575519748,"y":408.40671757743524},{"id":"bd5f1675-4d8d-4e3b-94dc-cf6ccada65be","selected":false,"x":1015.0000138027427,"y":406.48438403950433}],"labels":[],"width":3,"color":"rgba(255,255,255,0.5)","curvyness":50,"source":"3","target":"1","sourcePort":"51","targetPort":"39"},{"id":"9","internalFlowId":"207","type":"default","selected":false,"points":[{"id":"ca621f44-7563-4e0c-9ffa-7d9e457c77e1","selected":false,"x":307.4218663585724,"y":245.64064707530852},{"id":"77ac8025-ea50-4445-9e8d-2ca7fd124b02","selected":true,"x":588.3749677850147,"y":244.73438112989766}],"labels":[],"width":3,"color":"rgba(255,255,255,0.5)","curvyness":50,"source":"4","target":"3","sourcePort":"53","targetPort":"45"},{"id":"10","internalFlowId":"208","type":"default","selected":false,"points":[{"id":"0a15048e-599b-4421-8795-27b667fa90cd","selected":false,"x":309.9687217474399,"y":439.68746908026634},{"id":"e2ed6c8e-8f23-4757-878d-e9985e70e661","selected":false,"x":519.3437664196621,"y":440.69507986818485},{"id":"9d95ac51-1844-48a2-b0f5-50d807923a2d","selected":false,"x":521.2483537697256,"y":245.15866449696722},{"id":"d80978aa-eea8-47a4-ab43-1202abdd8ade","selected":true,"x":588.3749677850147,"y":244.73438112989766}],"labels":[],"width":3,"color":"rgba(255,255,255,0.5)","curvyness":50,"source":"14","target":"3","sourcePort":"90","targetPort":"45"},{"id":"11","internalFlowId":"209","type":"default","selected":false,"points":[{"id":"431dde42-73b8-4103-96a9-75add1d01208","selected":false,"x":279.5936519934456,"y":918.5781187066419},{"id":"1b682da6-4f01-4fe1-b95d-e5b028d8552d","selected":false,"x":946.8388730408668,"y":916.8680714362511},{"id":"38483c47-94d4-4462-860a-091e72ec549c","selected":false,"x":942.8244732437429,"y":736.2200805656786},{"id":"a27f9406-c8e9-423f-893b-36dd535a3630","selected":true,"x":1023.0000236035233,"y":736.4687701706641}],"labels":[],"width":3,"color":"rgba(255,255,255,0.5)","curvyness":50,"source":"11","target":"6","sourcePort":"80","targetPort":"59"},{"id":"12","internalFlowId":"210","type":"default","selected":false,"points":[{"id":"8931b264-bcab-450e-9956-04bba99da365","selected":false,"x":279.5936519934456,"y":1085.1094325074275},{"id":"45b96fd1-6fe2-40da-8262-a5e47bea1588","selected":false,"x":946.8388730408667,"y":1087.4800628140142},{"id":"36dfcd87-ecee-461e-8ab4-364bc4d02221","selected":false,"x":940.8172733451811,"y":738.2272804642405},{"id":"7802a3da-b9c3-4f61-a11c-393eaeb7a0bb","selected":true,"x":1023.0000236035233,"y":736.4687701706641}],"labels":[],"width":3,"color":"rgba(255,255,255,0.5)","curvyness":50,"source":"12","target":"6","sourcePort":"83","targetPort":"59"},{"id":"13","internalFlowId":"211","type":"default","selected":false,"points":[{"id":"07cbf274-3fc4-4b9e-9cda-9e7e736ab13d","selected":false,"x":278.00004504273187,"y":1243.6250552582248},{"id":"3fb42b84-3358-4236-83a9-9764d9a2e455","selected":false,"x":948.8460729394286,"y":1246.0488548004057},{"id":"f1d29a06-8cee-4a9d-872d-a3b4962fca41","selected":false,"x":942.8244732437429,"y":736.2200805656786},{"id":"cdfecc81-0912-45ce-959c-7a9b7c52630a","selected":true,"x":1023.0000236035233,"y":736.4687701706641}],"labels":[],"width":3,"color":"rgba(255,255,255,0.5)","curvyness":50,"source":"13","target":"6","sourcePort":"86","targetPort":"59"}],"nodes":[{"id":"1","internalFlowId":"91","type":"quantum","selected":false,"x":997.003,"y":293.99,"name":"Motor BR","mappingDescription":"No instructions defined!","description":"The DC Motor control is just a bi-directional motor. States are open, close and off, with speed control.","color":"#02B0EF","qType":"Widget","originalName":"Motor","factoryId":"widget_motor","properties":{"executableWidgetCode":"let out = '0';\n\nif(inPorts[1].value && !inPorts[2].value){\n  out = '1';\n}else if(!inPorts[1].value && inPorts[2].value){\n  out = '-1';\n}else if(inPorts[1].value && inPorts[2].value){\n  if(trigger === 1){\n    out = '1';\n  }else{\n    out = '-1';\n  }\n}\n\nfunction joyOut(value) {\n  const ret = (value - 0) * (255 - (-255)) / (4095 - 0) + (-255);\n\n  if (value === 2048) {\n    return 0;\n  } if (value < 2048) {\n    return Math.ceil(ret);\n  }\n  return Math.floor(ret);\n}\nswitch(trigger){\n  case 0: {\n    return [inPorts[0].value];\n  }; break;\n    case 1: {\n  return [out * (inPorts[3].value || 0)];  \n  }; break;\n    case 2: {\n    return [out * (inPorts[3].value || 0)];\n  }; break;\n    case 3: {\n    return [inPorts[3].value * (out || 0)];\n  }; break;\n    case 4: {\n    return [joyOut(inPorts[4].value)];\n  }; break;\n  default: break;\n}","mappableCategory":{"category":4,"subCategory":3},"multiWidget":false,"manufacturer":"generic"},"ports":[{"id":"35","internalFlowId":"425","type":"quantum","selected":false,"name":"63c1d1c6-97b9-43b1-80fd-689043da4fbc","in":true,"label":"Motor","description":"Nothing added here yet.","qTrigger":true,"defaultValue":"","properties":{"hidden":true,"clientService":{"key":"q_dc_motor","name":"DC Motor","uuid":"fa008e38-f01d-5100-992d-45364f79a961","value_len":"2","props":["write"],"propChar":[],"signalType":{"key":"motor","name":"Motor","baseType":{"name":"Number"},"range":{"min":-255,"max":255},"internal":true},"drivers":["custom_pca9865_motor","custom_pca9865_motor_speed_dir","custom_tlc5940_motor","custom_tri_state_motor","custom_tri_state_motor_speed_dir"]}},"signalType":{"key":"motor","name":"Motor","baseType":{"name":"Number"},"range":{"min":-255,"max":255},"internal":true},"index":0,"clients":[],"NodeId":1},{"id":"36","internalFlowId":"426","type":"quantum","selected":false,"name":"cdc3e808-5b45-44bd-9608-70587e2ed315","in":true,"label":"Clockwise","description":"Nothing added here yet.","qTrigger":true,"defaultValue":"","properties":{"virtual":true},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"index":1,"clients":[],"NodeId":1},{"id":"37","internalFlowId":"427","type":"quantum","selected":false,"name":"e439fd7f-bc69-498a-bc18-fef9233f6a9f","in":true,"label":"Counter Clockwise","description":"Nothing added here yet.","qTrigger":true,"defaultValue":"","properties":{"virtual":true},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"index":2,"clients":[],"NodeId":1},{"id":"38","internalFlowId":"428","type":"quantum","selected":false,"name":"7446ef76-cbc3-4465-b263-95188963afe4","in":true,"label":"Speed","description":"Nothing added here yet.","qTrigger":true,"defaultValue":"","properties":{"virtual":true},"signalType":{"key":"pwm","name":"PWM","baseType":{"name":"Number"},"range":{"min":0,"max":255}},"index":3,"clients":[],"NodeId":1},{"id":"39","internalFlowId":"429","type":"quantum","selected":false,"name":"c8402f27-dc16-4e2c-a1db-273e0524ce6e","in":true,"label":"Joystick Axle","description":"Nothing added here yet.","qTrigger":true,"defaultValue":null,"properties":{"virtual":true},"signalType":{"key":"analog","name":"Analog","baseType":{"name":"Number"},"range":{"min":0,"max":4095}},"index":4,"clients":[],"NodeId":1}],"category":"Actuators","version":"0.0.1"},{"id":"2","internalFlowId":"92","type":"quantum","selected":false,"x":995.551,"y":63.382,"name":"Motor BL","mappingDescription":"No instructions defined!","description":"The DC Motor control is just a bi-directional motor. States are open, close and off, with speed control.","color":"#02B0EF","qType":"Widget","originalName":"Motor","factoryId":"widget_motor","properties":{"executableWidgetCode":"let out = '0';\n\nif(inPorts[1].value && !inPorts[2].value){\n  out = '1';\n}else if(!inPorts[1].value && inPorts[2].value){\n  out = '-1';\n}else if(inPorts[1].value && inPorts[2].value){\n  if(trigger === 1){\n    out = '1';\n  }else{\n    out = '-1';\n  }\n}\n\nfunction joyOut(value) {\n  const ret = (value - 0) * (255 - (-255)) / (4095 - 0) + (-255);\n\n  if (value === 2048) {\n    return 0;\n  } if (value < 2048) {\n    return Math.ceil(ret);\n  }\n  return Math.floor(ret);\n}\nswitch(trigger){\n  case 0: {\n    return [inPorts[0].value];\n  }; break;\n    case 1: {\n  return [out * (inPorts[3].value || 0)];  \n  }; break;\n    case 2: {\n    return [out * (inPorts[3].value || 0)];\n  }; break;\n    case 3: {\n    return [inPorts[3].value * (out || 0)];\n  }; break;\n    case 4: {\n    return [joyOut(inPorts[4].value)];\n  }; break;\n  default: break;\n}","mappableCategory":{"category":4,"subCategory":3},"multiWidget":false,"manufacturer":"generic"},"ports":[{"id":"40","internalFlowId":"430","type":"quantum","selected":false,"name":"42836637-e15a-49f7-a6cc-eab63dd42178","in":true,"label":"Motor","description":"Nothing added here yet.","qTrigger":true,"defaultValue":"","properties":{"hidden":true,"clientService":{"key":"q_dc_motor","name":"DC Motor","uuid":"fa008e38-f01d-5100-992d-45364f79a961","value_len":"2","props":["write"],"propChar":[],"signalType":{"key":"motor","name":"Motor","baseType":{"name":"Number"},"range":{"min":-255,"max":255},"internal":true},"drivers":["custom_pca9865_motor","custom_pca9865_motor_speed_dir","custom_tlc5940_motor","custom_tri_state_motor","custom_tri_state_motor_speed_dir"]}},"signalType":{"key":"motor","name":"Motor","baseType":{"name":"Number"},"range":{"min":-255,"max":255},"internal":true},"index":0,"clients":[],"NodeId":2},{"id":"41","internalFlowId":"431","type":"quantum","selected":false,"name":"50f1d95e-917c-44c3-ad58-794d00b9604a","in":true,"label":"Clockwise","description":"Nothing added here yet.","qTrigger":true,"defaultValue":"","properties":{"virtual":true},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"index":1,"clients":[],"NodeId":2},{"id":"42","internalFlowId":"432","type":"quantum","selected":false,"name":"c21abcc8-1380-4da9-993d-93918d0f92a2","in":true,"label":"Counter Clockwise","description":"Nothing added here yet.","qTrigger":true,"defaultValue":"","properties":{"virtual":true},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"index":2,"clients":[],"NodeId":2},{"id":"43","internalFlowId":"433","type":"quantum","selected":false,"name":"6bdc3b69-9895-414e-8bca-c9c6f928640c","in":true,"label":"Speed","description":"Nothing added here yet.","qTrigger":true,"defaultValue":"","properties":{"virtual":true},"signalType":{"key":"pwm","name":"PWM","baseType":{"name":"Number"},"range":{"min":0,"max":255}},"index":3,"clients":[],"NodeId":2},{"id":"44","internalFlowId":"434","type":"quantum","selected":false,"name":"8853d475-b26f-4149-82f5-65c4ac614840","in":true,"label":"Joystick Axle","description":"Nothing added here yet.","qTrigger":true,"defaultValue":null,"properties":{"virtual":true},"signalType":{"key":"analog","name":"Analog","baseType":{"name":"Number"},"range":{"min":0,"max":4095}},"index":4,"clients":[],"NodeId":2}],"category":"Actuators","version":"0.0.1"},{"id":"3","internalFlowId":"93","type":"quantum","selected":false,"x":570.38,"y":198.238,"name":"Manual Ranging","mappingDescription":null,"description":"Set custom Ranges to a numeric value.","color":"#DE00BC","qType":"Snippet","originalName":"Manual Ranging","factoryId":"snippet_manual_ranging","properties":{"executeCode":"const value_between = (value, min, max) => {\n    if(min > max){\n        return value <= min && value >= max;\n    }else if(max > min){\n        return value >= min && value <= max;\n    }else{\n        return true;\n    }\n}\n\n\nconst value  = inPorts[0].value ? parseFloat(inPorts[0].value) : 0;\nconst newMin = inPorts[3].value ? parseFloat(inPorts[3].value) : 0;\nconst newMax = inPorts[4].value ? parseFloat(inPorts[4].value) : 0;\nconst oldMin = inPorts[1].value ? parseFloat(inPorts[1].value) : 0;\nconst oldMax = inPorts[2].value ? parseFloat(inPorts[2].value) : 0;\n\nif(value_between(value, oldMin, oldMax)){\n  \n    const retValue = ((value - oldMin) * (newMax - newMin) / (oldMax - oldMin) + newMin);\n  \n  if(inPorts[5].value)\n    return [Math.round(retValue)];\n  else{\n    return [retValue];\n  } \n}"},"ports":[{"id":"45","internalFlowId":"435","type":"quantum","selected":false,"name":"fd1aac42-6f07-4e63-952d-8d27fa2bf1a4","in":true,"label":"Value","description":null,"qTrigger":true,"defaultValue":"","properties":{},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":0,"clients":[],"NodeId":3},{"id":"46","internalFlowId":"436","type":"quantum","selected":false,"name":"ef6557b3-d3db-46d7-a90f-3898d2f529e1","in":true,"label":"In Min","description":null,"qTrigger":false,"defaultValue":"0","properties":{},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":1,"clients":[],"NodeId":3},{"id":"47","internalFlowId":"437","type":"quantum","selected":false,"name":"585a1271-ddd2-4063-9579-a850e1d1cb00","in":true,"label":"In Max","description":null,"qTrigger":false,"defaultValue":"4095","properties":{},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":2,"clients":[],"NodeId":3},{"id":"48","internalFlowId":"438","type":"quantum","selected":false,"name":"341b40a1-8db7-4559-821e-8542c8df86e7","in":true,"label":"Out Min","description":null,"qTrigger":false,"defaultValue":"4095","properties":{},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":3,"clients":[],"NodeId":3},{"id":"49","internalFlowId":"439","type":"quantum","selected":false,"name":"4199dd39-83f1-468f-b342-aee57bd4812e","in":true,"label":"Out Max","description":null,"qTrigger":false,"defaultValue":"0","properties":{},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":4,"clients":[],"NodeId":3},{"id":"50","internalFlowId":"440","type":"quantum","selected":false,"name":"143543bc-7294-4cf9-9501-4d36e654fc54","in":true,"label":"Rounded","description":null,"qTrigger":false,"defaultValue":"0","properties":{},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"index":5,"clients":[],"NodeId":3},{"id":"51","internalFlowId":"441","type":"quantum","selected":false,"name":"cdc9dfb6-7099-42d1-af41-093612487102","in":false,"label":"Value","description":null,"qTrigger":null,"defaultValue":null,"properties":{},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":6,"clients":[],"NodeId":3}],"category":"Compare","version":"0.0.1"},{"id":"4","internalFlowId":"94","type":"quantum","selected":false,"x":125.427,"y":177.146,"name":"Left","mappingDescription":"No instructions defined!","description":"Joystick controller with optional button","color":"#02B0EF","qType":"Widget","originalName":"Joystick","factoryId":"widget_joystick","properties":{"mappableCategory":{"category":7,"subCategory":2},"multiWidget":false,"manufacturer":"generic"},"ports":[{"id":"52","internalFlowId":"442","type":"quantum","selected":false,"name":"cb57ea22-e82b-4358-a8fb-87d4d585a4f2","in":false,"label":"X-axis","description":"Nothing added here yet.","qTrigger":null,"defaultValue":null,"properties":{"clientService":{"key":"q_analog_in","name":"Analog In","uuid":"b71c0915-8c3a-5100-8db8-7c5040729981","value_len":"4","props":["read","notify"],"propChar":[{"key":"resolution","title":"Resolution","len":2},{"key":"range","title":"Range","len":4}],"signalType":{"key":"analog","name":"Analog","baseType":{"name":"Number"},"range":{"min":0,"max":4095}},"drivers":["custom_Q10k_pot_anl","custom_ADS1015"]}},"signalType":{"key":"analog","name":"Analog","baseType":{"name":"Number"},"range":{"min":0,"max":4095}},"index":0,"clients":[],"NodeId":4},{"id":"53","internalFlowId":"443","type":"quantum","selected":false,"name":"2f9ac4ec-7c4c-46c8-83c9-9d0f37055533","in":false,"label":"Y-axis","description":"Nothing added here yet.","qTrigger":null,"defaultValue":null,"properties":{"clientService":{"key":"q_analog_in","name":"Analog In","uuid":"b71c0915-8c3a-5100-8db8-7c5040729981","value_len":"4","props":["read","notify"],"propChar":[{"key":"resolution","title":"Resolution","len":2},{"key":"range","title":"Range","len":4}],"signalType":{"key":"analog","name":"Analog","baseType":{"name":"Number"},"range":{"min":0,"max":4095}},"drivers":["custom_Q10k_pot_anl","custom_ADS1015"]}},"signalType":{"key":"analog","name":"Analog","baseType":{"name":"Number"},"range":{"min":0,"max":4095}},"index":1,"clients":[],"NodeId":4},{"id":"54","internalFlowId":"444","type":"quantum","selected":false,"name":"5cc8bd5f-c6dc-4e35-851d-98495410d0eb","in":false,"label":"Button","description":"Nothing added here yet.","qTrigger":null,"defaultValue":null,"properties":{"clientService":{"key":"q_digital_in","name":"Digital In","uuid":"4ae77ff2-1d7c-5100-96d0-50b42a0fc08a","value_len":"1","props":["read","notify"],"propChar":[],"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"drivers":["custom_gpio_in","custom_Q4x3keypad","custom_mcp23017_in","custom_HC_SR501","custom_osepp_prox_01","custom_pull_down_input_le","custom_floating_input_le","custom_pull_up_input_le"]}},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"index":2,"clients":[],"NodeId":4}],"category":"Input Control","version":"0.0.1"},{"id":"5","internalFlowId":"95","type":"quantum","selected":false,"x":185.09,"y":646.365,"name":"Right","mappingDescription":"No instructions defined!","description":"Joystick controller with optional button","color":"#02B0EF","qType":"Widget","originalName":"Joystick","factoryId":"widget_joystick","properties":{"mappableCategory":{"category":7,"subCategory":2},"multiWidget":false,"manufacturer":"generic"},"ports":[{"id":"55","internalFlowId":"445","type":"quantum","selected":false,"name":"942a1395-7eb9-44d4-bdcf-525074cb3a6d","in":false,"label":"X-axis","description":"Nothing added here yet.","qTrigger":null,"defaultValue":null,"properties":{"clientService":{"key":"q_analog_in","name":"Analog In","uuid":"b71c0915-8c3a-5100-8db8-7c5040729981","value_len":"4","props":["read","notify"],"propChar":[{"key":"resolution","title":"Resolution","len":2},{"key":"range","title":"Range","len":4}],"signalType":{"key":"analog","name":"Analog","baseType":{"name":"Number"},"range":{"min":0,"max":4095}},"drivers":["custom_Q10k_pot_anl","custom_ADS1015"]}},"signalType":{"key":"analog","name":"Analog","baseType":{"name":"Number"},"range":{"min":0,"max":4095}},"index":0,"clients":[],"NodeId":5},{"id":"56","internalFlowId":"446","type":"quantum","selected":false,"name":"33b658a8-0c01-4faf-871e-aa41f9d86e05","in":false,"label":"Y-axis","description":"Nothing added here yet.","qTrigger":null,"defaultValue":null,"properties":{"clientService":{"key":"q_analog_in","name":"Analog In","uuid":"b71c0915-8c3a-5100-8db8-7c5040729981","value_len":"4","props":["read","notify"],"propChar":[{"key":"resolution","title":"Resolution","len":2},{"key":"range","title":"Range","len":4}],"signalType":{"key":"analog","name":"Analog","baseType":{"name":"Number"},"range":{"min":0,"max":4095}},"drivers":["custom_Q10k_pot_anl","custom_ADS1015"]}},"signalType":{"key":"analog","name":"Analog","baseType":{"name":"Number"},"range":{"min":0,"max":4095}},"index":1,"clients":[],"NodeId":5},{"id":"57","internalFlowId":"447","type":"quantum","selected":false,"name":"3e16e5b7-6dfe-47f1-8863-1855bb2a6404","in":false,"label":"Button","description":"Nothing added here yet.","qTrigger":null,"defaultValue":null,"properties":{"clientService":{"key":"q_digital_in","name":"Digital In","uuid":"4ae77ff2-1d7c-5100-96d0-50b42a0fc08a","value_len":"1","props":["read","notify"],"propChar":[],"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"drivers":["custom_gpio_in","custom_Q4x3keypad","custom_mcp23017_in","custom_HC_SR501","custom_osepp_prox_01","custom_pull_down_input_le","custom_floating_input_le","custom_pull_up_input_le"]}},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"index":2,"clients":[],"NodeId":5}],"category":"Input Control","version":"0.0.1"},{"id":"6","internalFlowId":"96","type":"quantum","selected":false,"x":1005.004,"y":689.97,"name":"Servo","mappingDescription":"No instructions defined!","description":"The Servo can adjust to any position between 0 and 180 degrees","color":"#02B0EF","qType":"Widget","originalName":"Servo","factoryId":"widget_servo","properties":{"executableWidgetCode":"if(trigger === 0){\n  return [inPorts[0].value]\n}else if(trigger === 1){\n  return [{degrees: inPorts[1].value, bot_offset: inPorts[2].value || 0, top_offset: inPorts[3].value || 0}]\n}","mappableCategory":{"category":4,"subCategory":4},"multiWidget":false,"manufacturer":"generic"},"ports":[{"id":"58","internalFlowId":"448","type":"quantum","selected":false,"name":"17d27b7f-6bc5-4804-bdae-a2afee623e04","in":true,"label":"Servo","description":"Nothing added here yet.","qTrigger":true,"defaultValue":null,"properties":{"hidden":true,"clientService":{"key":"q_servo","name":"Servo Motor","uuid":"3248ed17-eb11-5100-90b3-a95cd4c64686","value_len":"1","props":["write"],"propChar":[],"signalType":{"key":"servo","name":"Servo","baseType":{"name":"JSON"},"internal":true},"drivers":["custom_generic_servo","custom_pca9865_servo","custom_tlc5940_servo"]}},"signalType":{"key":"servo","name":"Servo","baseType":{"name":"JSON"},"internal":true},"index":0,"clients":[],"NodeId":6},{"id":"59","internalFlowId":"449","type":"quantum","selected":false,"name":"33b5a667-acdf-483b-ac84-ae150680f5d4","in":true,"label":"Degrees","description":"Nothing added here yet.","qTrigger":true,"defaultValue":null,"properties":{"virtual":true},"signalType":{"key":"scaled_number","name":"Scaled Number","baseType":{"name":"Number"},"range":{"min":0,"max":180}},"index":1,"clients":[],"NodeId":6},{"id":"60","internalFlowId":"450","type":"quantum","selected":false,"name":"d18cfc13-29c8-47d8-a557-9e84cbc14df3","in":true,"label":"0 Offsets","description":"Nothing added here yet.","qTrigger":true,"defaultValue":null,"properties":{"virtual":true},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":2,"clients":[],"NodeId":6},{"id":"61","internalFlowId":"451","type":"quantum","selected":false,"name":"41acaff7-c984-41f2-b902-ed1d3bc18f6d","in":true,"label":"180 Offsets","description":"Nothing added here yet.","qTrigger":true,"defaultValue":null,"properties":{"virtual":true},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":3,"clients":[],"NodeId":6}],"category":"Actuators","version":"0.0.1"},{"id":"7","internalFlowId":"97","type":"quantum","selected":false,"x":615.114,"y":645.147,"name":"Manual Ranging","mappingDescription":null,"description":"Set custom Ranges to a numeric value.","color":"#DE00BC","qType":"Snippet","originalName":"Manual Ranging","factoryId":"snippet_manual_ranging","properties":{"executeCode":"const value_between = (value, min, max) => {\n    if(min > max){\n        return value <= min && value >= max;\n    }else if(max > min){\n        return value >= min && value <= max;\n    }else{\n        return true;\n    }\n}\n\n\nconst value  = inPorts[0].value ? parseFloat(inPorts[0].value) : 0;\nconst newMin = inPorts[3].value ? parseFloat(inPorts[3].value) : 0;\nconst newMax = inPorts[4].value ? parseFloat(inPorts[4].value) : 0;\nconst oldMin = inPorts[1].value ? parseFloat(inPorts[1].value) : 0;\nconst oldMax = inPorts[2].value ? parseFloat(inPorts[2].value) : 0;\n\nif(value_between(value, oldMin, oldMax)){\n  \n    const retValue = ((value - oldMin) * (newMax - newMin) / (oldMax - oldMin) + newMin);\n  \n  if(inPorts[5].value)\n    return [Math.round(retValue)];\n  else{\n    return [retValue];\n  } \n}"},"ports":[{"id":"62","internalFlowId":"452","type":"quantum","selected":false,"name":"17c6fca9-2485-4b8d-976e-64d3ae544462","in":true,"label":"Value","description":null,"qTrigger":true,"defaultValue":"","properties":{},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":0,"clients":[],"NodeId":7},{"id":"63","internalFlowId":"453","type":"quantum","selected":false,"name":"524f25a3-f688-415b-92e1-1e22959ec122","in":true,"label":"In Min","description":null,"qTrigger":false,"defaultValue":"0","properties":{},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":1,"clients":[],"NodeId":7},{"id":"64","internalFlowId":"454","type":"quantum","selected":false,"name":"7ae11d9a-ebe2-43cd-81aa-852a43a4f164","in":true,"label":"In Max","description":null,"qTrigger":false,"defaultValue":"4095","properties":{},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":2,"clients":[],"NodeId":7},{"id":"65","internalFlowId":"455","type":"quantum","selected":false,"name":"af9a84b2-138e-453c-93ad-b23b25210950","in":true,"label":"Out Min","description":null,"qTrigger":false,"defaultValue":"180","properties":{},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":3,"clients":[],"NodeId":7},{"id":"66","internalFlowId":"456","type":"quantum","selected":false,"name":"646f7619-05db-4a79-bb80-d9b9cf6a0af8","in":true,"label":"Out Max","description":null,"qTrigger":false,"defaultValue":"0","properties":{},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":4,"clients":[],"NodeId":7},{"id":"67","internalFlowId":"457","type":"quantum","selected":false,"name":"6dd41a73-7606-4919-8c3a-fbbcb987a45a","in":true,"label":"Rounded","description":null,"qTrigger":false,"defaultValue":"0","properties":{},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"index":5,"clients":[],"NodeId":7},{"id":"68","internalFlowId":"458","type":"quantum","selected":false,"name":"10e972b1-d8d0-40a0-aef8-04e926a816e8","in":false,"label":"Value","description":null,"qTrigger":null,"defaultValue":null,"properties":{},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":6,"clients":[],"NodeId":7}],"category":"Compare","version":"0.0.1"},{"id":"8","internalFlowId":"98","type":"quantum","selected":false,"x":-206.257,"y":871.421,"name":"Straight","mappingDescription":null,"description":"Adds a Button that can be clicked on the Interface. Outputs are True and False.","color":"#07D174","qType":"Gadget","originalName":"Button","factoryId":"gadget_button","properties":{"gadgetType":{"name":"Button"},"gadgetLabel":"Straight","gadgetColor":"info","gadgetGroup":"1","gadgetIcon":"buttonIcon","gadgetStyle":"full"},"ports":[{"id":"69","internalFlowId":"459","type":"quantum","selected":false,"name":"af2d2ae8-2554-47b5-9c47-4d1968d892cd","in":true,"label":"Label","description":null,"qTrigger":false,"defaultValue":null,"properties":{},"signalType":{"key":"string","name":"String","baseType":{"name":"String"}},"index":0,"clients":[],"NodeId":8},{"id":"70","internalFlowId":"460","type":"quantum","selected":false,"name":"15b64081-3158-4939-8e59-1c5844ab1b66","in":true,"label":"State","description":null,"qTrigger":true,"defaultValue":null,"properties":{},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"index":1,"clients":[],"NodeId":8},{"id":"71","internalFlowId":"461","type":"quantum","selected":false,"name":"b121bc1a-7c38-45bc-ba94-214ca7eb264f","in":false,"label":"State","description":null,"qTrigger":null,"defaultValue":null,"properties":{},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"index":2,"clients":[],"NodeId":8}],"category":"Action","version":"0.0.1"},{"id":"9","internalFlowId":"99","type":"quantum","selected":false,"x":-212.711,"y":1039.081,"name":"Right","mappingDescription":null,"description":"Adds a Button that can be clicked on the Interface. Outputs are True and False.","color":"#07D174","qType":"Gadget","originalName":"Button","factoryId":"gadget_button","properties":{"gadgetType":{"name":"Button"},"gadgetLabel":"Right","gadgetColor":"info","gadgetGroup":"12","gadgetIcon":"buttonIcon","gadgetStyle":"full"},"ports":[{"id":"72","internalFlowId":"462","type":"quantum","selected":false,"name":"dbebf689-54ae-46c3-b71c-4d387927ca1c","in":true,"label":"Label","description":null,"qTrigger":false,"defaultValue":null,"properties":{},"signalType":{"key":"string","name":"String","baseType":{"name":"String"}},"index":0,"clients":[],"NodeId":9},{"id":"73","internalFlowId":"463","type":"quantum","selected":false,"name":"bbb5d43e-68df-4b8f-82cb-c3258179d3e2","in":true,"label":"State","description":null,"qTrigger":true,"defaultValue":null,"properties":{},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"index":1,"clients":[],"NodeId":9},{"id":"74","internalFlowId":"464","type":"quantum","selected":false,"name":"3e3f8128-4058-4e2b-b3d0-f697a40dc9d5","in":false,"label":"State","description":null,"qTrigger":null,"defaultValue":null,"properties":{},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"index":2,"clients":[],"NodeId":9}],"category":"Action","version":"0.0.1"},{"id":"10","internalFlowId":"100","type":"quantum","selected":false,"x":-213.795,"y":1197.036,"name":"Left","mappingDescription":null,"description":"Adds a Button that can be clicked on the Interface. Outputs are True and False.","color":"#07D174","qType":"Gadget","originalName":"Button","factoryId":"gadget_button","properties":{"gadgetType":{"name":"Button"},"gadgetLabel":"Left","gadgetColor":"info","gadgetGroup":"12","gadgetIcon":"buttonIcon","gadgetStyle":"full"},"ports":[{"id":"75","internalFlowId":"465","type":"quantum","selected":false,"name":"ec822372-ef07-4dc5-917a-08ab8235eada","in":true,"label":"Label","description":null,"qTrigger":false,"defaultValue":null,"properties":{},"signalType":{"key":"string","name":"String","baseType":{"name":"String"}},"index":0,"clients":[],"NodeId":10},{"id":"76","internalFlowId":"466","type":"quantum","selected":false,"name":"b000e9a4-fb8a-413e-aa17-7daf3293226c","in":true,"label":"State","description":null,"qTrigger":true,"defaultValue":null,"properties":{},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"index":1,"clients":[],"NodeId":10},{"id":"77","internalFlowId":"467","type":"quantum","selected":false,"name":"c79b147a-fd52-42ac-b975-a675de215c55","in":false,"label":"State","description":null,"qTrigger":null,"defaultValue":null,"properties":{},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"index":2,"clients":[],"NodeId":10}],"category":"Action","version":"0.0.1"},{"id":"11","internalFlowId":"101","type":"quantum","selected":false,"x":97.603,"y":872.083,"name":"90","mappingDescription":null,"description":"Set a static number that can be triggered.","color":"#DE00BC","qType":"Snippet","originalName":"Static Number","factoryId":"snippet_static_number","properties":{"executeCode":"if(trigger === 0){\n  return [parseFloat(inPorts[1].value) || 0];\n} "},"ports":[{"id":"78","internalFlowId":"468","type":"quantum","selected":false,"name":"4fa320e8-b305-4d84-9f59-66abd8342445","in":true,"label":"Trigger","description":null,"qTrigger":true,"defaultValue":null,"properties":{"defaultHidden":true},"signalType":{"key":"trigger","name":"Trigger","baseType":{"name":"String"}},"index":0,"clients":[],"NodeId":11},{"id":"79","internalFlowId":"469","type":"quantum","selected":false,"name":"7a07bd83-3777-4dde-ac58-7babe51ff5e0","in":true,"label":"Value","description":null,"qTrigger":false,"defaultValue":"90","properties":{},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":1,"clients":[],"NodeId":11},{"id":"80","internalFlowId":"470","type":"quantum","selected":false,"name":"41b09ba6-66a8-4161-b909-2551deea2aad","in":false,"label":"Value","description":null,"qTrigger":null,"defaultValue":null,"properties":{},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":2,"clients":[],"NodeId":11}],"category":"Data","version":"0.0.1"},{"id":"12","internalFlowId":"102","type":"quantum","selected":false,"x":97.603,"y":1038.611,"name":"0","mappingDescription":null,"description":"Set a static number that can be triggered.","color":"#DE00BC","qType":"Snippet","originalName":"Static Number","factoryId":"snippet_static_number","properties":{"executeCode":"if(trigger === 0){\n  return [parseFloat(inPorts[1].value) || 0];\n} "},"ports":[{"id":"81","internalFlowId":"471","type":"quantum","selected":false,"name":"b1d6251b-9124-4752-aa99-d1abd2a585f7","in":true,"label":"Trigger","description":null,"qTrigger":true,"defaultValue":null,"properties":{"defaultHidden":true},"signalType":{"key":"trigger","name":"Trigger","baseType":{"name":"String"}},"index":0,"clients":[],"NodeId":12},{"id":"82","internalFlowId":"472","type":"quantum","selected":false,"name":"ee2a788b-7ad2-430d-b8f1-3672a3ae3c5b","in":true,"label":"Value","description":null,"qTrigger":false,"defaultValue":"0","properties":{},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":1,"clients":[],"NodeId":12},{"id":"83","internalFlowId":"473","type":"quantum","selected":false,"name":"4cebcdca-56b7-4aba-ab4f-03dcfb27f487","in":false,"label":"Value","description":null,"qTrigger":null,"defaultValue":null,"properties":{},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":2,"clients":[],"NodeId":12}],"category":"Data","version":"0.0.1"},{"id":"13","internalFlowId":"103","type":"quantum","selected":false,"x":96.002,"y":1197.133,"name":"180","mappingDescription":null,"description":"Set a static number that can be triggered.","color":"#DE00BC","qType":"Snippet","originalName":"Static Number","factoryId":"snippet_static_number","properties":{"executeCode":"if(trigger === 0){\n  return [parseFloat(inPorts[1].value) || 0];\n} "},"ports":[{"id":"84","internalFlowId":"474","type":"quantum","selected":false,"name":"b6edf25c-e384-45d7-8039-daafb729829b","in":true,"label":"Trigger","description":null,"qTrigger":true,"defaultValue":null,"properties":{"defaultHidden":true},"signalType":{"key":"trigger","name":"Trigger","baseType":{"name":"String"}},"index":0,"clients":[],"NodeId":13},{"id":"85","internalFlowId":"475","type":"quantum","selected":false,"name":"a9ed36ed-9928-4e7b-acd1-c100efc98e8d","in":true,"label":"Value","description":null,"qTrigger":false,"defaultValue":"180","properties":{},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":1,"clients":[],"NodeId":13},{"id":"86","internalFlowId":"476","type":"quantum","selected":false,"name":"3b895851-944a-4d44-8700-81725b240a95","in":false,"label":"Value","description":null,"qTrigger":null,"defaultValue":null,"properties":{},"signalType":{"key":"number","name":"Number","baseType":{"name":"Number"}},"index":2,"clients":[],"NodeId":13}],"category":"Data","version":"0.0.1"},{"id":"14","internalFlowId":"104","type":"quantum","selected":false,"x":124.655,"y":393.189,"name":"Digital Toggle","mappingDescription":null,"description":"Can be used to Toggle a Digital Signal. Set is always True, Reset always false.","color":"#DE00BC","qType":"Snippet","originalName":"Digital TOGGLE","factoryId":"snippet_digital_toggle","properties":{"executeCode":"switch (trigger) {\n    case 0:\n        context.state = true;\n        break;\n    case 1:\n        context.state = false;\n        break;\n    case 2:\n        {\n            context.state = !context.state;\n            break;\n        };\n    default:\n        break;\n};\nreturn [context.state, !context.state];"},"ports":[{"id":"87","internalFlowId":"477","type":"quantum","selected":false,"name":"83815e22-f0fb-4b05-9bee-f576281abb12","in":true,"label":"Set","description":null,"qTrigger":true,"defaultValue":"","properties":{},"signalType":{"key":"trigger","name":"Trigger","baseType":{"name":"String"}},"index":0,"clients":[],"NodeId":14},{"id":"88","internalFlowId":"478","type":"quantum","selected":false,"name":"e0c08829-0edb-4afe-a426-86db9e084949","in":true,"label":"Reset","description":null,"qTrigger":true,"defaultValue":"","properties":{},"signalType":{"key":"trigger","name":"Trigger","baseType":{"name":"String"}},"index":1,"clients":[],"NodeId":14},{"id":"89","internalFlowId":"479","type":"quantum","selected":false,"name":"950ca94d-82c4-4195-a299-8bd5c89c5ecb","in":true,"label":"Toggle","description":null,"qTrigger":true,"defaultValue":"","properties":{},"signalType":{"key":"trigger","name":"Trigger","baseType":{"name":"String"}},"index":2,"clients":[],"NodeId":14},{"id":"90","internalFlowId":"480","type":"quantum","selected":false,"name":"9154708e-7121-41c3-9837-7b854c3a7947","in":false,"label":"Out","description":null,"qTrigger":null,"defaultValue":null,"properties":{},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"index":3,"clients":[],"NodeId":14},{"id":"91","internalFlowId":"481","type":"quantum","selected":false,"name":"d39a7ef6-c58c-497f-9dab-c99055f22bd8","in":false,"label":"Out inverted","description":null,"qTrigger":null,"defaultValue":null,"properties":{},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"index":4,"clients":[],"NodeId":14}],"category":"Logic","version":"0.0.1"},{"id":"15","internalFlowId":"105","type":"quantum","selected":false,"x":-221.427,"y":392.267,"name":"Forward","mappingDescription":null,"description":"Adds a Button that can be clicked on the Interface. Outputs are True and False.","color":"#07D174","qType":"Gadget","originalName":"Button","factoryId":"gadget_button","properties":{"gadgetType":{"name":"Button"},"gadgetLabel":"Forward","gadgetColor":"info","gadgetGroup":"12","gadgetIcon":"buttonIcon","gadgetStyle":"full"},"ports":[{"id":"92","internalFlowId":"482","type":"quantum","selected":false,"name":"46df6b85-da76-4bda-afc5-ba11e2067684","in":true,"label":"Label","description":null,"qTrigger":false,"defaultValue":null,"properties":{},"signalType":{"key":"string","name":"String","baseType":{"name":"String"}},"index":0,"clients":[],"NodeId":15},{"id":"93","internalFlowId":"483","type":"quantum","selected":false,"name":"e569e6ca-ec92-4744-942d-00bdab6738de","in":true,"label":"State","description":null,"qTrigger":true,"defaultValue":null,"properties":{},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"index":1,"clients":[],"NodeId":15},{"id":"94","internalFlowId":"484","type":"quantum","selected":false,"name":"0f7acd0e-b520-447d-a844-0c0af0375af0","in":false,"label":"State","description":null,"qTrigger":null,"defaultValue":null,"properties":{},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}},"index":2,"clients":[],"NodeId":15}],"category":"Action","version":"0.0.1"}],"status":"Stopped","rendering":{"id":"3","tabs":[{"id":"3","internalFlowId":"188","name":"Tab 1","position":0,"groups":[{"id":"3","internalFlowId":"188","name":"Group 1","position":0,"gadgets":[{"id":"1","NodeId":8,"GadgetGroupId":3,"position":0},{"id":"2","NodeId":9,"GadgetGroupId":3,"position":1},{"id":"3","NodeId":10,"GadgetGroupId":3,"position":2},{"id":"4","NodeId":15,"GadgetGroupId":3,"position":3}]}]}]},"createdAt":"2021-02-11T20:45:34.191Z","errorLog":null,"debugFlag":false,"version":"0.0.1"}

Steering Car Firmware.json

JSON
{"id":33,"name":"Steering Car","commit":"1.2.1-development-482c9b66","lifecycle":false,"signal":[{"disabled":false,"subClientIndex":0,"subClientName":"Motor BR","subClientCategory":4,"subClientSubCategory":3,"serviceName":"Motor","service":"q_dc_motor","driver":"custom_tri_state_motor","driverValues":{"enablePort":"gpioPortF","enablePin":"2","enableChannel":"26","firstDcPort":"gpioPortD","firstDcPin":"13","secondDcPort":"gpioPortD","secondDcPin":"14"},"signalType":{"key":"motor","name":"Motor","baseType":{"name":"Number"},"range":{"min":-255,"max":255},"internal":true}},{"disabled":false,"subClientIndex":1,"subClientName":"Motor BL","subClientCategory":4,"subClientSubCategory":3,"serviceName":"Motor","service":"q_dc_motor","driver":"custom_tri_state_motor","driverValues":{"enablePort":"gpioPortF","enablePin":"1","enableChannel":"25","firstDcPort":"gpioPortB","firstDcPin":"11","secondDcPort":"gpioPortF","secondDcPin":"3"},"signalType":{"key":"motor","name":"Motor","baseType":{"name":"Number"},"range":{"min":-255,"max":255},"internal":true}},{"disabled":false,"subClientIndex":2,"subClientName":"Servo","subClientCategory":4,"subClientSubCategory":4,"serviceName":"Servo","service":"q_servo","driver":"custom_generic_servo","driverValues":{"port":"gpioPortD","pin":"15","channel":"23"},"signalType":{"key":"servo","name":"Servo","baseType":{"name":"JSON"},"internal":true}}],"version":"0.0.1"}

Joystick Firmware.json

JSON
{"id":57,"name":"Joystick","commit":"1.2.1-development-5e4ba4d1","lifecycle":false,"signal":[{"disabled":false,"subClientIndex":0,"subClientName":"Left","subClientCategory":7,"subClientSubCategory":2,"serviceName":"X-axis","service":"q_analog_in","driver":"custom_Q10k_pot_anl","driverValues":{"granularity":50,"posSel":"adcPosSelAPORT3YCH7","negSel":"adcNegSelAPORT4XCH7"},"signalType":{"key":"analog","name":"Analog","baseType":{"name":"Number"},"range":{"min":0,"max":4095}}},{"disabled":false,"subClientIndex":0,"subClientName":"Left","subClientCategory":7,"subClientSubCategory":2,"serviceName":"Y-axis","service":"q_analog_in","driver":"custom_Q10k_pot_anl","driverValues":{"granularity":50,"posSel":"adcPosSelAPORT3XCH6","negSel":"adcNegSelAPORT4YCH6"},"signalType":{"key":"analog","name":"Analog","baseType":{"name":"Number"},"range":{"min":0,"max":4095}}},{"disabled":false,"subClientIndex":0,"subClientName":"Left","subClientCategory":7,"subClientSubCategory":2,"serviceName":"Button","service":"q_digital_in","driver":"custom_gpio_in","driverValues":{"port":"gpioPortD","pin":"13","debounce":1,"mode":2},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}}},{"disabled":false,"subClientIndex":1,"subClientName":"Right","subClientCategory":7,"subClientSubCategory":2,"serviceName":"X-axis","service":"q_analog_in","driver":"custom_Q10k_pot_anl","driverValues":{"granularity":50,"posSel":"adcPosSelAPORT1XCH18","negSel":"adcNegSelAPORT2YCH18"},"signalType":{"key":"analog","name":"Analog","baseType":{"name":"Number"},"range":{"min":0,"max":4095}}},{"disabled":false,"subClientIndex":1,"subClientName":"Right","subClientCategory":7,"subClientSubCategory":2,"serviceName":"Y-axis","service":"q_analog_in","driver":"custom_Q10k_pot_anl","driverValues":{"granularity":50,"posSel":"adcPosSelAPORT1YCH19","negSel":"adcNegSelAPORT2XCH19"},"signalType":{"key":"analog","name":"Analog","baseType":{"name":"Number"},"range":{"min":0,"max":4095}}},{"disabled":false,"subClientIndex":1,"subClientName":"Right","subClientCategory":7,"subClientSubCategory":2,"serviceName":"Button","service":"q_digital_in","driver":"custom_gpio_in","driverValues":{"port":"gpioPortB","pin":"11","debounce":1,"mode":2},"signalType":{"key":"digital","name":"Digital","baseType":{"name":"Boolean"}}}],"version":"0.0.1"}

Credits

Comments

Please log in or sign up to comment.