<h3>Application Programming </h3> <p> There are lots of reasons why we might want to have a microcontroller talk to a computer. There are many different kinds of software you might want to communicate with, and many ways to do so. One common reason is for data visualization, i.e., using your computer screen as an output device to present information. You may also want to use a computer or tablet as an input device (typing, clicking or sketching). Alternatively, you may need to connect to a computer to process information that your microcontroller can't handle, either because it lacks memory or processor speed, or because you require functionality (like Digital Signal Processing) that is more readily available for PCs than microcontrollers. </p> <h3> Applications </h3> <p> Some applications that have proven useful in past/current projects: </p> <ul> <li> <a href='https://processing.org/'> Processing</a>/<a href='https://p5js.org/'>p5</a>: Processing is a flexible software sketchbook and a programming language for visual arts. p5 is its port for JavaScript (web-based applications). Other web visualization tools include <a href='https://d3js.org/'>D3</a> for SVG-based visualizations, <a href='https://www.chartjs.org/'>chart.js</a> for making charts, <a href='https://threejs.org/'> THREE.js</a> for 3D visualizations (e.g. <a href='https://karisatzeng.com/artg2260-final/'>3D globe</a>), and <a href='https://carto.com/'>Carto</a> for geospatial data visualizations. </li> <li> <a href='https://cycling74.com/'> Max/MSP</a>: Max, also known as Max/MSP/Jitter, is a visual programming language for music and multimedia. You can upload a firmata to a microcontroller in order to have it listen for commands from Max. </li> <li> <a href='https://unity.com/'> Unity3D:</a> a cross-platform game engine. Microcontroller integrations include custom game controllers, VR or AR experiences, or physics simulations based on analog inputs. </li> <li> <a href='http://www.fireflyexperiments.com/#home'> Firefly:</a> a set of comprehensive software tools dedicated to bridging the gap between CAD programs (Rhino), microcontrollers and other input/output devices like web cams, mobile phones, game controllers and more. </li> <li> <a href='https://teachablemachine.withgoogle.com//'> Teachable Machine</a>: A fast, easy way to create machine learning models for your sites, apps, and more – no expertise or coding required. The models you make with Teachable Machine are real <a href='https://www.tensorflow.org/js'>Tensorflow.js</a> models that work anywhere javascript runs, so they play nice with tools like Glitch, P5.js, Node.js & more. Plus, export to different formats to use your models elsewhere, like Coral, Arduino & more.</li> </ul> <h3>Application Programming Interfaces (APIs)</h3> <p> An application programming interface is a computing interface to a software component or a system, that defines how other components or systems can use it. It defines the kinds of calls or requests that can be made, how to make them, the data formats that should be used, the conventions to follow, etc. </p> <p> APIs exist for all sorts of things. You can check some directory sites to see lists of popular APIs: </p> <ul> <li> <a href='https://github.com/public-apis/public-apis'> GitHub public APIs </a></li> <li> <a href='https://www.programmableweb.com/apis/directory'> Programmable Web </a></li> <li> <a href='https://any-api.com/'> Any API</a></li> <li> <a href='https://apilist.fun/'> API List </a></li> </ul>