Somboho
(Somboho)
1
สอบถามการใช้คำสั่งเช็คค่า เช่น ส่งค่าเหมือนกัน 5 ครั้ง แล้วสั่ง Output ขอแนวทางหน่อยครับ
int ledPin = D0;
int analogPin = A0; //ประกาศตัวแปร ให้ analogPin แทนขา analog ขาA0
int val = 0;
void setup() {
pinMode(ledPin, OUTPUT); // sets the pin as output
digitalWrite(D0, LOW);
Serial.begin(115200);
}
void loop() {
val = analogRead(analogPin); //อ่านค่าสัญญาณ analog ขาA0
Serial.print("val = "); // พิมพ์ข้อมความส่งเข้าคอมพิวเตอร์ "val = "
Serial.println(val); // พิมพ์ค่าของตัวแปร val
if (val == 10){ // ค่า 10 ติดต่อกัน 5 ครั้ง แจ้งเตือน
digitalWrite(ledPin, HIGH); // สั่งให้ LED ดับ
}
else {
digitalWrite(ledPin, LOW); // สั่งให้ LED ติดสว่าง
}
delay(1000);
}
1 Likes
Remy_Martin
(Permpol Thanapunnamas)
2
หมายถึงยังไงครับ ส่งค่าอะไรมาก็ตาม 10 ครั้ง งี้หรอ
Somboho
(Somboho)
3
กำหนดค่า 10 ในการแจ้งเตือน แต่ต้องได้ค่า 10 ส่งมาติดกัน 5 ครับ ค่อยแจ้งเตือน แก้ไขยังไงได้บ้างครับ
Remy_Martin
(Permpol Thanapunnamas)
4
ถ้างี้เรียกติดกันป่าว นับยังไง
val = 10
val = 0
val = 10
val = 10
val = 10
val = 10
val = 10
val = 10
val = 10
val = 10
val = 10
Somboho
(Somboho)
5
ใช่ครับ ค่า 10 ต่อเนื่องกัน 5 ครั้ง แล้วแจ้งเตือน ถ้าไม่ต่อเนื่องกัน ไม่แจ้งครับ จะแก้ส่วนไหนของ code ได้บ้างครับ
Remy_Martin
(Permpol Thanapunnamas)
6
int ledPin = D0;
int analogPin = A0; //ประกาศตัวแปร ให้ analogPin แทนขา analog ขาA0
int val = 0;
void setup() {
pinMode(ledPin, OUTPUT); // sets the pin as output
digitalWrite(D0, LOW);
Serial.begin(115200);
}
int Checkval = 0;
bool _val = false;
void loop() {
val = analogRead(analogPin); //อ่านค่าสัญญาณ analog ขาA0
Serial.print("val = "); // พิมพ์ข้อมความส่งเข้าคอมพิวเตอร์ "val = "
Serial.println(val); // พิมพ์ค่าของตัวแปร val
if(val == 10){
Checkval++;
}else{
Checkval = 0;
}
if (_val == true){ // ค่า 10 ติดต่อกัน 5 ครั้ง แจ้งเตือน
digitalWrite(ledPin, HIGH); // สั่งให้ LED ดับ
_val = false;
}
else {
digitalWrite(ledPin, LOW); // สั่งให้ LED ติดสว่าง
}
delay(1000);
}
Somboho
(Somboho)
7
ขอบคุณมากครับ เดี๋ยวลองดูนะครับ
Somboho
(Somboho)
8
ลอง code ที่ส่งมาแล้วครับ ต้องใส่อะไรเพิ่มตรงไหนครับ ไม่แจ้งเตือนที่ค่า 10 ส่งมาต่อเนื่อง ครับ
Somboho
(Somboho)
9
ลอง code แล้ว ไม่มีการแจ้งเตือนเลยครับ ไม่แน่ใจผิดตรงไหนครับ
Remy_Martin
(Permpol Thanapunnamas)
10
น่าจะติดตรง ค่าของ val มันจะเปลี่ยนไปรึป่าว เพราะว่า ถ้าไม่ป้อนค่ามันอาจจะเป็นค่าเปล่าๆ ซึ่งไม่เท่ากับ 10
ดังดันลอง ดัก Serial ออกมาดูหน่อยว่าแต่ละค่ามันเป็นยังไว
Somboho
(Somboho)
11
รับค่ามาปกติครับ ได้ค่า 10 ก็ไม่แจ้งเตือนครับ ดูจาก serial จะลองแก้วิธีไหนดีครับ
Remy_Martin
(Permpol Thanapunnamas)
12
ใช้โค้ตนี้แล้วแคป Serial มาให้ผมดูด้วยครับ
Remy_Martin
(Permpol Thanapunnamas)
13
อ่อรู้สึกว่าผมจะลืมใสไปคำสั่งนึงนะ
int ledPin = D0;
int analogPin = A0; //ประกาศตัวแปร ให้ analogPin แทนขา analog ขาA0
int val = 0;
void setup() {
pinMode(ledPin, OUTPUT); // sets the pin as output
digitalWrite(D0, LOW);
Serial.begin(115200);
}
int Checkval = 0;
bool _val = false;
void loop() {
val = analogRead(analogPin); //อ่านค่าสัญญาณ analog ขาA0
Serial.print("val = "); // พิมพ์ข้อมความส่งเข้าคอมพิวเตอร์ "val = "
Serial.println(val); // พิมพ์ค่าของตัวแปร val
if(val == 10){
Checkval++;
if(Checkval == 10){
_val = true; //สั่งให้เข้าไปแจ้งเตือน
}
}else{
Checkval = 0;
}
if (_val == true){ // ค่า 10 ติดต่อกัน 5 ครั้ง แจ้งเตือน
digitalWrite(ledPin, HIGH); // สั่งให้ LED ดับ
_val = false;
}
else {
digitalWrite(ledPin, LOW); // สั่งให้ LED ติดสว่าง
}
delay(1000);
}
Somboho
(Somboho)
14
เดี๋ยวลองใหม่ครับ ขอบคุณมากนะครับ
Somboho
(Somboho)
15
ตอนนี้ผมลองแจ้งเตือนแล้วครับ ขอสอบถามอีกนิดครับ ถ้าต้องการให้แจ้งเตือนไปตลอดจนกว่าค่าจะเปลี่ยนค่อยหยุดแจ้ง จะปรับ code ยังไงครับ