ที่ว่ารับได้บ้างไม่ได้บ้าง แสดงว่ามีได้ใช่ไหมครับ
แล้วที่ได้ นั้นถูกต้องตามที่กดหรือเปล่าครับ
ค่าที่ได้ถูกต้องครับ
กระทู้นี้ คือก่อนที่จะต่อวงจรเพิ่มครับ ตอนนี้กลับด้านแล้วครับ
ข้อมูลที่ให้มาก็ไม่ได้อธิบายว่าเป็นมาอย่างไร pin ไหนต่อจุดไหน
เพราะผมไม่มี HW อยู่ ต้องในจิตนาการครับ
เช่นคุณใช้ pin ใดเป็น Input บ้าง ต้องมาไล่โค๊ดเอาเอง
แล้วตัวอย่างค่าที่ได้เมื่อกดปุ่มอะไร อ่านได้ค่าอะไรออกมา ประมาณนี้ครับ
เริ่มแรกก็ต้อง compile ก่อน เพื่อดูว่ามันฟ้องอะไรบ้าง ก็คอมไพล์ไม่ผ่าน
เพราะ lcd_3_pins.c ก็ไม่มีครับ
อันนี่ผมต้องขอโทษที่ให้ข้อมูลไม่หมด และที่ไม่ได้ให้มาเพราะผมคิดว่ามันไม่จำเป็น และcodeที่เขียนเป็นcode ง่ายๆ และส่วน lcd_3_pins.c ก็สามารถตัดได้เพราะก่อนหน้านี้ก็ไม่ได้ใส่ ก็ทำงานได้
เหมือนตอนที่ใส่มา
แล้วโค๊ด ที่เป็นลักษณะ if-else if-else ค่อนข้างทำความเข้าใจยากครับ
comment ก็ไม่ได้เขียนไว้ ว่าช่วงในทำอะไรบ้าง
ครับผมก็ไม่ค่อยเก่งในการเขียนเท่าไหรผมจึงได้สอบถามว่าพอจะที่วิธีอื่นอีกหรือป่าวครับ
ตัวอย่าง code
if(!input(PIN_B3) && !input(PIN_A0))
{printf("KEY---4\n\r");kbuff[kindex++]=4;}
ถ้า b3และa0 เป็น 0 (b3 ก็คือเลข 4ครับ a0 ก็คือ สัญญาณจาก A)
ให้แสดงค่า "KEY---4" และเก็บค่าใน kbuff[kindex++] ส่วน index ก็จะขึ้นอยู้กับครั้งที่กด ถ้าครั้งแรก index=0 ถ้าครั้งที่ 2 index=1
ในในโค๊ดเห็นมีตัวแปรที่ใช้เป็น flag เช่น kreset blink จุดประสงค์ไว้ทำอะไรครับ
แล้วการสแกน input พร้อมทั้งมีการแสดงผลบน LCD ไปด้วย อาจทำให้ไปรับ Input ใหม่ไม่ทัน
เพราะ LCD จะทำงานค่อนค่างช้า ข้อมูลส่วนนั้นก็จะหายครับ
ผมต้องการรับค่ามา 2 ตัวเลข แล้วจึงสั่งให้ relay ทำงาน
และที่บอกว่า สแกน input พร้อมทั้งมีการแสดงผลบน LCD ไปด้วย อาจทำให้ไปรับ Input ใหม่ไม่ทัน อันนี้ไม่เกี่ยวแน่นอนครับ
เพราะมันสามารถรับเค่า เบิ้ลได้ทั้งที่กดไปครั้งเดียว
ผมอาจจะอธิบายไม่ค่อยเก่งก็ขออภัยด้วยครับ
รูปที่แนบมาอาจจะวาดไม่ครบครับ ไม่ได้ใส่ c และแก้ ค่า r ครับ แต่ทั้งหมดต่อตามนี้ครับ