lnwshop logo
ความรู้แน่น ฟรีสำหรับชุมชน ArduinoAll ที่นี่เท่านั้น

  


ArduinoAll รับประกันคุณภาพทุกชิ้น วันจันทร์-ศุกร์แจ้งชำระสินค้าก่อน 14.00 จัดส่งทันทีวันนี้ค่ะ

กรุงเทพ /ภาคกลาง ได้พรุ่งนี้


*** สินค้าทุกชิ้น ถ้าสามารถทำรายการสั่งซื้อได้ แสดงว่ามีครบทุกรายการค่ะ *** 

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

ึดึงเวลามาคำนวน

Mos

ผมอยากทำตัวจับเวลาแล้ว ดึงเวลามา คำนวน ทำยังไงอะคับ ช่วยแนะนำผมหน่อยคับ

โค้ดนี้แสดงเวลาได้ แต่ เวลาเอาไปคำนวน คำตอยที่ได้วันยังไม่ใช่อะคับ

ก็คือ เมือเรารันโปรแกรมแต่ยังไม่กดปุ่มจับเวลา เวลามันก็เดินไปเอง คือมันเอาเวลาที่เดินไปก่อนนั้นมาคำนวนอะคับ
,เวลากดปุ่มเริ่มจับเวลาเเสดงปกตินะคับ,

#include <Keypad.h> 

#include <LiquidCrystal.h> 

 

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

const byte numRows= 4; 

const byte numCols= 4;

unsigned long previousTime = 0;

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

const byte numRows= 4; 

const byte numCols= 4;

unsigned long previousTime = 0;

char keymap[numRows][numCols]=

{

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

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

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

{' ', '0', ' ', ' '}

};

 

byte rowPins[numRows] = {A3 ,A2 ,A1 ,A0}; //connect to row pinouts 

byte colPins[numCols] = {9, 8, 7, 6}; //connect to column pinouts

Keypad myKeypad= Keypad(makeKeymap(keymap), rowPins, colPins, numRows, numCols);

 

void setup()

{

lcd.begin(16,2);

}

void loop()

{

  unsigned long showTime = millis();

char key = myKeypad.getKey(); // ตัวแปร key เป็นตัวแปรแบบ char รับค่าการกดปุ่ม

if (key != NO_KEY && key != 'A' && key != 'B' && key != ' ') //เมื่อกดปุ่ม (เฉพาะเลข 0 - 9) ค่า setTime จะเท่ากับปุ่มที่กด

{

//setTime = (key ); //นำค่า key ที่ได้มาลบกับ 48 เนื่องจากเป็นรหัส ascii48 ที่เลข 0 จะเริ่มที่ 48

Serial.print(key);

}

if(key == 'A') //เมื่อกดปุ่ม A ตัวแปร start จะเท่ากับ 1 และค่า previousTime สุดท้ายจะเท่ากับ showTime ณ ตอนนั้น

{

start = 1;

previousTime = showTime;

Serial.print("Start...");

}

if(key == 'B') //เมื่อกดปุ่ม B ทุกอย่างจะถูกหยุด 

{

int ans;  

start = 0;

//buzzer = 0;

previousTime = 0;

ans=(((showTime - previousTime) / 1000)/2);

lcd.setCursor(0,1);

//lcd.print("Stop!...\n");

lcd.print(ans);

}

if(start == 1) //เมื่อ start = 1 จะเป็นการวน loop จับเวลาไปเรื่อยๆ จนกว่าจะครบกำหนด

{

lcd.setCursor(0,0);

lcd.print((showTime - previousTime) / 1000);

}

}

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

ลองแกะโคดทีละส่วน ผมว่าน่าจะยังมีบางจุดที่โคดยังไม่ถุก ที่แนะนำคือ เอา unsigned long showTime = millis(); ไปไว้ข้างนอก ใน loop เรียกใช้ showTime = millis(); ตัวแปรจะไม่ถูกสร้างใหม่ทุกครั้งที่ทำงานครับ

QUOTE 
ความคิดเห็นที่ #2
Mos

showTime มันจับเวลาไปก่อนอะคับ

QUOTE 
ความคิดเห็นที่ #3
Mos

 

คือให้ผมเอา unsigned long showTime = millis(); ไปไว้ข้างนอก loop 


และเรียกใช้ showTime = millis(); ในloop แบบนี้ใช้ปะครับ

QUOTE 
ความคิดเห็นที่ #4
Mos

ขอบคุณมากครับ ได้ละครับบ 

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

ยินดีครับ : )

QUOTE 
ความคิดเห็นที่ #6
Mos

ผมอยากให้ตัวจับเวลานี้ มีเสี้ยววินาทีด้วยอะครับ มันสามารทำได้ไหมครับ เพื่อจะใด้เอามาคำนวนให้มันแม่นยำขึ้นอะครับ

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

คำสั่ง millis() ให้ค่า 1 ใน 1000 วินาทีแล้วครับ

 

millis()

Description

Returns the number of milliseconds since the Arduino board began running the current program. This number will overflow (go back to zero), after approximately 50 days.

 

QUOTE 
ความคิดเห็นที่ #8
Mos

อยากให้มี เสี้ยววินาทีด้วย ต้องทำยังไงอะครับ ต้องการให้ค่ามันเเม่นยำขึ้นนะครับ

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

ลองแกะโคดดูก่อนนะว่าคำสั่งนี้ใช้ทำอะไร ans=(((showTime - previousTime) / 1000)/2);

QUOTE 
ความคิดเห็นที่ #10
Mos

ผมดึงเวลาที่นับได้ มา หาร 2 อะคับ ในส่วนนี้ผมลองดึงเวลาคำนวนดูอะครับเฉยๆๆ ว่าได้หรือป่าว

ผลที่ได้คือสามารถคำนวนได้ แต่ที่ผมอยากจะได้เพิ่มคือ อยากให้สามารถนับเสี้ยววินาทีได้ด้วยอะคับ

1
2
ถัดไป ›
แสดงความคิดเห็นที่ 1-10 จากทั้งหมด 11 ความคิดเห็น
ข้อความ
ชื่อผู้โพส
ข้อมูลสำหรับการติดต่อกลับ (ไม่เปิดเผย เห็นเฉพาะเจ้าของร้าน)
อีเมล
เบอร์มือถือ
  • ตอบกระทู้

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

สมาชิก Arduino All

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

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

Arduino All ขายดี

รหัสสินค้า A233
5.00 บาท
  • สั่งซื้อ
รหัสสินค้า A115
10.00 บาท
  • สั่งซื้อ
รหัสสินค้า A097
4.00 บาท
  • สั่งซื้อ
รหัสสินค้า A474
7.00 บาท
  • สั่งซื้อ
รหัสสินค้า A244
45.00 บาท
  • สั่งซื้อ
รหัสสินค้า A238
4.00 บาท
  • สั่งซื้อ
รหัสสินค้า A014
100.00 บาท
  • สั่งซื้อ
Go to Top
พูดคุย-สอบถาม คลิก