ผมอยากทำตัวจับเวลาแล้ว ดึงเวลามา คำนวน ทำยังไงอะคับ ช่วยแนะนำผมหน่อยคับ
โค้ดนี้แสดงเวลาได้ แต่ เวลาเอาไปคำนวน คำตอยที่ได้วันยังไม่ใช่อะคับ
ก็คือ เมือเรารันโปรแกรมแต่ยังไม่กดปุ่มจับเวลา เวลามันก็เดินไปเอง คือมันเอาเวลาที่เดินไปก่อนนั้นมาคำนวนอะคับ
,เวลากดปุ่มเริ่มจับเวลาเเสดงปกตินะคับ,
#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);
}
}
ตามที่แนะนำไปแล้วครับ ลองศึกษาโคดที่เขียนก่อนนะครับ
‹ ก่อนหน้า | 1 | 2 |