Analog In, Out Serial
Contoh ini menunjukkan kepada Anda cara membaca pin input analog, dengan memetakan hasilnya dari 0 hingga 255, menggunakan hasil itu untuk mengatur modulasi lebar pulsa (PWM) pin output untuk meredupkan atau mencerahkan LED dan mencetak nilainya pada serial monitor dari Software Arduino (IDE).
Perangkat yang disiapkan
- Arduino atau Papan Genuino
- Potensiometer
- LED merah
- Resistor 220 ohm
Sirkuit
Hubungkan pin satu dari potensio Anda ke 5V, pin tengah ke pin analog 0 dan pin yang tersisa ke ground. Selanjutnya, sambungkan resistor pembatas arus 220 ohm ke pin Digital 9, dengan LED secara seri. Kaki positif yang panjang (anoda) dari LED harus dihubungkan ke output dari resistor, dengan kaki negatif yang lebih pendek (katoda) terhubung ke ground.
Skema
Kode
Dalam sketsa di bawah, setelah mendeklarasikan dua tugas pin (analog 0 untuk potensiometer dan Pin Digital 9 untuk LED) dan dua variabel, sensorValue
dan outputValue
, satu-satunya hal yang Anda lakukan dalam setup()
fungsi ini adalah memulai komunikasi serial.
Selanjutnya, di loop utama, sensorValue
ditugaskan untuk menyimpan nilai analog yang dibaca dari potensiometer.
Arduino memiliki analogRead
range 0 hingga 1023, dan analogWrite
range dari 0 hingga 255, oleh karena itu data dari potensiometer perlu diubah agar sesuai dengan range yang lebih kecil sebelum digunakan untuk meredupkan LED.
Untuk mengonversi nilai ini, gunakan fungsi yang disebut map() :
outputValue = map(sensorValue, 0, 1023, 0, 255);
outputValue
ditetapkan untuk menyamai nilai skala dari potensiometer. map()
menerima lima argumen: Nilai yang akan dipetakan, rentang rendah dan nilai tinggi dari data input, dan nilai rendah dan tinggi untuk data yang akan dipetakan ulang. Dalam hal ini, data sensor dipetakan ke bawah dari kisaran aslinya dari 0 hingga 1023 menjadi 0 hingga 255.
Data sensor yang baru dipetakan kemudian dikeluarkan ke analogOutPin
peredupan atau kecerahan LED saat potensiometer diputar. Terakhir, nilai sensor dan yang diskalakan dikirim ke jendela monitor serial Arduino Software (IDE), dalam aliran data yang stabil.
/*
Analog input, analog output, serial outputReads an analog input pin, maps the result to a range from 0 to 255
and uses the result to set the pulsewidth modulation (PWM) of an output pin.
Also prints the results to the serial monitor.The circuit:
* potentiometer connected to analog pin 0.
Center pin of the potentiometer goes to the analog pin.
side pins of the potentiometer go to +5V and ground
* LED connected from digital pin 9 to groundcreated 29 Dec. 2008
modified 9 Apr 2012
by Tom IgoeThis example code is in the public domain.
*/
// These constants won't change. They're used to give names
// to the pins used
const int analogInPin = A0; // Analog input pin that the potentiometer is attached to
const int analogOutPin = 9; // Analog output pin that the LED is attached toint sensorValue = 0; // value read from the pot
int outputValue = 0; // value output to the PWM (analog out)void setup() {
// initialize serial communications at 9600 bps
Serial.begin(9600);
}void loop() {
// change the analog out value
// read the analog in value
sensorValue = analogRead(analogInPin);
// map it to the range of the analog out
outputValue = map(sensorValue, 0, 1023, 0, 255);
analogWrite(analogOutPin, outputValue);// print the results to the serial monitor
Serial.print("sensor = ");
Serial.print(sensorValue);
Serial.print("\t output = ");
Serial.println(outputValue);
// wait 2 milliseconds before the next loop
// for the analog-to-digital converter to settle
// after the last reading:
delay(2);
}
Posting Komentar
Posting Komentar