Anda di halaman 1dari 5

Arduino Programming Language

Literature Review
Bhavana Harrilal

1. Abstract
The Arduino prototyping platform is a creative outlet for any user to produce technology
through easily usable hardware and software. However, the steep learning curve of the
Arduino programming language holds back many of its users. Through graphical and
tangible programming languages users can effectively learn how to program for the Arduino
platform. Incorporating tangible human computer interaction in Arduino technology yields
positive results in learning ability and enthusiasm of programming language learnt. A new
language for Arduino can be developed through interactive and participatory design
practices which intends to be valuable for novice programmers.

2. Introduction & Motivation


Arduino is an open source electronics prototyping platform (Arduino, 2005) that is used by
expert to novice programmers. These novice programmers can be anyone from a child to
artists. The aim of Arduino is to provide flexible, easy-to-use hardware and software but the
difficulty lies in the Arduino programming language which controls the hardware and is
controlled by a set of C/C++ functions. This language is difficult for novice users.

This paper aims to look at the current work done with Arduino programming language and
the difficulties faced by novice programmers. It looks at the challenges and use of
participatory design to help users with the learning of the Arduino programming language.

Firstly, the paper looks into the Arduino programming language then the paper explores
current studies which have used Arduino to teach programming. Followed by the role of
participatory and interactive design in development. Other topics explored are tangible
human and computer interaction and its particular use in Arduino projects. Lastly, comparing
tangible and graphical programming for the most effective in learning a programming
language.

1
3. Presentation of Findings

3.1. Programming Language

The higher level short comings of Arduino is the Arduino programming language itself.
Programs are compiled into a C/C++ but Java, Python, Processing are used on a personal
computer to run communications with the Arduino. The process of code to implementation
can be a complex set of steps for a novice programmer as the code implementation is either
C/C++, python or Java. This problem forms part of a larger set of problems related to
programming in general not exclusively to Arduino. In programming as Musical Instrument
which aims to deal with the psychology of programming (Blackwell, 2005). Blackwell,
describes the problem as a conflict between what users want and what users need.

The broader problem of programming language design as seen by a non-programmer is one


that is very complex (Miller, 1974). The scope of this paper is not to explore these
fundamental issues which face programming in relation to the broad topic of computer
science. The aim is to explore the options available that may lead to positive programming
attitude towards Arduino by all its users.

TurTan uses Logo which is a graphical programming language to encourage its users to be
creative and explore the potentials of programming (Gallardo et al., 2008). This example of a
tangible programming language proved to be a positive with users, much of this positivity
being credited to its tangibility attribute. Users found it to be enjoyable and easy to
understand. Gallardo concluded that a tangible programming language yields good learning
of basic programming language skills with its users.

3.2. Using Arduino to Teach Programming

The AdMoVeo study that has been running since 2008 with 400 students was conducted for
industrial design students with the main aim to increase the basic programming skills of
students (Hu & Alers, 2010). The study was conducting with the knowledge that the ability to
link theory and practice is difficult. This ability to link the two frustrates users/students. The
study created a robotic platform based Arduino. Hu et al. designed their own software so
there was no C++, only a Processing program environment. The project was successful as it
“motivated and encouraged students to explore their creativity with their passions in
graphical and behavioural design” (Hu & Alers, 2010). Along with “inviting the students to
apply and grow knowledge in their design projects” (Hu & Alers, 2010).

2
Arduino was also used to teach child friendly programming languages (Eisenberg et. al,
2009). Confliction on ideas about what exactly children should be able to learn. These being
recursion, procedure and variables, utilising graphical programming or robots that are
programmable. It is shown that these topics are important to children learning of a
programming language as it provides meaningful information to programming. One of the
implementations was a paper based Arduino prototype. Ambient programming which is
informal , moment-to-moment ways of programming was shown to be effective with children
Eisenberg et. al, 2009).. Arduino in particular with children is useful but it is “hardly a
revolutionary design” (Eisenberg et. al, 2009).

There exists a gap in programming education for junior high school students, when a student
is in elementary school a purely graphical environment is learnt and complex text based
programming is learnt in high school (Cheung et al., 2009). The study aimed to address the
gap in-between i.e. junior high school. Bricklayer is a text enhanced graphical programming
language that was proposed (Cheung et al., 2009). This mix between the two methods of
programming allowed the programming experience to be more tangible and immediately
rewarding for the students. Giving students to gradually build up their confidence in
programming.

3.3. Participatory design

Arduino holds potential in terms of its ability to effectively achieve participatory design
(Hribernik et al., 2011). In this study, two products were developed using Arduino as the
base in collaborations with its users. Evidence from both products developed showed the
success of participatory design. These were shown to be effective especially when role
playing and storytelling tools and methods were used as part of the participatory design
process.

