ebook img

SCIENTIFIC ARDUINO PROGRAMMING - INFN Sezione di Roma PDF

71 Pages·2016·4.46 MB·English
by  
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview SCIENTIFIC ARDUINO PROGRAMMING - INFN Sezione di Roma

SCIENTIFIC ARDUINO PROGRAMMING Arduino programming for scientists A free addendum to "Scienti(cid:12)c Programming" GIOVANNI ORGANTINI Sapienza Universita(cid:18) di Roma & INFN{Sez. di Roma March 4, 2016 Contents zero Introduction 5 zero.1 What is Arduino? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 zero.2 What this booklet is intended for . . . . . . . . . . . . . . . . . . . . 7 zero.3 How to use this booklet . . . . . . . . . . . . . . . . . . . . . . . . . 7 zero.4 Supporting this work . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 due How Arduino works 9 due.1 Arduino basic architecture . . . . . . . . . . . . . . . . . . . . . . . . 9 due.2 Program development . . . . . . . . . . . . . . . . . . . . . . . . . . 11 due.3 Using Arduino on Linux . . . . . . . . . . . . . . . . . . . . . . . . . 13 tre Arduino basic programming 15 tre.1 The (cid:12)rst Arduino sketch . . . . . . . . . . . . . . . . . . . . . . . . . 15 tre.2 I/O with Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 tre.3 Showing data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 quattro Program execution control 19 quattro.1 The selection structure . . . . . . . . . . . . . . . . . . . . . . . . . . 19 quattro.2 The iteration structure . . . . . . . . . . . . . . . . . . . . . . . . . . 20 sei Saving data 23 sei.1 Using Serial communications. . . . . . . . . . . . . . . . . . . . . . . 23 sei.2 Connecting to the Internet . . . . . . . . . . . . . . . . . . . . . . . . 27 sei.2.1 Con(cid:12)guring the Ethernet shield . . . . . . . . . . . . . . . . . . . 28 sei.2.2 Using the Ethernet shield to collect data . . . . . . . . . . . . . . 30 sei.3 Using an SD card . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 sette Arduino speci(cid:12)c functions 37 sette.1 Setting up pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 sette.2 Writing and reading digital pins . . . . . . . . . . . . . . . . . . . . . 38 iii sette.3 timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 sette.4 Analog pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 otto Measuring with Arduino 45 otto.1 Voltages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 otto.2 Distances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 otto.3 Temperature. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 otto.4 Light . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 otto.5 Magnetic (cid:12)eld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 otto.6 Acceleration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 1 scientific arduino programming { Vers. March 4, 2016 © 2015 Giovanni Organtini, Sapienza Universit(cid:18)a di Roma & INFN{Sez. di Roma This work is licensed under a Creative Commons Attribution{ NonCommercial{NoDerivs 3.0 Unported License. You can (cid:12)nd all the details about this license on www.creativecommons.org for details. You arefreetocopy,distributeandtransmitthiswork.Youmustattributethe work as a work of Giovanni Organtini ([email protected]), who does not endorse you or your use of this work. You may not use this work for commercial purposes. You may not alter, transform, or build upon this work. You can support the development of this manual by making a donation on PayPal using the e{mail address [email protected]. This work was partly supported by Farnell Element14 who kindly provided some of the parts described in the text. Contacts: Prof. Giovanni Organtini Sapienza Universit(cid:18)a di Roma Dip.to di Fisica P.le Aldo Moro, 2 00185 ROMA (Italy) Tel: +39 06 4991 4329 Fax: +39 06 4453 829 e{mail: [email protected] Technical note This book has been written using LATEX, an open source, high{quality typesetting ap- plication. Schematics have been realised using fritzing, an open source application to draw electronics schemas. Arduino itself is an open source initiative. We strongly support this kind of projects, not only because their open nature makes them inexpensive, but mainly because the open standard guarantee a very high quality of the tools (they can be contributed by thousandsofdevelopers)andmostlybecausetheyprovideaformidabletoolforlearning. Weinviteyoutootosupporttheopeninitiativesyouuse:youcandothatinavariety of ways. You can, for example, donate money to the developers, to recognise their e(cid:11)ort, or you may prefer to buy products from those who make them available to anyone as open source projects. That is the case of Arduino, for example. You can certainly (cid:12)nd ArduinoclonesthatarecheaperthanthoseyoucangetfromtheArduinoo(cid:14)cialstore,or fromothero(cid:14)cialstoresoflegalArduino{compatibleboards,butsavingfewdollarsdoes nothelpmuch,infact.Ontheotherhandyoucreateadamagetothosewhoaretryingto changethestandardbusinessmodelbasedonhidinginformationandpatents.Asyoucan readontheArduinowebsite,youcandownloadandusetheirreferencedesignsand"you are free to use and adapt [those designs] for your own needs without asking permission or paying a fee". We believe this is really a revolutionary paradigm with respect to the commonly adopted one, that is suitable to increase dramatically both knowledge and welfare all around the world. 3 Chapter zero Introduction This paper is an introduction to Arduino programming for students who learned C on "Scienti(cid:12)c Programming" by L.M. Barone, E. Marinari, G. Organtini and F. Ricci{ Tersenghi [1], edited by World Scienti(cid:12)c (or its italian counterpart "Programmazione Scienti(cid:12)ca" edited by Pearson). "Scienti(cid:12)c Programming" is an innovative textbook on computer programming thought for science students, who does not care about writing Hello World!onascreen,butareinterestedinusingacomputerasatooltodoscience. Chapter 0 of "Scienti(cid:12)c Programming" is about how computing and programming is important for a scientist. Chapter 1 is about information representation (there is no need for a Chapter uno here, since information is represented exactly in the same way on Arduino boards). Oneoftheauthorsof"Scienti(cid:12)cProgramming"(GiovanniOrgantini),startedtoteach Arduino programming in his course about computing and programming for physicists, being the Arduino board a great resource for physicists and engineers. As well as in the case of C++ he wrote these notes in the style of [1], keeping the same chapter structure andaverysimilarstyle.Inthisbooklet,chaptershavethesamenumberingof[1],except the numbering is given in italian, as a tribute to the italian origin of the Arduino board, invented by Massimo Banzi and his colleagues in Ivrea (TO), Italy1. Each chapter uses notions that can be learned in the corresponding chapter in [1]. In fact, Arduino can be programmedinC++language,butataverybasiclevelitcanbethoughtasadialectofthe C language, sharing mostly the same syntax. You can learn some basics of C++ reading another free addendum to "Scienti(cid:12)c Programming", by the same author, available on the Scienti(cid:12)c Programming website. However, you can obtain good results just knowing some C language: the chosen language for "Scienti(cid:12)c Programming". For these reasons, some chapter number is missing: the corresponding content is exactly the same of [1]. Students wishing to learn some Arduino programming without owning a copy of [1] shall not be scared: those students should not have too much di(cid:14)culties in learning how to write programs for Arduino if they are able to write C programs. 1ThenameArduinocomesfromtheirhauntinIvrea:apubcalledafterthenameofanancientking ofIvreawhosenamewasArduino. 5 6 CHAPTER ZERO. INTRODUCTION zero.1 What is Arduino? Arduinoisaninexpensive,commerciallyavailableelectronicboardwithamicrocontroller and some I/O capabilities. It exists in various versions, that share the same, simple pro- gramming language. The huge success of Arduino, with respect to other microcontroller boards, was due to the fact that both hardware and software were released as Open Source projects: you can read, study and even expand its capabilities both in terms of software as well as in terms of hardware. All the information are shared under the Creative Commons Attribution-ShareAlike 3.0 License. YoucanuseArduinoformanydi(cid:11)erentpurposes:fromteachingtohomeautomation1, from scienti(cid:12)c purposes to commercially available devices, as well as to have fun (you can be surprised about the many ways in which people use Arduino). Thanks to its very simple interface to I/O ports you can control many di(cid:11)erent devices, both digital and analogical. For example, you can measure voltages using analog inputs or drive a DC motor using a digital output port. You can as well switch on and o(cid:11) an LED or a relay usingdigitaloutputportsandtransmit/receivedatato/frommorecomplexdevicessuch as GSM boards. The job of (at least a large part of) physicists is to measure something: Arduino is then a very useful tool both to control measuring apparata or as a device to take measurements by itself (for many purposes it can be accurate enough to replace professional, and expensive, instruments). The design of Arduino boards is such that its form factor is (almost) independent on the Arduino version. The (cid:12)rst Arduino boards used a microcontroller whose chip took a somewhat large space; nowadays the same chip is available in a much smaller form factor, however the size and the shape of the Arduino board is still the same (and in fact there is plenty of free space on it). That choice has one big advantage: third party manufacturers can easily design, produce and sell boards that extend the functionalities of any Arduino, and users can easily connect them to it. In fact, those board, called shields have a set of pins that just plug into the corresponding pins on the Arduino board and no speci(cid:12)c electrical connection is needed to make them work. You can buy, forfewbucks,boardsdesignedtoprovideInternetorGSMconnectivity,GPScapabilities, stepper motor control and much more. UsingArduino,anyonewithaverybasicknowledgeofsomeelementaryelectronicsis able to build complex electronic devices e(cid:11)ortlessly: the complexities of the electronics are translated into software, hence even people not used to work with analog and digital devicessuchasdiodes,transistors,operationalampli(cid:12)ers,integratedcircuits,logicports, etc., can realise interesting projects. Tutorials can easily be found on the Internet for various tasks: given the Open Source nature of the project, people are encouraged to share their projects with others so anyone can bene(cid:12)t of other’s experience. 1The author, for example, built a device able to switch on and o(cid:11) home appliances remotely just placingaphonecall.

Description:
Jan 23, 2015 C language, sharing mostly the same syntax. You can learn some basics of C++ reading another free addendum to ”Scientific Programming”,
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.