Diperlukan untuk memproses teks. Saya tidak akan menolak bantuan :)
Perpustakaan Kontrol Tegangan Arduino.
Kelasnya adalah templat dan menggunakan 1 parameter: uint8_t _id = 0 . Parameter non -kompulsi pertama secara transparan menyampaikan nilai uint8_t ke labu yang disebabkan, yang memungkinkan Anda mengidentifikasi kelas saat menggunakan beberapa salinan kelas per satu labu. Misalnya Pin Reading ADC:
VoltageControl < A1 > Volt1 ;
VoltageControl < A2 > Volt2 ;
//...
Volt1 . SetRequest ( OnRequestVoltage );
Volt2 . SetRequest ( OnRequestVoltage );
//...
int32_t OnRequestVoltage ( uint8_t id )
{
return analogRead ( id );
}Untuk kenyamanan, kelas memiliki dua desainer.
` VoltageControl ()` Perancang kelas tanpa parameter. Saat digunakan, diperlukan untuk menyampaikan pengaturan melalui metode Set .
VoltageControl ( request_t callback_req , uint16_t interval_req , response_t callback_res , bool once , uint32_t coefficient , int32_t vmin , int32_t vmax )Perancang kelas yang menunjukkan semua pengaturan.
SetResponse() , koefisien penerjemahan dari nilai ACP, tegangan minimum yang diizinkan, tegangan maksimum yang diizinkan. int32_t OnRequestVoltage ( uint8_t id ) Ketika kelas diperlukan untuk membaca nilai ADC, fungsi flask ini akan disebabkan. Anda dapat melakukan atau terintegrasi metode membaca ADC ( analogRead() ), langsung bekerja dengan register atau membaca ADC eksternal untuk ban yang tersedia.
void OnResponseVoltage ( uint8_t id , int32_t value , int8_t state )Ketika Anda perlu memberi tahu program utama tentang perubahan, fungsi tangki ini akan menjadi pertukaran. Anda dapat memutuskan percabangan kode dan memenuhi semua yang Anda butuhkan di sini.
GetValid() . void SetRequest ( request_t callback , uint16_t interval )Metode ini menunjukkan fungsi tangki membaca ADC.
void SetResponse ( response_t callback , bool once = false) Metode ini menunjukkan pengukuran tegangan hasil pengukuran tegangan. Jika once = true , maka panggilan laju fungsi flab hanya akan terjadi ketika kondisi diubah (dikurangi, meningkat, tegangan normal), jika tidak tantangan akan terjadi pada setiap pengukuran ADC.
void SetCoefficient ( uint32_t coefficient )Metode ini menentukan koefisien terjemahan nilai ACP ke gelombang mikro.
void SetMin ( uint32_t vmin )Metode ini menentukan tegangan minimum yang diijinkan.
void SetMax ( uint32_t vmax )Metode ini menentukan tegangan maksimum yang diizinkan.
void SetStart ()Metode ini mengatur bendera awal kelas.
void SetStop ()Metode ini mengatur bendera berhenti kelas.
int8_t GetValid ()Metode memeriksa tegangan dan mengembalikan hasilnya dalam bentuk angka.
-1 kurang dari diizinkan, 0 - Dalam kerangka yang diizinkan, 1 - lebih diizinkan. int32_t GetVoltage ()Metode ini mengembalikan tegangan arus.
void Processing ( uint32_t currentTime = millis ()) Metode pemrosesan angka. Jika loop Anda memiliki definisi waktu saat ini, lebih disarankan untuk melewati waktu ini sebagai parameter.
static inline uint32_t GetCoefficient ( float vref , float r1 = 0 , float r2 = 1 , float quantization = 1024 ) Utilitas yang membantu menghitung koefisien untuk metode SetCoefficient() . Jika pembagi tidak digunakan, maka hanya VREF yang diindikasikan.