Arduino and c programming
-
Upload
punit-goswami -
Category
Engineering
-
view
403 -
download
3
Transcript of Arduino and c programming
![Page 1: Arduino and c programming](https://reader036.fdocuments.in/reader036/viewer/2022081502/58d005ad1a28abad3e8b4855/html5/thumbnails/1.jpg)
INTERNET OF THINGS: ARDUINO AND C PROGRAMMING
COMBINING THE TANGIBLE AND THE VOLATILE INTO ONE
Punit Goswami
![Page 2: Arduino and c programming](https://reader036.fdocuments.in/reader036/viewer/2022081502/58d005ad1a28abad3e8b4855/html5/thumbnails/2.jpg)
ARDUINO ENVIRONMENTTHE ARDUINO BOARD, ITS SOFTWARE COMPONENT AND OTHER ADD-ON HARDWARE
![Page 3: Arduino and c programming](https://reader036.fdocuments.in/reader036/viewer/2022081502/58d005ad1a28abad3e8b4855/html5/thumbnails/3.jpg)
ARDUINO DEVELOPMENT BOARD• Eight bit microcontroller – brain of the board
• USB Port – to communicate with the desktop/laptop
• USB controller chip – manages USB transferred data
• IO pins – board’s connection to the outside world
• Quartz oscillator – board’s time keeper
• Reset button – taking the board back to its initial state
• External power jack – power from dedicated source
Co-axial jack, but USB can also be used
![Page 4: Arduino and c programming](https://reader036.fdocuments.in/reader036/viewer/2022081502/58d005ad1a28abad3e8b4855/html5/thumbnails/4.jpg)
INPUT/OUTPUT PINS (I/O PINS) Top and bottom rows of the board Holes in the board which we can stick wires in Holes are connected to the chips through traces on-board 14 Digital I/O pins on top [0-13]
Highs – 5 volts Lows – 0 volts Max Current - 40 mA 6 Analog input pins on the bottom [A0 – A5] Power output pins on the bottom [ 5v , 3.3 v ] Reset pin to reset the board to initial state
Click icon to add picture
![Page 5: Arduino and c programming](https://reader036.fdocuments.in/reader036/viewer/2022081502/58d005ad1a28abad3e8b4855/html5/thumbnails/5.jpg)
MICROCONTROLLERS Two microcontrollers on the board
Main ATmega328 – 8 bit microcontroller
User programmable, runs user-written application code Carries firmware, like bootloader
ATmega16U2
Handles the communication with the USB interface, not directly accessible
![Page 6: Arduino and c programming](https://reader036.fdocuments.in/reader036/viewer/2022081502/58d005ad1a28abad3e8b4855/html5/thumbnails/6.jpg)
STORAGE & MEMORY
Click icon to add picture
Non-volatile flash memory for storage
32 kilobytes in size
Static Random Access Memory (SRAM) for memory (volatile)
3 kilobytes in size
![Page 7: Arduino and c programming](https://reader036.fdocuments.in/reader036/viewer/2022081502/58d005ad1a28abad3e8b4855/html5/thumbnails/7.jpg)
CLOCK
Click icon to add picture
16 MHz clock speed ~ 16 million operations per second
Helps synchronize all components together
Keeping track of occurrence of events
![Page 8: Arduino and c programming](https://reader036.fdocuments.in/reader036/viewer/2022081502/58d005ad1a28abad3e8b4855/html5/thumbnails/8.jpg)
PROGRAMMING FIRMWARE
Click icon to add picture
The ISCP headers can be used to program the firmware on the board
ICSP1 for the main ATmega328 microcontroller
ICSP2 for the ATmega16U2 microcontroller
Special equipment are required in order to re-program the firmware through these headers
![Page 9: Arduino and c programming](https://reader036.fdocuments.in/reader036/viewer/2022081502/58d005ad1a28abad3e8b4855/html5/thumbnails/9.jpg)
SOFTWARE ENVIRONMENT
• Arduino IDE – Integrated Development Environment
• Can be programmed using other IDEs too, like Eclipse
• Arduino IDE is more versatile
• Needs no special drivers or additional components
• Available for Windows, Linux and Mac
• Cross compiler – compiles for a different target platform than the one being programmed on
![Page 10: Arduino and c programming](https://reader036.fdocuments.in/reader036/viewer/2022081502/58d005ad1a28abad3e8b4855/html5/thumbnails/10.jpg)
IDE – SOFTWARE TOOL FOR PROGRAMMING File operations and other general options on top
Buttons for most commonly used options (Verify, Upload, etc.)
Main window – Text editor for writing code
Message area – for messages to the programmer
![Page 11: Arduino and c programming](https://reader036.fdocuments.in/reader036/viewer/2022081502/58d005ad1a28abad3e8b4855/html5/thumbnails/11.jpg)
OPTIONS BUTTONSButtons on the top have the most common ,useful operations
Verify – compiles the code and checks for errors
Uploads – compiles the code, uploads it to the board. Works only if the board is connected
New – creates a new sketch, a new program
Open – opens an existing sketch
Save – saves the current sketch in the directory of your choice
Serial Monitor – opens window to communicate with the board
![Page 12: Arduino and c programming](https://reader036.fdocuments.in/reader036/viewer/2022081502/58d005ad1a28abad3e8b4855/html5/thumbnails/12.jpg)
TARGET PLATFORM
• ATmega328 – Arduino Uno’s processor
• Arduino shields – add on hardware for specific purposes
• Shields need no complicated circuitry – prewired
• Stacks of shields on top of the Arduino
• Prefabricated libraries of methods
![Page 13: Arduino and c programming](https://reader036.fdocuments.in/reader036/viewer/2022081502/58d005ad1a28abad3e8b4855/html5/thumbnails/13.jpg)
ARDUINO SHIELDSThe prominent reason that Arduino got so popular
Additional hardware to do particular, complex tasks
Form of separate boards
Pre-wired pins that stick into holes in Arduino
Stack on top of the Arduino to make connections
Pre-written functions for operations of these boards
Open-source designs in most of the cases, third party
Complete list of shields at http://www.shieldlist.org
![Page 14: Arduino and c programming](https://reader036.fdocuments.in/reader036/viewer/2022081502/58d005ad1a28abad3e8b4855/html5/thumbnails/14.jpg)
OPEN SOURCE
• Hardware – the board’s design is open source
http://www.arduino.cc
• Software – the IDE is open source, written in Java, modifiable, redistributable
• Open source community – easily available codes and help on troubleshooting
![Page 15: Arduino and c programming](https://reader036.fdocuments.in/reader036/viewer/2022081502/58d005ad1a28abad3e8b4855/html5/thumbnails/15.jpg)
SETTING UP THE ENVIRONMENTLEARNING TO CODE IN C/C++ FOR ARDUINO
![Page 16: Arduino and c programming](https://reader036.fdocuments.in/reader036/viewer/2022081502/58d005ad1a28abad3e8b4855/html5/thumbnails/16.jpg)
RUNNING IDE ON WINDOWS Emacs or NotePad++ text editor
Gcc C compiler
The debugger, gdb
IDE provides one-stop solution
![Page 17: Arduino and c programming](https://reader036.fdocuments.in/reader036/viewer/2022081502/58d005ad1a28abad3e8b4855/html5/thumbnails/17.jpg)
ARDUINO IDE Require Java Runtime Environment Write codes in general C language
setup() – Initiates the variables and sets up device instances loop() – Runs the code that contains operations and
manipulations, iterates infinitely
![Page 18: Arduino and c programming](https://reader036.fdocuments.in/reader036/viewer/2022081502/58d005ad1a28abad3e8b4855/html5/thumbnails/18.jpg)
BLINK LED EXAMPLE Pin 13 is represented by numeral 13
digitalWrite() writes voltage values to pins
delay() sets delays in milliseconds
HIGH – 5v LOW – 0v
![Page 19: Arduino and c programming](https://reader036.fdocuments.in/reader036/viewer/2022081502/58d005ad1a28abad3e8b4855/html5/thumbnails/19.jpg)
ARDUINO PROGRAMS AND THE BUILD PROCESSHOW IT IS SAME BUT DIFFERENT TO CODE FOR THE BOARDS
![Page 20: Arduino and c programming](https://reader036.fdocuments.in/reader036/viewer/2022081502/58d005ad1a28abad3e8b4855/html5/thumbnails/20.jpg)
Source code
Executable file Hex file Uploaded
to board
ARDUINO TOOLCHAIN
Click icon to add picture
Steps taken post code authoring
Source code(sketch) is compiled to an executable format
Executable file is linked with libraries and interpreted into a hex file
Hex file is uploaded to board
Starts executing right away
![Page 21: Arduino and c programming](https://reader036.fdocuments.in/reader036/viewer/2022081502/58d005ad1a28abad3e8b4855/html5/thumbnails/21.jpg)
CROSS COMPILATION
Click icon to add picture
Compile on one machine, but the target is another machine. E.g.: compiling it on an Intel processor, compiling it for an AVR processor
avr-gcc – C compiler for AVR targets, gives a *.o file
avr-lnk – links library object files, results in a *.elf file
avr-objcopy – change the *.elf file into Arduino compatible *.hex file
![Page 22: Arduino and c programming](https://reader036.fdocuments.in/reader036/viewer/2022081502/58d005ad1a28abad3e8b4855/html5/thumbnails/22.jpg)
DEBUGGING AND TROUBLESHOOTINGREMOVING ERRORS AND TAKING CARE OF REPAIR AND MAINTENANCE
![Page 23: Arduino and c programming](https://reader036.fdocuments.in/reader036/viewer/2022081502/58d005ad1a28abad3e8b4855/html5/thumbnails/23.jpg)
DEBUGGING
• Finding reasons of erroneous execution or failure of execution
• Software problems
• Require ‘controllability’ and ‘observability’
• Controllability: the ability to control sources of data that are used by the system
Allows to do testing to test certain circumstances that might be causing a bug or triggering a bug at any rate
• Observability: the ability to observe intermediate and final results
An oscilloscope, multi-meter, or the serial monitor could be used
![Page 24: Arduino and c programming](https://reader036.fdocuments.in/reader036/viewer/2022081502/58d005ad1a28abad3e8b4855/html5/thumbnails/24.jpg)
REAL TIME MONITORING
• Includes dynamic observation of the target and its state
• Viewing data about the execution as it occurs
• Not intrusive in terms of performance
• Important for timing constraint IoT systems
• Provides timing and functional accuracy
![Page 25: Arduino and c programming](https://reader036.fdocuments.in/reader036/viewer/2022081502/58d005ad1a28abad3e8b4855/html5/thumbnails/25.jpg)
REMOTE DEBUGGING
Remote Debugger
• Host computer acts as debugger for a code that runs on the remote target system
• Host computer are also the systems that the programmer programs on
• Host provides the platform to interface with the debugging environment.
• Provides good run control, not good for testing timing
Embedded Debug Interface
• Seen in modern processors, Arduino and its likes have trace macrocells
• Built in to the processor
• Hardware dedicated to do debugging directly
![Page 26: Arduino and c programming](https://reader036.fdocuments.in/reader036/viewer/2022081502/58d005ad1a28abad3e8b4855/html5/thumbnails/26.jpg)
SERIAL PROTOCOLS FOR DEBUGGING
• UART: Universal Asynchronous Receiver/Transmitter, an old protocol, still useful though.
• Low hardware overhead
• Transmits at 9600 baud
• START and STOP buts are used for synchronization
• The bits in between a START bit and the next STOP bit is the data
• To distinguish, the receiver samples at 16 times higher rate than the baud rate
• Serial interface can be used to both send data to and from the Arduino board