นี้ก็ด้วย
แก้ == เรียบร้อยแล้วครับ
มีคำถามครับ คือค่า k ต้องตั้งยังไงให้มันไม่ไปเข้า switch case เหรอครับ ผมหมายถึงตอนกดใช้ฟังก์ชั่น SW_back ให้กลับไปอ่านที่ Mode_Select_Complete ใหม่อีกรอบ
ตรงนี้เราไม่ตรงเขียนเต็มแบบนี้หรอ มันก็เข้าไปทำงานที่ void SW_case() {} เหมือนกันใช้ไหม
ผมว่าแก้ = เป็น == มันก็น่าจะเข้าไปทำได้แล้วนะ ตอนนี้ผลเป็นยังไง
ใช่ครับ ตอนนี้ผมอัพเดทมานิดหน่อย
ผมเพิ่มตัวนี้มา
มันเข้าไปอ่านMode_Select_Complete แล้วครับ แต่ มันก็ติดตรงนี้ เพราะ Mode_Enter = false แบบข้างบน
^^^^ ตามรูปนี้ คือมันไม่ได้ขึ้นให้ผมเลือกค่า K ได้เลยครับ
ปล. เพิ่ม == ก็เหมือนเดิมเลยครับ
เหมือนค่า K มันคงที่ครับ กด เปลี่ยนไม่ได้เลยครับ
อันนี้ฟังก์ชั่นที่เอาไว้เปลี่ยนค่า k ครับ แต่ตอนนี้มันไม่ได้เข้าไปทำฟังก์ชั่นนี้
void ModeUpDown(){
if (Mode_SL) {
Read_SW2 = digitalRead(SW2);
if (Read_SW2 == LOW) {
//delay(100);
timex = millis();
if (digitalRead(SW2) == LOW)
k = k + 1;
while (digitalRead(SW2) == LOW);
}
Read_SW3 = digitalRead(SW3);
if (Read_SW3 == LOW) {
// delay(100);
timex = millis();
if (digitalRead(SW3) == LOW)
k = k - 1;
while (digitalRead(SW3) == LOW);
}
lcd.setCursor(0, 1);
lcd.print("Project : ");
lcd.setCursor(10, 1);
lcd.print(k);
}
}
เครื่องหมายปีกกา ทำให้ชัดเจนหน่อยครับ ผมดูแล้วงง ๆ นะ
ใช้คำสั่ง autoFormat() ของ IDE ก็ได้มันจัดให้เอง
ขออภัยครับ ผมติดมาจากอาจารย์ผม แฮะๆ
Mod_Enter กำหนดค่าให้เงื่อนไขรึยังครับ มันไม่รู้ว่ามันจะทำงานเมื่อไหร่เลย ผมว่ามันไม่เข้าไปทำงานแน่ๆ
ให้เงื่อนไขแล้วกดไม่ได้ครับ
อันนี้ code ตัว Enter_Press ครับ
void Enter_Press() {
Read_SW1 = digitalRead(SW1);
if (Read_SW1 == LOW) {
lcd.setCursor(0, 0);
lcd.print("Press Button");
lcd.setCursor(0, 1);
lcd.print("Button >"); //<<<< มาติดตรงนี้
Mode_Enter = true;
delay(200);
Mode_Clear = false;
}
}
ตรงนั้นเราต้องการให้มันทำอะไรอธิบายหน่อย
void Mode_Select_Complete() {
if (Mode_Enter) { // 1)<<< เดิมตั้งค่าให้ bool Mode_Enter = false
CountS(); // 6) <<<<ขึ้นมาทำ2ฟังก์ชั่นนี้
ModeUpDown(); // 6) <<< ขึ้นมาทำ2ฟังก์ชั่นนี้
} else {
Enter_Press(); //2) <<<<เข้ามาทำฟังก์ชั่นนี้ก่อน
}
SW_case();
}
void Enter_Press() {
Read_SW1 = digitalRead(SW1); // <<< 3) พอกดปุ่ม
if (Read_SW1 == LOW) {
lcd.setCursor(0, 0);
lcd.print("Press Button");
lcd.setCursor(0, 1);
lcd.print("Button >");
Mode_Enter = true; <<< //4) ให้ Mode_Enter เป็น true แล้วขึ้นไปทำ ^^^^
delay(200);
Mode_Clear = false;
}
}
2 ฟังก์ชั่นข้างบนครับ
void ModeUpDown() {
if (Mode_SL) {
Read_SW2 = digitalRead(SW2);
if (Read_SW2 == LOW) {
//delay(100);
timex = millis();
if (digitalRead(SW2) == LOW)
k = k + 1;
while (digitalRead(SW2) == LOW);
}
Read_SW3 = digitalRead(SW3);
if (Read_SW3 == LOW) {
// delay(100);
timex = millis();
if (digitalRead(SW3) == LOW)
k = k - 1;
while (digitalRead(SW3) == LOW);
}
lcd.setCursor(0, 1);
lcd.print("Project : ");
lcd.setCursor(10, 1);
lcd.print(k);
}
}
void CountS() {
if (Mode_SL) {
if (k >= 6) {
k = 6;
delay(1);
}
if (k <= 1) {
k = 1;
delay(1);
}
}
}
ในช่วงนี้ติดปัญหาอะไรรึป่าว
ถ้าตอนแรก ได้นะครับ แต่พอเอาเข้าไปใช้ในฟังก์ชั่น SW_Back เพื่อกดกลับ มันก็แสดงตามที่บอกเลยครับ ;w;
ติดอะไรอยู่ตรงนี้ครับ
ได้แล้วขอบคุณครับ !!
เพิ่ม Mode_SL = true ; เข้ามาครับ
เพราะตรงนี้มันเป็น
เยี่ยมเลยครับ ช่วยกันนึกว่าจะยาวแล้วคืนนี้ 555