Analog In, Out Serial

Posting Komentar

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 output

Reads 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 ground

created 29 Dec. 2008
modified 9 Apr 2012
by Tom Igoe

This 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 to

int 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() {
  // read the analog in value
  sensorValue = analogRead(analogInPin);
  // map it to the range of the analog out
  outputValue = map(sensorValue, 0, 1023, 0, 255);

  // change the analog out value
  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);
}


Related Posts

Posting Komentar

Subscribe Our Newsletter