Sei sulla pagina 1di 54

This semester: 12 meeting & 2 exam

1. Introduction Arduino (a demonstration video)


2. Instruction (arith., compar., logical, cond., loop)
3. Analog read
4. Analog write
5. Motor (DC/ Servo/ Stepper)
6. Mid Test (UTS)
7. SPI/ I2C
8. DHT11 temp./humidity
@meeting:
9. TCS32000 color sensor
1. Lecturing: 30 minute
10.RTC DS1307
2. Exercise: 20 minute
11.MPU 6050 Acc/Gyro
3. Assignment: 5 minute
12.Student presentation
4. Closing: 5 minute
13.Student presentation
14.Final test
Micro-Controller:

It is a micro-computer.
As any computer it has
internal CPU, RAM, IOs
interface.
It is used for control
purposes, and for data
analysis.

Famous microcontroller manufacturers are MicroChip,


Atmel, Intel, Analog devices, and more.
What is a Development Board

• A printed circuit
board designed to
facilitate work with a
particular
microcontroller.
• Typical components include:
• power circuit
• programming interface
• basic input; usually buttons and LEDs
• I/O pins
What is Arduino Not?

• It is not a chip (IC)


• It is not a board (PCB)
• It is not a company or a manufacturer
• It is not a programming language
• It is not a computer architecture
Arduino.

(although it involves all of these things...)


So, what is the Arduino

todbot.com/blog/bionicarduino
What is Arduino?
A microcontroller board, contains on-board
power supply, USB port to communicate with PC,
and an Atmel microcontroller chip.
It simplify the process of creating any control
system by providing the standard board that can
be programmed and connected to the system
without the need to any sophisticated PCB design
and implementation.
Arduino.

It is an open source hardware, any one can


get the details of its design and modify it or
make his own one himself.
Arduino – Official Definition
Taken from the official web site
(arduino.cc):
– Arduino is an open-source electronics
prototyping platform based on flexible,
easy-to-use hardware and software.

– It's intended for artists, designers,


hobbyists, and anyone interested in
creating interactive objects or
environments.
Why Arduino?
• For whatever reason, Arduino
microcontrollers have become the de facto
standard.
– Make Magazine features many projects using
Arduino microcontrollers.
• Strives for the balance between ease of use
and usefulness.
– Programming languages seen as major obstacle.
– Arduino C is a greatly simplified version of C++.
• Inexpensive (35k retail).
Arduino boards:

UNO Mega LilyPad

Arduino BT Arduino Nano Arduino Mini


Arduino UNO:
Digital output
~: PWM. In circuit Serial
0,1: Serial port. programming

Atmel
MicroController
USB port

Power input

Analog input.
Power Supply
Arduino Program Development
• Based on C++ without 80% of the instructions.
• A handful of new commands.
• Programs are called 'sketches'.
• Sketches need two functions:
– void setup( )
– void loop( )
• setup( ) runs first and once.
• loop( ) runs over and over, until power is lost or a
new sketch is loaded.
setup()

Digunakan untuk inisialisasi variable, pin mode, penggunaan library, dan lain sebagainya.
Hanya dijalankan sekali, pada saat Arduino pertama kali dinyalakan, atau setelah reset.

loop()

Digunakan untuk menjalankan program utama dalam Arduino secara berulang terus-menerus,
hingga Arduino
dimatikan atau reset.

pinMode()

Digunakan untuk melakukan konfigurasi secara spesifik fungsi dari sebuah pin, apakah digunakan
sebagai input atau sebagai output.

Contoh penggunaan function pinMode() ialah


sebagai berikut.

• pinMode(3, INPUT) konfigurasi pin 3 Arduino sebagai pin input

• pinMode(13, OUTPUT) konfigurasi pin 13 Arduino sebagai pin output


digitalReadO

Digunakan untuk membaca nilai pin digital yang spesifik, apakah bernilai HIGH atau
LOW.
Contoh penggunaan function digitalRead() ialah sebagai berikut.

• digitalRead(O) membaca nilai digital dari pin 0 Arduino


digitalWriteO

