In order to program the sense experience, we must use special hardware and software. There are several user-ready options available, and one of the most popular is Arduino. Arduino consists of programmable circuit board, which is also called a microcontroller, and software, which is also called an Integrated Development Environment (IDE). The designer uses the software (IDE) to program the microcontroller to perform certain tasks. In combination with this, there are various sensors and actuators, which mimic or extend our own senses and physical abilities. Many examples of these are provided in the overviews of each of the senses in this work.
For active sensory design, using the microcontroller, we have discussed conditional statements that describe actions that occur from some sensory cause. The sensors are the input, and the microcontroller reads the values provided by the sensor. These readings are always a number in a specific range. The designer can use these numbers in the conditional statement to set up how the microcontroller translates this information, whether it is binary, one-to-one direct, one-to-one indirect, a threshold, or thresholds. Then, some actuator performs a task given in the conditional statement when the conditions have been met. The effect can be a sensory stimulus, such as heat, sound, change of texture, or it can be physical movement, using motors and similar. These three parts make up the active design, and if the designer is thoughtful and attentive to the user’s experience, then the use of technology will create a dynamic and interactive sensory moment.
The software used for Arduino’s IDE is based on Processing, a language created for artists and designers. This is a very simple but powerful language which allows anyone to program hardware with script that is easily understandable and applicable. The scripts, which are called sketches for Arduino, have the conditional statements described above, but they also define how the sensors and actuators communicate with the microcontroller, which is usually through pins on the board. The pins have different functionality on the Arduino microcontroller, but most can both receive data and transmit data using low voltage signals and power width modulation.
Because the Arduino is so popular, with a reasonably long history, we are able to see and use other people’s sketches to learn new functionality and interfaces with hardware and other software. In fact, the Arduino community is rather open, and it is possible for the designer to use new and surprising features and scripts developed, as long as the designer gives attribution. Unlike some other microcontrollers and systems, Arduino allows users to share and grow knowledge without risk. However, Arduino is not the only system like this; other systems include BeagleBoard, Teensy, and Launchpad. Nevertheless, for the purposes of this work, we will use Arduino.
The Arduino can be very fast to program and test, and it is critical that the designer follow the typical design process:
- Define the Problem
- Develop a Solution
- Create a Prototype
- Test the Solution
- Evaluate the Results
- Repeat until the Results Meet the Expectations
Defining the problem is very much as described earlier: what does the designer want to accomplish? What senses will be used for the input and output or cause and effect?
In order to develop a solution, the designer must develop a conditional statement to relate the input or cause with the output or effect. Furthermore, the designer must define the interaction: binary, one-to-one direct or indirect, a threshold, or thresholds.
To create the prototype is relatively simple with the Arduino microcontroller and IDE, and nearly all sensors and actuators will work with the Arduino environment. This hardware is readily available on the internet or at some hobby and electronics stores. Also, because Arduino is so popular, it is likely that the hardware or some similar has been used before, and the sketch with the programming script could very easily be available online. If not, the community is very helpful and will likely be able to provide answers and solutions on how to program and assemble the prototype.
When testing the solution, the designer should first remember the design intent. Then, the prototype can be tested and judged with specific criteria set forward by the designer. Ultimately, is the solution able to provide the interaction and sensory experience initially desired? If not, try again. Sometimes, we must change the intent to meet the possibilities, if our initial intent is not an option for some reason. However, this is the last resort, and it is better to run through the design process several times to hone in on the solution. Design is a reiterative task.