Archive for the ‘Analog Input’ Category

Function analogWrite() pada Arduino Programming Language

Wednesday, February 24th, 2021

Deskripsi

Menuliskan nilai analog pada pin PWM dapat digunakan untuk mengatur terang gelap LED ataupun kecepatan motor. Saat fungsi ini dijalankan maka signal berbentuk gelombang kotak akan dibangkitkan pada pin PWM Arduino Board dengan duty cycle tertentu. Signal ini akan terus muncul hingga perintah analogWrite() selanjutnya atau digitalRead() atau digitalWrite() pada pin yang sama dieksekusi lagi.

Berikut ini adalah tabel pin PWM vs PWM Frequency vs jenis Arduino Board

* Bukan hanya PWM saja melainkan pada bagian yang bertanda ini yaitu MKR Boards, MKR1000 Wifi, Zero, Nano 33 IOT akan membangkitkan output yang betul-betul analog saat analogWrite() dilakukan pada pin DAC0 (A0).

** Bukan hanya PWM saja melainkan pada bagian yang bertanda ini yaitu Arduino Due akan membangkitkan output yang betul-betul analog saat analogWrite() dilakukan pada pin DAC0 (A0) dan DAC1 (A1).

Anda tidak perlu menjalankan fungsi pinMode() karena pin tersebut akan otomatis berfungsi sebagai output. Fungsi ini juga tidak akan berpengaruh pada pin Analog input ataupun fungsi analogRead ()

PWM Output pada pin 3 Arduino Uno

Syntax

analogWrite(pin, value)

Parameters

pin: Nomor pin dari Arduino Board dengan tipe data int

value: Duty cycle dengan range 0 – 255 di mana 0 adalah OFF dan 255 adalah ON. Tipe data yang digunakan adalah int

Returns

Tidak ada returns

Contoh Program

Atur kecerahan LED berdasarkan nilai yang diperoleh dari potentiometer.

int ledPin = 9;      // LED terhubung pada digital pin 9
int analogPin = 3;   // potentiometer terhubung pada analog pin 3
int val = 0;         // variable untuk menyimpan hasil pembacaan 
                     // pin analog

void setup() {
  pinMode(ledPin, OUTPUT);  // atur  pin sebagai output
}

void loop() {
  val = analogRead(analogPin);  // baca pin analog dan simpan di 
                                // variabel val
  analogWrite(ledPin, val / 4); // Nilai yang dibaca dari analog 
                                // pin dengan range 0 - 1023
                                // dikonversi menjadi 0 - 255 
                                // dengan dibagi 4
}

Catatan dan Peringatan

Output PWM yang dibangkitkan pada pin 5 atau pin 6 mungkin saja dapat memiliki nilai yang lebih besar dari duty cycle yang diharapkan akibat adanya fungsi milis () atau delay() di mana menggunakan timer yang sama dengan output PWM. Hal ini dapat mengakibatkan pada saat nilai duty cycle 0 tidak membuat signal PWM betul-betul OFF pada pin 5 dan 6

Terjemahan dan edit dari https://www.arduino.cc/reference/en/language/functions/analog-io/analogwrite/

DELTA ELECTRONIC

Paulus Andi Nalwan, ST

Function analogReference() pada Arduino Programming Language

Tuesday, February 23rd, 2021

Deskripsi

Merupakan fungsi untuk mengatur tegangan referensi dari analog input dengan opsi-opsi sebagai berikut:

Arduino AVR Boards (Uno, Mega, Leonardo, etc.)

  • DEFAULT:  Tegangan 5V untuk Arduino Board dengan VCC 5V dan 3.3V untuk Arduino Board dengan VCC 3.3V
  • INTERNAL: Menggunakan tegangan referensi internal yaitu 1.1V untuk ATMega168 dan ATMega328P dan 2.56V untuk ATMega32U4 dan ATMega8 (tidak berlaku untuk Arduino Mega)
  • INTERNAL1V1: Tegangan referensi 1.1V dan hanya berlaku untuk Arduino Mega
  • INTERNAL2V56: Tegangan referensi 2.56V dan hanya berlaku untuk Arduino Mega
  • EXTERNAL: Tergantung tegangan yang terhubung pada VREF yaitu antara 0 – 5V

Arduino SAMD Boards (Zero, etc.)

  • AR_DEFAULT: Tegangan 3.3V sebagai tegangan referensi
  • AR_INTERNAL: Menggunakan tegangan referensi built in 2.23V
  • AR_INTERNAL1V0: Menggunakan tegangan referensi built in 1V
  • AR_INTERNAL1V65: Menggunakan tegangan referensi built in 1.65V
  • AR_INTERNAL2V23: Menggunakan tegangan referensi built in 2.23V
  • AR_EXTERNAL: Tergantung tegangan yang terhubung pada VREF