Selain membaca nilai, ada juga function untuk menuliskan atau memberikan nilai
pada suatu
pin digital secara spesifik. Dengan function digitalWrite() memberikan nilai pin digital
yang
spesifik apakah bernilai HIGH atau LOW, dapat dilakukan. Contoh penggunaan
function
digitalWriteO ialah sebagai berikut.

• digitalWrite(13, HIGH) memberikan nilai digital HIGH pada pin 13 Arduino


delay()

Sesuai dengan namanya, function delay() digunakan untuk memberikan waktu tundaan
(dalam satuan millisecond) untuk mengerjakan satu baris program ke baris selanjutnya.
Contoh penggunaan function delay() ialah sebagai berikut.

• delay(lOOO) memberikan waktu tundaan 1000 millisecond, atau setara dengan 1 detik
sebelum melanjutkan mengerjakan perintah baris program selanjutnya

analogRead()

Selain membaca nilai digital, Arduino juga dapat digunakan untuk membaca nilai analog.
Dengan menggunakan function analogRead(), untuk membaca nilai analog melalui pin
analog. Untuk board Arduino UNO memiliki 6 channel analog, Arduino Mini dan Nano 8
channel, sedangkan Arduino Mega 10 channel, dengan resolusi 10 bit analog to digital
converter. Dengan resolusi 10 bit memungkinkan pemetaan tegangan antara 0 volt hingga 5
volt dalam nilai integer dari 0 hingga 1023. Sehingga resolusi pembacaan nilai analog ialah 5
volt dibagi 1024 unit, atau sekitar 4,9 mV per unit. Dibutuhkan sekitar 100 microsecond
untuk membaca suatu input analog, dengan kata lain tingkat pembacaan maximum nilai
analog ialah 10000 kali dalam satu detik.
Analog Reference(type)

Digunakan untuk memberikan nilai tegangan referensi untuk input analog, dengan pilihan
type yang ada antara lain.

• DEFAULT, nilai tegangan default untuk board Arduino ialah 5 volt atau 3,3 volt

• INTERNAL, sebuah referensi built-in, setara tegangan 1,1 volt pada ATmegal68
atau ATMega 328, dan 2,56 volt untuk ATMega8

• INTERNAL1V1, sebuah referensi built-in, tegangan 1,1 volt, untuk Arduino Mega

• INTERNAL2V56, sebuah referensi built-in, tegangan 2,56 volt, untuk Arduino Mega

• EXTERNAL, sebuah referensi referensi dari pin AREF, nilai tegangan berkisar antara 0 volt
hingga 5 volt
Terminology
Arduino C
• Arduino sketches are centered around the
pins on an Arduino board.
• Arduino sketches always loop.
– void loop( ) {} is equivalent to while(1) { }
• The pins can be thought of as global variables.
Digital I/0

pinMode(pin, mode)
Sets pin to either INPUT or OUTPUT
digitalRead(pin)
Reads HIGH or LOW from a pin
digitalWrite(pin, value)
Writes HIGH or LOW to a pin
Arduino Timing

• delay(ms)
– Pauses for a few milliseconds
• delayMicroseconds(us)
– Pauses for a few microseconds
• More commands:
arduino.cc/en/Reference/HomePage
Compiler Features
• Numerous sample
sketches are included in
the compiler
• Located under File,
Examples
• Once a sketch is
written, it is uploaded
by clicking on File,
Upload, or by pressing
<Ctrl> U
Arduino C is Derived from C++
 These programs blink an LED on pin 13
• avr-libc • Arduino C
#include <avr/io.h> void setup( ) {
#include <util/delay.h> pinMode(13, OUTPUT);
}
int main(void) {
while (1) { void loop( ) {
PORTB = 0x20; digitalWrite(13, HIGH);
_delay_ms(1000); delay(1000);
PORTB = 0x00; digitalWrite(13, LOW);
_delay_ms(1000); delay(1000);
} }
return 1;
}
VARIABEL

Variabel adalah kode program yang digunakan untuk


menyimpan suatu nilai pada sebuah nama. Yang biasa
digunakan diantaranya adalah Integer, Long, Boolean,
Float, Character.

