lnwshop logo
  • ตอบกระทู้
  • ตั้งกระทู้ใหม่
QUOTE 

แสดงผลบนจอ lcd ที่รับค่ามาจาก คีแพด

(Guest)
เอ้ (Guest)
IP: 223.205.248.x
11 เดือนที่ผ่านมา

ขอสอบถามครับ ใช้โค๊ดนี้

#include <Keypad.h>
 
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
   {'1','2','3','A'},
   {'4','5','6','B'},
   {'7','8','9','C'},
   {'*','0','#','D'}
 };
 byte rowPins[ROWS] = {9,8,7,6}; //connect to row pinouts
byte colPins[COLS] = {5,4,3,2}; //connect to column pinouts
 
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
 
void setup(){
   Serial.begin(9600);
 }
 
void loop(){
   void setup(){
   Serial.begin(9600);
 }
 
void loop(){
   char key = keypad.getKey();
 
  if (key != NO_KEY){

Serial.print(" num = "); ตรงนี้ครับ
     Serial.println(key);
   }
 }
 
อยากให้ แสดงผลโดยการกดคีแพดหลายๆครั้งแบบไม่ต้องขั้นบรรทัดใหม่ ให้แสดงผลเช่น num =123 โดยไม่ให้ num แสดงผลซ้ำ ผมต้องเพิ่มเติมโค๊ดยังไงบ้างครับ รบกวนด้วยครับ ขอบคุณครัยบ

QUOTE 
ความคิดเห็นที่ #1
เจ้าของร้าน
เจ้าของร้าน
11 เดือนที่ผ่านมา

ง่าย ๆ ครับ โฟกัสที่คำสั่ง Serial.print มี 2 แบบ

Serial.print(); // แบบนี้ไม่ขึ้นบรรทัดใหม่

Serial.println(); // มี ln ต่อท้าย แปลว่าขึ้นบรรทัดใหม่ ( ln = line new = บรรทัดใหม่ คำนี้ผมตั้งจำใช้เอง)

ถ้าตามโคดจุดนี้ครับ

Serial.print(" num = "); ตรงนี้ครับ
Serial.print(key);

ดูตามนี้ครับ https://www.arduino.cc/en/Serial/Print

QUOTE 
ความคิดเห็นที่ #2
(Guest)
เอ้ (Guest)
IP: 49.230.236.x
11 เดือนที่ผ่านมา

หมายถึงว่าจะให้คำว่า num แสดงครั้งเดียว แล้วตัวเลขที่เรากดจากคีแพดอยู่บรรทัดเดียวกันแต่เรียงลำดับจาดการกดอะครับ เช่น กดเลข 1 ครั้งแรกจะได้ num1 กดเลข3 ครั้งที่สองจะได้ num 13 แบบนี้อ่ะครับ

QUOTE 
ความคิดเห็นที่ #3
เจ้าของร้าน
เจ้าของร้าน
11 เดือนที่ผ่านมา

เขียนเก็บใส่ตัวแปรแล้วแสดงผล ลองฝึกดูนะครับไม่ยาก ตามตัวอย่างนี้

https://www.arduino.cc/en/Tutorial/StringAppendOperator

QUOTE 
ความคิดเห็นที่ #4
(Guest)
เอ้ (Guest)
IP: 49.230.236.x
11 เดือนที่ผ่านมา

เดาวลองครับ ขอบคุณนะครับ

QUOTE 
ความคิดเห็นที่ #5
เจ้าของร้าน
เจ้าของร้าน
11 เดือนที่ผ่านมา

ยินดีครับ

QUOTE 
ความคิดเห็นที่ #6
(Guest)
เอ้ (Guest)
IP: 202.151.7.x
11 เดือนที่ผ่านมา

#include <Keypad.h>

#include <SPI.h>

#include <nRF24L01p.h>

#include <Wire.h>

#include <LCD.h>

#include <LiquidCrystal_I2C.h>

#define I2C_ADDR 0x27 // <

#define BACKLIGHT_PIN 3

 

 

LiquidCrystal_I2C lcd(I2C_ADDR, 2, 1, 0, 4, 5, 6, 7);

nRF24L01p receiver(7, 8); //CSN,CE

 

 

const byte ROWS = 4;

const byte COLS = 4;

char keys[ROWS][COLS] = {

  {'1', '2', '3', 'A'},

  {'4', '5', '6', 'B'},

  {'7', '8', '9', 'C'},

  {'*', '0', '#', 'D'}

};

byte rowPins[ROWS] = {9, 8, 7, 6}; //connect to row pinouts

byte colPins[COLS] = {5, 4, 3, 2}; //connect to column pinouts

 

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

 

boolean valOnePresent = false;

String num1;

int numLength;

 

 

void setup() {

  Wire.begin();

  delay(150);

  Serial.begin(115200);

  SPI.begin();

  SPI.setBitOrder(MSBFIRST);

  lcd.begin (20, 4);

  receiver.channel(90);  // ตั้งช่องความถี่ให้ตรงกัน

  receiver.RXaddress("ALL");  // ตั้งชื่อตำแห่นงให้ตรงกัน ชื่อตั้งได้สูงสุด 5 ตัวอักษร

  receiver.init();

  lcd.setBacklightPin(BACKLIGHT_PIN, POSITIVE);

  lcd.setBacklight(HIGH);

  lcd.home (); // ไปที่ตัวอักษรที่ 0 แถวที่ 1

 

 

}

   String message; 

  void loop(){

    if(receiver.available()){

    receiver.read(); // สั่งให้เริ่มอ่าน

    receiver.rxPL(message); // สั่งใหอ่านเก็บไว้ที่ตัวแปร

    

    Serial.println(message);

    

lcd.setCursor(1,0); // ไปทตัวอักษรที่ 1 แถวที่ 1

lcd.print(" Current(A)=");

 

lcd.setCursor(14,0); // ไปที่ตัวอักษรที่ 5 แถวที่ 2

lcd.print(message);

    message="";

  }

  if (receiver.available()){

    receiver.read(); // สั่งให้เริ่มอ่าน

    receiver.rxPL(message); // สั่งใหอ่านเก็บไว้ที่ตัวแปร

    

    Serial.println(message);

    

    lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);

lcd.setBacklight(HIGH);

lcd.home (); // ไปที่ตัวอักษรที่ 0 แถวที่ 1

lcd.setCursor(1,1); // ไปทตัวอักษรที่ 1 แถวที่ 1

lcd.print(" Voltage(V)=");

 

lcd.setCursor(14,1); // ไปที่ตัวอักษรที่ 5 แถวที่ 2

lcd.print(message);

    message="";

  }

  void key(){

  char key = keypad.getKey();

  if (key != NO_KEY &&

      (key == '0' ||key == '1' || key == '2' || key == '3' || key == '4' || key == '5' || key == '6' || key == '7' || key == '8' || key == '9' || key == 'A'||key == 'B' || key == 'C' || key == 'D' || key == '#' || key == '*' ))

  {

    if (valOnePresent != true)

    {

      num1 = num1 + key;

      numLength = num1.length();

      

      lcd.setCursor(0, 2);

       

  lcd.print("TR-PEA:");

      lcd.print(num1);

    }

  }

   

  }

    รบกวนช่วยตรวจสอบโค๊ดให้ผมหน่อยได้ไหมครับ ตอนเขียนแยกไม่มีปัญหา แต่พอเอามาเขียนรวมกับไม่แสดงผล(ภาครับค่า กับ keypad) จะแสดงผลเฉพาะลูปที่อยู่ข้างบน แบบนี้ผมต้องแก้ไขต้องไหนอ่ะครับ รบกวนด้วยนะครับ ขอบคุณครับ

 
 
สิ้นสุดการสนทนา
 
 

 

QUOTE 
ความคิดเห็นที่ #7
เจ้าของร้าน
เจ้าของร้าน
11 เดือนที่ผ่านมา

แก้ไขตรงนี้ครับ

if (receiver.available())

ให้ค่าเป็น false ตลอดจึงไม่มาในเงื่อนไขนี้ เพราะถ้าใช้ receiver.read(); แล้ว คำสั่ง receiver.avaliable() จะเป็น false เช็คดูอีกทีครับ

1
แสดงความคิดเห็นที่ 1-7 จากทั้งหมด 7 ความคิดเห็น
ชื่อ
อีเมล
ข้อความ
  • ตอบกระทู้

หมวดหมู่สินค้า

สมาชิก Arduino All

เข้าสู่ระบบด้วย
เข้าสู่ระบบ
สมัครสมาชิก

ยังไม่มีบัญชีเทพ สร้างบัญชีใหม่ ไม่เกิน 5 นาที
สมัครสมาชิก (ฟรี)

Arduino All ขายดี

รหัสสินค้า A015
300.00 บาท
  • สั่งซื้อ
รหัสสินค้า A233
5.00 บาท
  • สั่งซื้อ
รหัสสินค้า A115
10.00 บาท
  • สั่งซื้อ
รหัสสินค้า A238
4.00 บาท
  • สั่งซื้อ
รหัสสินค้า A237
4.00 บาท
  • สั่งซื้อ
รหัสสินค้า A014
90.00 บาท
  • สั่งซื้อ
รหัสสินค้า A225
5.00 บาท
  • สั่งซื้อ
รหัสสินค้า A474
7.00 บาท
  • สั่งซื้อ
รหัสสินค้า A097
4.00 บาท
  • สั่งซื้อ
Go to Top