จำเป็นต้องประมวลผลข้อความ ฉันจะไม่ปฏิเสธความช่วยเหลือ :)
ห้องสมุดควบคุมแรงดันไฟฟ้า Arduino
คลาสคือเทมเพลตและใช้ 1 พารามิเตอร์: uint8_t _id = 0 พารามิเตอร์แรกที่ไม่ได้ใช้ร่วมกันจะสื่อถึงค่า uint8_t อย่างโปร่งใสไปยังขวดที่เกิดขึ้นซึ่งช่วยให้คุณสามารถระบุคลาสเมื่อใช้สำเนาของคลาสหลายชุดต่อขวดหนึ่ง ตัวอย่างเช่นการอ่าน PIN ADC:
VoltageControl < A1 > Volt1 ;
VoltageControl < A2 > Volt2 ;
//...
Volt1 . SetRequest ( OnRequestVoltage );
Volt2 . SetRequest ( OnRequestVoltage );
//...
int32_t OnRequestVoltage ( uint8_t id )
{
return analogRead ( id );
}เพื่อความสะดวกชั้นเรียนมีนักออกแบบสองคน
` VoltageControl ()` นักออกแบบชั้นเรียนที่ไม่มีพารามิเตอร์ เมื่อใช้งานจะต้องถ่ายทอดการตั้งค่าผ่านวิธี 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 )ผู้ออกแบบชั้นเรียนระบุการตั้งค่าทั้งหมด
SetResponse() , ค่าสัมประสิทธิ์การแปลของค่า ACP, แรงดันไฟฟ้าต่ำสุดที่อนุญาตสูงสุด int32_t OnRequestVoltage ( uint8_t id ) เมื่อคลาสมีความจำเป็นในการอ่านค่าของ ADC ฟังก์ชั่นขวดนี้จะเกิดขึ้น คุณสามารถดำเนินการหรือรวมวิธีการอ่าน ADC ( analogRead() ) ทำงานโดยตรงกับการลงทะเบียนหรืออ่าน ADC ภายนอกสำหรับยางที่มีอยู่
void OnResponseVoltage ( uint8_t id , int32_t value , int8_t state )เมื่อคุณต้องการแจ้งโปรแกรมหลักเกี่ยวกับการเปลี่ยนแปลงฟังก์ชั่นถังนี้จะเป็นการแลกเปลี่ยน คุณสามารถตัดสินใจเกี่ยวกับการแตกแขนงของรหัสและเติมเต็มทุกสิ่งที่คุณต้องการที่นี่
GetValid() void SetRequest ( request_t callback , uint16_t interval )วิธีการระบุฟังก์ชั่นถังของการอ่าน ADC
void SetResponse ( response_t callback , bool once = false) วิธีการระบุการวัดแรงดันไฟฟ้าของผลการวัดแรงดันไฟฟ้า ถ้า once = true การเรียกอัตราการใช้งานของฟังก์ชันจะเกิดขึ้นเฉพาะเมื่อมีการเปลี่ยนแปลงเงื่อนไข (ลดลงเพิ่มแรงดันปกติปกติ) มิฉะนั้นความท้าทายจะเกิดขึ้นในการวัด ADC แต่ละครั้ง
void SetCoefficient ( uint32_t coefficient )วิธีการกำหนดค่าสัมประสิทธิ์การแปลของค่า ACP เป็นไมโครเวฟ
void SetMin ( uint32_t vmin )วิธีการกำหนดแรงดันไฟฟ้าขั้นต่ำที่อนุญาต
void SetMax ( uint32_t vmax )วิธีการกำหนดแรงดันไฟฟ้าสูงสุดที่อนุญาต
void SetStart ()วิธีการตั้งค่าสถานะเริ่มต้นของคลาส
void SetStop ()วิธีการตั้งค่าสถานะหยุดคลาส
int8_t GetValid ()วิธีการตรวจสอบแรงดันไฟฟ้าและส่งคืนผลลัพธ์ในรูปแบบของตัวเลข
-1 น้อยกว่าที่อนุญาต 0 - ในกรอบของการอนุญาต, 1 - อนุญาตมากขึ้น int32_t GetVoltage ()วิธีการส่งคืนแรงดันไฟฟ้าปัจจุบัน
void Processing ( uint32_t currentTime = millis ()) วิธีการประมวลผลจำนวน ในกรณีที่ loop ของคุณมีคำจำกัดความของเวลาปัจจุบันขอแนะนำให้ผ่านเวลานี้เป็นพารามิเตอร์
static inline uint32_t GetCoefficient ( float vref , float r1 = 0 , float r2 = 1 , float quantization = 1024 ) ยูทิลิตี้ที่ช่วยคำนวณค่าสัมประสิทธิ์สำหรับวิธี SetCoefficient() หากไม่ได้ใช้ตัวแบ่งจะมีการระบุ VREF เท่านั้น