int (integer)
Variabel yang paling sering digunakan dan dapat
menyimpan data sebesar 2 bytes (16 bits).

long (long)
Biasa digunakan jika nilai datanya lebih besar dari
integer. Menggunakan 4 bytes (32 bits).
boolean (boolean)
Variabel yang hanya menyimpan nila TRUE dan FALSE
saja. Hanya menggunakan 1 bit saja
float(float)
Digunakan untuk floating point pada nilai decimal.
Memory yang digunakan 4 bytes (32 bits).
char(character)
Menyimpan character berdasarkan ASCII kode (contoh:
‘A’=65). Menggunakan 1 byte (8 bits).
Tipe-tipe Data
1. Bilangan bulat (integer)  int (short int, long int, signed int, unsigned int)
2. Bilangan real presisi-tunggal  float
3. Bilangan real presisi-ganda  double
4. Karakter  char
OPERATOR MATEMATIKA
Digunakan untuk memanipulasi nilai dengan perhitungan
matematika sederhana seperti: penjumlahan,
pengurangan, sama dengan, dan sebagainya.
= (sama dengan) (contoh x=10*2 (x sekarang jadi 20))
% (persentase) (contoh 12%10 (hasilnya yaitu 2))
+ (penambahan)
– (pengurangan)
* (perkalian)
/ (pembagian)
OPERATOR PERBANDINGAN
Digunakan untuk melakukan perbandingan secara
logika.
== (sama dengan) contoh: 15 == 10 FALSE atau 15 ==
15 TRUE
!= (tidak sama dengan) contoh: 15 != 10 TRUE atau
15 != 15 FALSE
< (lebih kecil dari) contoh: 15 < 10 FALSE atau 12 <
14 TRUE
> (lebih besar dari) contoh: 15 > 19 TRUE atau 15 >
10 FALSE
STRUKTUR PENGENDALI
Program yang digunakan untuk menentukan
sebuah kondisi, dan jika kondisinya sudah
terpenuhi maka akan melaksanakan perintah
yang sudah ditentukan. Dan saat tidak
memenuhi kondisinya juga ada perintah yang
dilaksanakan oleh Arduino.

