มินิโปรเจค
มินิโปรเจค
มินิโปรเจค
Mini Project
Mini Project
การจับเวลาด้วย Arduino UNO R3,LCD
Code
#include <Keypad.h> //เรียกใช้ Library Keypad
const byte numRows= 4; กำหนดตัวเเปร numRows เท่ากับ 4
const byte numCols= 4;
unsigned long previousTime = 0;
int setTime = 0; กำหนดตัวเเปร setTime เป็น 0
int start = 0; กำหนดตัวเเปร start เป็น 0
int buzzer = 0; กำหนดตัวเเปร buzzer เป็น 0
//กำหนดค่าของปุ่มต่างๆ โดยในที่นี้จะกำหนดเฉพาะปุ่มที่ใช้งาน ปุ่มที่เหลือจให้เป็นค่าว่าง
char keymap[numRows][numCols]=
{
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', ' '},
{' ', '0', ' ', ' '}
};
byte rowPins[numRows] = {9,8,7,6}; //Rows 0 to 3 ตั้งค่าการต่อ Pin ของ Keypad
byte colPins[numCols]= {5,4,3,2}; //Columns 0 to 3
Keypad myKeypad= Keypad(makeKeymap(keymap), rowPins, colPins, numRows, numCols);
#include <LiquidCrystal.h> เรียกใช้ Library lcd
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); เรียกใช้ Library lcd
void setup()
{
Serial.begin(250000); เวลาที่กำหนด Serial.begin 250000
pinMode(12, OUTPUT); //ให้ Pin 12 ที่จะต่อกับออดไฟฟ้า เป็น Output
lcd.begin();
lcd.backlight();
Serial.begin(9600); เวลาในการรับส่งข้อมูล Serial.begin 9600
}
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 - 48); //นำค่า 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 ทุกอย่างจะถูกหยุด
{
start = 0;
buzzer = 0;
previousTime = 0;
Serial.print("Stop!...");
}
if(start == 1) //เมื่อ start = 1 จะเป็นการวน loop จับเวลาไปเรื่อยๆ จนกว่าจะครบกำหนด
{
}
if(buzzer == 1) //เมื่อตัวแปร buzzer = 1 , pin12 ที่ต่อกับออด (Buzzer) จะ HIGH ออดจึงดัง
{
digitalWrite(12, LOW);
lcd.setCursor(0, 0); // ไปที่ตัวอักษรที่ 0 แถวที่ 1
lcd.print(" START ");
lcd.setCursor(0, 1); // ไปที่ตัวอักษรที่ 0 แถวที่ 1
}
if(buzzer == 0) //เมื่อตัวแปร buzzer = 0 (กดปุ่ม B) ออดจะหยุดดัง
{
digitalWrite(12, HIGH);
lcd.setCursor(0, 0); // ไปที่ตัวอักษรที่ 0 แถวที่ 1
lcd.print(" STOP ");
lcd.setCursor(0, 1); // ไปที่ตัวอักษรที่ 0 แถวที่ 1
}
}
อุปกรณ์
1.Arduino UNO R3
2.4x4Matrix Membrane Keypad
3.LCD
4.LED
5.กล่อง
6.ไม่แผ่น
รูปงาน
ความคิดเห็น
แสดงความคิดเห็น