Jumat, 30 Desember 2016

MENGATUR TERANG LED DENGAN POTENSIO (ANALOG INPUT ARDUINO)

Pelajaran selanjutnya dari arduino adalah analog input. Masing-masing arduino memiliki analog pin dan digital pin yang jumlahnya tergantung dari jenis arduino itu sendiri. Misalnya Arduino Uno memiliki 6 pin analog yang di urut dari A0 sampai A5.

Kita dapat lihat disisi kiri bawah tertulis A0 dan berurut kebawahnya sampai A5. Fungsi dari input analog ini untuk membaca yegangan secara linier. Dari 0 sampai 5 volt yang di konversi oleh 8 bit data menjadi 0 sampai 1023.
2^8 (2 pangkat 8).

Kita bisa juga menjadikan nilai tegangan ini sebagai syarat dari logika program yang kita buat. Misalnya lakukan sesuatu jika teganganya melebihi 3 volt. Atau if (A0 > 613), atau apa saja yang kita inginkan.



Pada materi ini kita manfaatkan analog input sebagai pengatur intensitas cahaya LED pada pin PWM arduino. Pin PWM apaan tuh Uda??? PWM singkatan dari Pulse Width Modulation. Jadi lebar pulsa tergantung tegangan yang di baca oleh analog pin.

Analogi nya seperti gambar di bawah ini

Pin PWM berada pada pin digital. dan tidak semua pin adalah pin PWM. Hanya pin dengan tanda ~ yang support PWM. Kalau kita lihat pada gamba arduino Uno di atas, pin PWM nya adalah pin 3, 5, 6, 9, 10 dan 11.









Yuk kita coba tulis sketchnya.

const int potensioPin = A0;    // potensioPin adalah A0
const int LEDPin = 9;            // LEDpin adalah 9

int nilaiPotensio = 0;              //nilaipotensio = 0
int nilaiLED = 0;                    // nilaiLED = 0

void setup() {
  Serial.begin(9600);              //inisialisasi serial komunikasi pada 9600 bps
}

void loop()
{
  nilaiPotensio = analogRead(potensioPin);           // nilaiPotensio diambil dari pembacaan potensioPin
  nilaiLED = map(nilaiPotensio, 0, 1023, 0, 255); //mapping di bahas di bawah
  analogWrite(LEDPin, nilaiLED);                         // menyalakan LEDPin sesuai dengan nilaiLED
  delay(20);                                                             // memberi jeda arduino melakukan proses di atas
}


                                                               Skema rangkaian
Kupas lagi yuk....

const int potensioPin = A0; adalah penetapan nilai potensioPin adalah A0, atau dengan kata lain pin A0 itu kita robah namanya menjadi potensioPin, yang selanjutnya kita pakai untuk memudahkan kita dalam mengindentifikasi program yang akan kita sketch.
const int LEDPin = 9; Ini sama seperti diatas.
int nilaiPotensio = 0; nilaiPotensio di beri 0 pada saat pertama kali menyalakan arduino dan dapat di robah saat proses looping program
int nilaiLED = 0; Sama seperti di atas.

Serial.begin(9600); Untuk melakukan pembacaan tegangan diatas kita memerlukan komunikasi serial dan harus mengaktifkannya dengan cara ini. Baud rate dapat di atur pada 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, or 115200. 

nilaiPotensio = analogRead(potensioPin); nilaiPotensio di dapat dari membaca potensioPin secara analog. Maksudnya secara analog adalah nilainya linier dari 0 volt sampai 5 volt. 0 sampai 5 volt tersebut langsung di konversikan ke bilangan biner 2 ^8 sehingga nilainya berada dari 0 sampai 1023 atau 1024 tingkat resolusi.
nilaiLED = map(nilaiPotensio, 0, 1023, 0, 255); nilai tadi itu di mapping lagi karna output PWM hanya 6 bit atau 2^6 = 256 tingkat resolusi. Jadi mapping berguna mempetakan 2^8 dengan 2^6.
Aturan penulisan mapping ini adalah

map(int, input min, input max, output min, output max)

Maksud int di atas adalah angka yang dapat berobah setelah proses yang sudah kita namai tadi. Dalam hal ini int yang di maksud nilaiPotensio yang nilai awalnya 0 disesuaikan dengan nilai yang terbaca oleh potensioPin. Maka nilainya sekarang adalah sebesar nilai potensioPin.

Mapping ini tidak mutlak kok seperti Uda buat. Bisa saja di robah.
Coba deh kalau mappingnya di robah menjadi map(nilaiPotensio, 500, 1023, 0, 255); apa jadinya ya. praktekin sendiri deh
Begitulah kira-kira. hehehe....

analogWrite(LEDPin, nilaiLED); Ini dia hasil dari proses pembacaan tegangan, konversi ke 2^8, di mapping ke 2^6, maka jadilah LEDpin ini cahayanya sesuai nilai potensionya.

Demikian dulu deh belajar analog input arduinonya. Kalau ada pertanyaan silahkan isi kolom di bawah, Uda akan dengan senang hati menjawab


1 komentar:

ELEKTRO mengatakan...

Videonya ada ngk bro