Arduino megaAVR Boards (Uno WiFi Rev2)

  • DEFAULT: Tegangan 0.55V sebagai tegangan referensi
  • INTERNAL: Tegangan 0.55V sebagai tegangan referensi
  • VDD: Vdd dari ATmega4809. 5V pada Uno WiFi Rev2
  • INTERNAL0V55: Tegangan 0.55V sebagai tegangan referensi
  • INTERNAL1V1: Tegangan 1.1V sebagai tegangan referensi
  • INTERNAL1V5: Tegangan 1.5V sebagai tegangan referensi
  • INTERNAL2V5: Tegangan 2.5V sebagai tegangan referensi
  • INTERNAL4V3: Tegangan 4.3V sebagai tegangan referensi
  • EXTERNAL: Tergantung tegangan yang terhubung pada VREF

Arduino SAM Boards (Due)

  • AR_DEFAULT: Tegangan referensi 3.3V. Hanya berlaku untuk Arduino Due

Arduino mbed-enabled Boards (hanya pada Nano 33 BLE ):

  • AR_VDD: tegangan referensi standard 3.3V
  • AR_INTERNAL: Tegangan referensi built in 0.6V
  • AR_INTERNAL1V2: Tegangan refernsi 1.2V (Tegangan refernsi 0.6V dengan penguatan 2x)
  • AR_INTERNAL2V4: Tegangan refernsi 2.4V (Tegangan refernsi 0.6V dengan penguatan 4x)

Syntax

analogReference(type)

Parameters

type: Parameter ini berupa opsi-opsi yang ada di deskripsi

Returns

Tidak ada return

Contoh Program

analogReference(INTERNAL);              //mengatur tegangan referensi 1.1V untuk ATMega328

Catatan dan Peringatan

Jangan menggunakan tegangan di luar 0 – 5V di pin AREF dan pastikan telah dijalankan instruksi analogReference(EXTERNAL) agar pin AREF dapat digunakan.

Terjemahan dan edit dari https://www.arduino.cc/reference/en/language/functions/analog-io/analogreference/

DELTA ELECTRONIC

Paulus Andi Nalwan, ST

Function analogRead() pada Arduino Programming Language

Tuesday, February 23rd, 2021

Deskripsi

Merupakan fungsi untuk membaca tegangan dari pin analog Arduino Board. Arduino Board memiliki multichannel 10 bit ADC dengan tegangan antara 0 – 5V atau 0-3.3V untuk VCC = 3.3V. Sebagai contoh pada Arduino UNO dengan analog input 0 – 5V maka akan diperoleh resolusi sebesar 5V / 1024 = 4.9mV.  Untuk Arduino Board yang lain, terdapat perbedaan tegangan maksimum, pin yang digunakan maupun resolusinya. Hal ini dapat dilihat pada tabel dibawah ini.

** Resolusi standard dari analog input adalah 10 bit, namun dengan instruksi analogReadResolution() dapat diubah menjadi 12 bit

Range input maksimum dapat diatur dengan fungsi analogReference() dan resolusi dapat diubah dengan fungsi analogReadResolution(), namun hanya dapat dilakukan pada Arduino Zero, Due atau MKR Family Boards.

Untuk ATMega yang menjadi basis Arduino UNO, Nano, Mini dan Mega dibutuhkan 100uS untuk membaca analog input. Oleh karena itu dalam 1 detik dapat dilakukan 10.000x pembacaan.

Potensiometer terhubung pada pin analog 3

Syntax

analogRead(pin)

Parameters

pin: A0 – A5 untuk kebanyakan Arduino Board, A0 – A6 untuk MKR Boards dan A0 – A7 untuk Mini dan Nano dan A0 – A15 untuk Arduino Mega

Returns

Berupa data analog yang terbaca dari pin yaitu 0 – 1023 untuk 10 bit dan 0 – 4095 untuk 12 bit. Tipe data ini adalah int

Contoh Program

Program untuk membaca tegangan analog dan mengirimkan ke serial port

int analogPin = A3; // potentiometer terhubung pada pin analog 3 di bagian 
                    // tengah dan di kaki 1 ke VCC serta kaki 3 ke GND 
                    // (lihat gambar di atas)
int val = 0;  // variable untuk menyimpan nilai yang dibaca

void setup() {
  Serial.begin(9600);           //  inisial serial
}

void loop() {
  val = analogRead(analogPin);  // baca input pin
  Serial.println(val);          // kirim nilai ke serial port
}

Catatan dan Peringatan

Apabila analog input ini tidak terhubung dengan apapun maka nilai yang diperoleh akan tidak menentu atau acak

Terjemahan dan edit dari https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/

DELTA ELECTRONIC

Paulus Andi Nalwan, ST