if(kondisi A)
{
Kode Perintah A
}
else if(kondisi B)
{
Kode Perintah B
}
else
{
Kode Perintah C
}
Pertama Arduino akan lihat Kondisi
A. Jika terpenuhi, maka akan
melaksanakan Kode Perintah A.
Tapi jika TIDAK, Arduino akan lihat
Kondisi B. Jika terpenuhi, maka
akan melaksanakan Kode Perintah
B.
Tapi jika TIDAK juga, maka Arduino
akan melaksanakan Kode Perintah
C.
for(int i = 0; i < #repeats; i++)
{
Kode Perintah
}
Kode diatas digunakan saat kita
ingin mengulangi kode atau nilai
dalam beberapa kali.
KODE DIGITAL
Digunakan untuk pemrograman
yang menggunakan Pin Digital
pada Arduino.
pinMode( pin, mode);
Kode diatas digunakan untuk seting
mode pin. Pin adalah nomer pin
yang akan digunakan, kalo kamu
pake Arduino Uno, pin Digitalnya
dari 0-13. dan mode sendiri bisa
berupa INPUT atau OUTPUT.
Contoh:
pinMode(13, OUTPUT); // artinya
pin 13 digunakan sebagai OUTPUT
pinMode(7, INPUT); // artinya
pin 7 digunakan sebagai INPUT
digitalRead(pin);
Kode diatas digunakan pin INPUT,
untuk membaca nilai sensor yang
ada pada pin. Dan nilainya hanya
terbatas pada 1 (TRUE), atau 0
(FALSE).
Contoh:
digitalRead(13); // artinya kode
akan membaca nilai sensor pada
pin 13
digitalWrite(pin, nilai);
Kode diatas digunakan untuk pin
OUTPUT yang sudah kita seting
apakah akan diberikan HIGH (+5V),
atau LOW (Ground).
Contoh:
digitalWrite(13, HIGH); // artinya
pin 13 kita diberi tegangan +5V
digitalWrite(13, LOW); // artinya
pin 13 kita diberi tegangan 0 /
Ground
analogWrite(pin, nilai);
Meskipun Arduino adalah
perangkat digital, tapi kita masih
bisa menggunakan fungsi
Analognya pada pin Digital
Arduino. Tapi hanya beberap pin
saja, yang biasa kita sebut PWM
(Pulse With Modulation). Pada
Arduino Uno memiliki 6 pin PWM,
yaitu: 3,5,6,9, 10, dan 11.
Dengan begini nilai yang dihasilkan
menjadi bervariasi dari 0-225, itu
setara dengan 0-5V.
Contoh:
analogWrite(3, 150); // artinya
pin 3 diberikan nilai sebesar 150
KODE ANALOG
Kode analog ini digunakan ketika
ingin menggunakan pin Analog
pada Arduino. Untuk Arduino Uno
pin Analog dari A0-A5. Dan karena
ini pin Analog maka hanya bisa kita
gunakan sebagai INPUT saja. Dan
juga tidak perlu menulis pinMode
pada void setup.
analogRead(pin);
Kode diatas digunakan untuk
membaca nilai pada sensor Analog.
Yaitu antara 0-1024.
Contoh:
analogRead(A0); // artinya kode
akan membaca nilai sensor pada
pin AO.
begin()
untuk menentukan dimensi dari lcd yang akan
di gunakan
sintaknya :
lcd.begin(cols,rows)

clear()
untuk menghapus layar LCD dan posisi kursor
di sudut kiri atas.
sintaknya :
lcd.clear()

home()
Posisi kursor di kiri atas LCD. Artinya,
menggunakan lokasi yang di keluaran teks
setelah layar. Untuk juga menghapus layar,
gunakan fungsi clear () sebagai gantinya.
sintaknya
lcd.home()

setCursor()
menentukan posisi cursor mulai penulisan
sintaknya :
lcd.setCursor(col,row)
write()
untuk menuliskan data pada LCD,misalkan
akan menuliskan data dari hasil pembacaan
serial dsb
sintaknya :
lcd.write(data)

print()
untuk menuliskan text pada LCD
sintaknya :
lcd.write("text")

cursor() dan noCursor()


Menampilkan kursor LCD: underscore (garis)
pada posisi mana karakter berikutnya akan
ditulis. dan menidaktampilkan
sintaknya :

lcd.cursor()
lcd.noCursor()
blink() dan noBlink()
Menampilkan kursor LCD berkedip.
Jika digunakan dalam kombinasi
dengan fungsi cursor(), hasilnya
akan bagus. noBlink (tidak
menampilkan)
sintaknya :
lcd.blink()
lcd.noBlink()

display() dan noDisplay()


Menyalakan pada layar LCD,
setelah itu sudah dimatikan
dengan noDisplay (). Ini akan
mengembalikan teks (dan kursor)
yang ada di layar.
sintaknya :
lcd.display()
lcd.noDisplay()
scrollDisplayLeft() dan
scrollDisplayRight()
skrol konten display satu
space dari kiri / kanan
lcd.scrollDisplayLeft()
lcd.scrollDisplayRight()

autoscroll()
noAutoscroll()
leftToRight()
rightToLeft()
createChar()
Basic Electric Circuit
• Every circuit (electric or electronic) must have
at least a power source and a load.
• The simplest circuit is a light.
• Plug in the light, and it lights up.
• Unplug it, the light goes out.
• Electricity flows from the power source,
through the load (the light) and then back to
the power source.
Putting It Together
• Complete the sketch
(program) below.
• What output will be
generated by this program?
• What if the schematic were
changed? 
Blink Sketch
void setup( ) {
Connected to Connected to
pinMode(13, OUTPUT); one end of the other end of the
} circuit circuit
void loop( ) {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}
4 LED Blink Sketch
void setup( ) { void loop( ) {
pinMode(1, OUTPUT); digitalWrite(1, HIGH);
pinMode(3, OUTPUT); delay (200);
pinMode(5, OUTPUT); digitalWrite(1, LOW);
pinMode(7, OUTPUT);
} digitalWrite(3, HIGH);
delay (200);
digitalWrite(3, LOW);

digitalWrite(5, HIGH);
delay (200);
digitalWrite(5, LOW);

digitalWrite(7, HIGH);
delay (200);
digitalWrite(7, LOW);
}
So What?
• Great. Blinking lights. Not impressed.
• Only covered output thus far.
• Can use analog inputs to detect a physical
phenomena.
Inputs
• Digital inputs will come to the Arduino as either
on or off (HIGH or LOW, respectively).
– HIGH is 5VDC.
– LOW is 0VDC.
• Analog inputs will come to the Arduino as a range
of numbers, based upon the electrical
characteristics of the circuit.
– 0 to 1023
– .0049 V per digit (4.9 mV)
– Read time is 100 microseconds (10,000 a second)
Analog Input
• A potentiometer (variable
resistor) is connected to
analog pin 0 to an Arduino.
• Values presented to pin 0
will vary depending upon
the resistance of the
potentiometer.
Analog Input-Application
• The variable resistor can be replaced with
a sensor.
• For example, a photo resistor.
– Depending upon the light level at the photo
resistor:
• Turn on a light
• Increase or decrease the brightness of an LED (or an
LED array)
• Most sensors are simply variable resistors,
but vary their resistance based on some
physical characteristic.
Sensors
1. Sensors can be both binary or a range.
2. Usually, sensors that measure a range
of values vary their resistance to reflect
their detection.
3. Arduinos can only sense voltages, not
resistances.
4. Sensors that only vary their resistances
require a circuit called a voltage divider
to provide the Arduino a voltage.
Common Sensors

• Dials on a radio are • Infrared sensor & light


simply potentiometers • Hall effect sensor and
• Temperature magnet
• Light • Ball tilt sensor (for
• Angle measuring orientation)
• Switches • Force
– did the user throw a
switch or push a button?
• Accelerometer
(measures motion and
tilt)
“Competitors”to the Arduino
• PIC controller
– Microcontroller programmed with C or assembler
• Alternatives to the Arduino line
– Pinguino – PIC controller
– MSP430 – Texas Instruments; $4.30
– Others: customs, Teensy, etc.
• Netduino
• Computers
– Raspberry Pi
– BeagleBones – TI; has computer and controller
Netduino
• Microcontroller and development tools created by
Microsoft to work with the .NET Micro Framework.
• VASTLY better development environment.
– visualmicro.com
– Other alternatives
• Differences
– Pins on a Netduino are 3.3V (not 5).
– Netduinos have a much faster processor.
– 60K of RAM (versus an Uno's 2K).
• Largely compatible with the Arduino, but it is not a drop-
in replacement (can fry it).
Raspberry Pi
• Low end computer, not a controller
• Uses Debian Linux
– Arch Linux ARM, Fedora, FreeBSD, Slackware…
• Programmed with Python
– BBC BASIC, C, Perl
• As it is a computer and not a controller, its role
in these projects is different.
• Hierarchy: computers control controllers,
controllers control hardware.
Shields
• Shields are circuit boards that plug into the
top of an Arduino.
• They extend the capabilities of an Arduino.
• Examples:
– Ethernet
– GPS
– Motor
– Prototype
• shieldlist.org
Function timer pada arduino :
• delay(), digunakan untuk tundaan eksekusi baris program
selanjutnya dalam millisecond
• delayMicroseconds(), digunakan untuk tundaan eksekusi baris
program selanjutnya dalam microseconds
• millis(), digunakan sebagai pewaktu internal yang (bila tanpa
terminate bersyarat) akan terus berjalan hingga terjadi overflow
(kembali ke nilai 0) dengan unit dalam millisecond, untuk board
Arduino Uno nilai millis() akan terus berjalan hingga sekitar 50
hari
• micros(), digunakan sebagai pewaktu internal yang (bila tanpa
terminate bersyarat) akan terus berjalan hingga terjadi overflow
(kembali ke nilai 0) dengan unit dalam microsecond, untuk board
Arduino Uno nilai millis() akan terus berjalan hingga sekitar 70
jam

Potrebbero piacerti anche