The Interactive Building project is another project which supports the success of using
Arduino in interactive and participatory design (Bier, 2012).

3.4. Tangible HCI

Varesano’s master’s thesis explores the current situation in the Arduino programming
language (Varesano, 2011). Currently, Arduino users program using the Arduino IDE which
is the same as coding in C/C++. The current programming process is purely text based.

3
Each program written is called a sketch. Before being deployed onto the Arduino board the
sketch is compiled and converted into a c program. Throughout Varesano’s paper he
implements a variety of technologies built on top of Arduino to achieve tangible human
computer interaction technology. These examples are the Palla prototype, translated from
Italian means ball, which was implemented as a spherical game controller. The aim of
Varesano’s future work is to incorporate user experience into the tangible component of
prototypes he builds.

3.5. Tangible vs. graphical programming languages

Work done by Horn shows that tangible languages have an advantage over single mouse
graphical interfaces (Horn et al., 2009). The tangibility aspect of the programming language
is more inviting and more conductive to collaborative interaction. Both languages are
equivalent in their ability to achieve understanding with a user and engaging its user.

4. Conclusion

Arduino in conjunction with participatory design and interactive design yields successful
results. Once users are knowledgeable of the Arduino programming language they are able
to implement a variety of solutions to numerous problems. The challenge is obtaining that
knowledge for all users of Arduino, in particular the novice programmers. Tangible and
graphical programming languages have been proven to be successful in stimulating and
educating novice programmers. Both have been found to make an improvement in learning
when used with participatory and interactive design. In terms of learning how to program,
tangible programming has shown better results.

Thus, there is an opportunity to develop a tangible or graphical programming language for


Arduino. Possibly a combination of the two along with adopting participatory and interactive
design practices could yield an improved Arduino programming language that all of its users
can use with ease and creativity. Focussing on how the users want to program and not how
they should theoretically be programming.

5. References
1. Hu, J., & Alers, S. (2010). AdMoVeo: Created For Teaching Creative Programming.
In Workshop Proceedings of the 18th International Conference on Computers in
Education (ICCE 2010) (pp. 361-365).

4
2. Eisenberg, M., Elumeze, N., MacFerrin, M., & Buechley, L. (2009, June). Children's
programming, reconsidered: settings, stuff, and surfaces. In Proceedings of the 8th
International Conference on Interaction Design and Children (pp. 1-8). ACM.
3. Cheung, J. C., Ngai, G., Chan, S. C., & Lau, W. W. (2009, March). Filling the gap in
programming instruction: a text-enhanced graphical programming environment for
junior high students. In ACM SIGCSE Bulletin (Vol. 41, No. 1, pp. 276-280). ACM.
4. Hribernik, K. A., Ghrairi, Z., Hans, C., & Thoben, K. D. (2011, June). Co-creating the
Internet of Things—First experiences in the participatory design of Intelligent
Products with Arduino. In Concurrent Enterprising (ICE), 2011 17th International
Conference on (pp. 1-9). IEEE.
5. Bier, H. (2012). Interactive Building. Advances in Internet of Things, 2(4), 0-0.
6. Blackwell, A., & Collins, N. (2005). The programming language as a musical
instrument. Proceedings of PPIG05 (Psychology of Programming Interest Group).
7. Gallardo, D., Julia, C. F., & Jorda, S. (2008, October). TurTan: A tangible
programming language for creative exploration. In Horizontal Interactive Human
Computer Systems, 2008. TABLETOP 2008. 3rd IEEE International Workshop on
(pp. 89-92). IEEE.
8. Brock, J. D., Bruce, R. F., & Reiser, S. L. (2009). Using Arduino for introductory
programming courses. Journal of Computing Sciences in Colleges,25(2), 129-130.
9. Varesano, F. (2011). Using arduino for tangible human computer interaction(Doctoral
dissertation, Master’s thesis, University of Torino).
10. Marshall, P., Rogers, Y., & Hornecker, E. (2007). Are tangible interfaces really any
better than other kinds of interfaces?.
11. Horn, M. S., Solovey, E. T., Crouser, R. J., & Jacob, R. J. (2009, April). Comparing
the use of tangible and graphical programming languages for informal science
education. In Proceedings of the SIGCHI Conference on Human Factors in
Computing Systems (pp. 975-984). ACM.
12. Miller, L. A. (1974). Programming by non-programmers. International Journal of Man-
Machine Studies, 6(2), 237-260.
13. Arduino. (2005). Language Reference. Arduino . Retrieved 28 April 2013. From
http://arduino.cc/en/Reference/HomePage.