มีวิธีทำให้ค่าที่ได้มันไม่แกว่งไปแกว่งมาไหมครับ
void sendSoilValue() {
sensorValue = analogRead(A0);
percentageHumididy = map(sensorValue, 0, 1024, 0, 100);
Blynk.virtualWrite(V5, percentageHumididy);
Blynk.virtualWrite(V0, sensorValue);
Serial.print(percentageHumididy);
Serial.println("%");
Serial.print("A0 = ");
Serial.println(sensorValue);
delay(100);
}
1 Likes
Remy_Martin
(Permpol Thanapunnamas)
ตุลาคม 27, 2021, 2:53pm
2
นำมาเฉลี่ยกันครับ เช่น อ่านค่า 3 รอบ เอามาหาค่าเฉลี่ย แล้วค่อยส่งออกมา ค่าที่ได้จะนิ่งกว่า ลองศึกษาทำความเข้าใจโค้ตตัวอย่างนี้ดูครับ แล้วเอาผลมาดูกัน
int _sensorValue[3];
int avr_sensorValue;
void sendSoilValue() {
for (int i = 0; i >= 3; i++) {
_sensorValue[i] = analogRead(A0);
}
if (i == 3) {
avr_sensorValue = ( _sensorValue[0]+ _sensorValue[1]+ _sensorValue[2])/3;
percentageHumididy = map(avr_sensorValue, 0, 1024, 0, 100);
Blynk.virtualWrite(V5, percentageHumididy);
Blynk.virtualWrite(V0, avr_sensorValue);
Serial.print(percentageHumididy);
Serial.println("%");
Serial.print("A0 = ");
Serial.println(avr_sensorValue);
delay(100);
}
}
C:\Users\P\Documents\Arduino\All_Project\02_MyPJ_Smart AIOT Farm\SANTIDHAM_AIOT_Watering_Systems_4.0\SANTIDHAM_AIOT_Watering_Systems_4.0.ino: In function ‘void sendSoilValue()’:
SANTIDHAM_AIOT_Watering_Systems_4.0:179:7: error: ‘i’ was not declared in this scope
179 | if (i == 3) {
| ^
exit status 1
‘i’ was not declared in this scope
Remy_Martin
(Permpol Thanapunnamas)
ตุลาคม 27, 2021, 3:19pm
4
int _sensorValue[3];
int avr_sensorValue;
int j=0;
void sendSoilValue() {
for (int i = 0; i >= 3; i++) {
_sensorValue[i] = analogRead(A0);
j++;
}
if (j == 3) {
avr_sensorValue = ( _sensorValue[0]+ _sensorValue[1]+ _sensorValue[2])/3;
percentageHumididy = map(avr_sensorValue, 0, 1024, 0, 100);
Blynk.virtualWrite(V5, percentageHumididy);
Blynk.virtualWrite(V0, avr_sensorValue);
Serial.print(percentageHumididy);
Serial.println("%");
Serial.print("A0 = ");
Serial.println(avr_sensorValue);
delay(100);
j=0;
}
}
ค่าไม่เปลี่ยนเลยครับ คงที่แบบนี้ตลอด เมื่อกี้ไปถอดตัวเซ็นเซอร์ออกจากดินแล้ว ค่าก็ยังคงอยู่ที่ 81
Remy_Martin
(Permpol Thanapunnamas)
ตุลาคม 27, 2021, 4:02pm
6
ใน serial มันโชว์ค่าอะไรบ้าง ตรงนี้ออกไหม
ค่าน่าจะตรงกับตัวนี้หรือเปล่า 834 คือค่าที่ส่งไปที่ V0 ส่วนใน serial ไว้ต้องทำพรุ่งนี้ ได้ผลยังไง แจ้งให้ทราบอีกทีครับ
Remy_Martin
(Permpol Thanapunnamas)
ตุลาคม 27, 2021, 4:29pm
8
ที่ให้เช็คเพื่อยืนยันว่าโปรแกรมมันเข้าไปทำงาน ใน if (j == 3) หรือไม่ ครับ เพื่อจะดูว่ามันส่งค่ามาใช่หรือไม่
Remy_Martin
(Permpol Thanapunnamas)
ตุลาคม 27, 2021, 4:30pm
9
เอาที่สะดวกครับ ผมเรื่อยๆ
ใน serial ไม่แสดงค่าอะไรเลยครับ ส่วนในตัวแอฟ blynk ก็แสดงค่าเป็น 81% 834 เหมือนเดิมครับ
Remy_Martin
(Permpol Thanapunnamas)
ตุลาคม 28, 2021, 8:20am
11
อ่อ ผมเขียนไม่ได้เอาเปะหรือเทสบนบอร์ดนะครับ ลองใช้ความสามารถเราดูหน่อยว่ามันบัคตรงไหน ถึงทำให้ ไม่เข้าเงื่อนไข j == 3
ลองปรับดูและศึกษาแล้ว ก็ไม่ได้เลยครับ