Menukar Analog ke Digital (Analog Read Serial) - Asas Arduino

Cuba Instrumen Kami Untuk Menghapuskan Masalah





Dalam asas-asas Arduino ini, kami cuba memahami prosedur pelaksanaan kod di mana isyarat analog luaran dimasukkan ke input analog Arduino dan diterjemahkan atau ditukar menjadi bacaan digital yang sepadan. Di sini kita menggunakan rintangan berubah dalam bentuk pot sebagai sumber isyarat analog.

Siri Baca Analog

Dalam contoh ini kita mempelajari kaedah membaca input analog dari peranti luaran seperti potensiometer, yang merupakan alat elektro-mekanikal yang direka untuk melaksanakan rintangan yang berbeza-beza dalam litar melalui operasi manual.



Arduino dapat digunakan untuk mengukur besarnya voltan yang keluar dari potensiometer untuk membaca dan mengenal pasti rintangannya yang berbeza-beza. Ini dapat dilakukan dengan memasukkan voltan ke port input analog Arduino sebagai nilai analog.

Di sini kita akan melihat bagaimana perkara di atas dikuatkuasakan setelah membuat komunikasi bersiri di seluruh Arduino dan komputer yang dipautkan.



Diperlukan Perkakasan

Lembaga Arduino

Potensiometer 10-kilohm

Operasi Litar

Seperti yang digambarkan dalam rajah di atas, sambungkan tiga wayar yang keluar dari periuk ke port Arduino anda.

Kawat dari salah satu hujung luar periuk ditugaskan dengan tanah atau garis negatif papan.

Sambungan hujung luar ekstrem percuma yang lain disambungkan dengan + 5V papan.

Yang tersisa adalah plumbum tengah panci, yang ditamatkan ke input analog papan Arduino.

Apabila poros periuk diputar, rintangan melintasi plumbum tengah dan terminal luar beralih dari lebih tinggi ke bawah dan sebaliknya bergantung pada sisi mana lengan gelangsar semakin dekat.

Contohnya apabila lengan gelangsar diputar ke arah plumbum + 5V, plumbum tengah mendekati 5V dan cenderung memperoleh keseluruhan nilai ketika menyentuh plumbum yang ditentukan 5V. Begitu juga apabila poros gelangsar digerakkan ke arah timbal periuk tanah, plumbum tengah cenderung mencapai potensi sifar.

Voltan bekalan yang berubah secara linear di atas plumbum tengah periuk dibaca oleh input analog arduino untuk menafsirkannya menjadi rintangan periuk yang berbeza-beza.

Arduino merangkumi litar penukar analog-ke-digital dalaman yang secara efektif menafsirkan pergerakan periuk di atas dan mengubahnya menjadi nombor antara 0 dan 1023.

Kedudukan tertentu di atas poros pot menghasilkan nombor berkadar antara 0 dan 1023 yang diterjemahkan oleh Arduino, dan untuk nilai akhir 5V dan voltan sifar, tafsirannya jelas 0 dan 1023.

Dalam program yang disebut, fungsi pengaturan hanya perlu dipicu untuk memulai komunikasi bersiri, laju 9600 bit data sesaat, di papan Arduino dan komputer anda.

Perintah yang diharapkan adalah dalam bentuk:

Serial.begin (9600)

Selepas itu, dalam gelung utama kod anda, kami menerapkan pemboleh ubah untuk memperbaiki nilai rintangan (yang akan dibincangkan antara 0 dan 1023, hanya sesuai untuk jenis data int) yang diterima dari petunjuk pot:

int sensorValue = analogRead (A0)

Sebagai kesimpulan, cetak maklumat ini ke tetingkap bersiri anda sebagai nilai perpuluhan (DEC). Anda boleh menggunakan perintah Serial.println () untuk melaksanakannya pada baris terakhir kod:

Serial.println (sensorValue, DEC)

Selepas ini, setiap kali Serial Monitor dimulakan dalam domain pengembangan Arduino (ini dilakukan dengan mengklik butang yang berada tepat di sebelah kanan butang 'Upload' di tajuk program).

kita akan melihat rangkaian digit yang konsisten berjalan dari 0-1023, sesuai dengan kedudukan putaran poros periuk yang berbeza-beza.

Sekiranya kita menghentikan putaran poros periuk pada beberapa saat, nombor sekejap yang sesuai akan dipaparkan di layar Arduino, ini akan berubah sekali lagi secara berkadar ketika kita terus mengubah posisi poros periuk.

Kod tersebut

/ *
AnalogReadSerial
Membaca input analog pada pin 0, mencetak hasilnya ke monitor bersiri.
Pasang pin tengah potensiometer ke pin A0, dan pin luar ke + 5V dan tanah.

Contoh kod ini berada di domain awam.
* /

// rutin persediaan berjalan sekali apabila anda menekan semula:
batal persediaan () {
// memulakan komunikasi bersiri pada 9600 bit sesaat:
Serial.begin (9600)
}

// rutin gelung berulang-ulang kali selamanya:
gelung kosong () {
// baca input pada pin analog 0:
int sensorValue = analogRead (A0)
// cetak nilai yang anda baca:
Serial.println (sensorValue)
kelewatan (1) // kelewatan di antara bacaan untuk kestabilan
}




Sebelumnya: Memantau Keadaan Suis (Siri Baca Digital) - Asas Arduino Seterusnya: Litar Pengatur Voltan Boleh Diselaraskan 1.25V hingga 120V