cuốn sách gpt4 ai đã làm

Làm thế nào để viết một hàm cho nhiều chân analog? (Arduino)

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 11:41:44 hai mươi bốn 4
mua khóa gpt4 Nike

Vì vậy, tôi đang viết chức năng nhỏ này cho một số chiếc kim nồi. Cái nồi chỉ gửi một giá trị khi nó quay, khi nó ở trạng thái nghỉ, nó không gửi gì cả. Đó là cách tôi muốn nó hoạt động.

Nó hoạt động tốt chỉ với một kim.

Tôi đang đi được một nửa chặng đường mà nó hoạt động với nhiều chân. Vì vậy, nếu tôi gọi nó hai lần với hai chân trong vòng lặp, tôi sẽ nhận được giá trị chính xác trên cả hai chân. Nhưng tôi đã mất chức năng của câu lệnh if. Về cơ bản tôi không thể tìm ra nửa sau. Ai đó đã đề xuất sử dụng một mảng, tôi chỉ không biết phải tiếp tục như thế nào.

gợi ý? Cảm ơn.

    chậu byte[2] = {A0, A2};


int LastPotVal = 0;


thiết lập vô hiệu () {
Serial.begin(9600);

}


vòng lặp trống () {

// lấy mã pin ra khỏi mảng
rePot(chậu[0]);
rePot(chậu[1]);
độ trễ(10);

}

void rePot(const int potPin){


// có thể có vấn đề ở đâu đó quanh đây...


int potThresh = 2;
int potFinal = 0;
int potVal = 0;

// thiết lập và ánh xạ potVal

potVal = (analogRead(potPin));
potVal = map(potVal, 0, 664, 0, 200);

if(abs(potVal - LastPotVal) >= potThresh){

potFinal = (potVal/2);
Serial.println(potFinal);

LastPotVal = potVal;



} // kết thúc câu lệnh if

} // kết thúc rePot

câu trả lời hay nhất

Điều này sử dụng struct để quản lý một chiết áp và dữ liệu liên quan đến nó (chân cắm của nó, lần đọc cuối cùng, ngưỡng, v.v.). Sau đó,rePot() Hàm đã được thay đổi để lấy một trong các cấu trúc này làm đầu vào, thay vì chỉ số pin.

cấu trúc nồi {
chân byte;
ngưỡng int;
int LastRead;
int hiện tạiĐọc;
};

// xác định một mảng gồm 2 Pot, một có chân A0 và ngưỡng 2,
// khác với chân A2 và ngưỡng 3. Mọi thứ khác đều tự động
// khởi tạo là 0 (tức là LastReading, currentReading).
// các trường được nhập sẽ xác định biến nào chúng khởi tạo, vì vậy
// {A1, 4, 5} sẽ là pin = A1, ngưỡng = 4 và LastReading = 5
struct Chậu chậu[] = { {A0, 2}, {A2, 3} };

void rePot(struct Pot * pot) {
đọc int = map(analogRead(pot->pin), 0, 664, 0, 200);

if(abs(đọc - pot->lastReading) >= pot->threshold) {
pot->currentReading = (đọc/2);
Serial.println(pot->currentReading);
pot->lastReading = đọc;
}
}

thiết lập vô hiệu () {
Serial.begin(9600);
}

vòng lặp trống () {
rePot(&pots[0]);
rePot(&pots[1]);
độ trễ(10);
}

Một cách tiếp cận hơi khác một chút đối với vấn đề này là rePot() Thay đổi thành một hàm lấy toàn bộ mảng làm đầu vào, sau đó chỉ cập nhật toàn bộ mảng. Như thế này:

void readAllThePots(struct Pot * pot, int potCount) {
for(int i = 0; i < potCount; i++) {
đọc int = map(analogRead(pot[i].pin), 0, 664, 0, 200);

if(abs(reading - pot[i].lastReading) >= pot[i].threshold) {
pot[i].currentReading = (đọc/2);
Serial.println(pot[i].currentReading);
pot[i].lastReading = đọc;
}
}
}

vòng lặp trống () {
readAllThePots(chậu, 2);
độ trễ(10);
}

Làm thế nào để viết một hàm cho nhiều chân analog? (Arduino), chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/21116241/

hai mươi bốn 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress