Arduino

web เพื่อการศึกษา เรื่อง Arduino และมี code ตัวอย่าง และคลิปการทำงาน.

Menu

โปรแกรมจับเวลาการต้มไข่แบบแตกต่างกัน


        

code:


// กำหนดขา (Pin) ที่ใช้ในโปรแกรม const int buttonPin1 = 2; // ปุ่ม S1 start const int buttonPin2 = 12; // ปุ่ม S2 stop const int ledBlue = 13; // LED สีฟ้า const int ledGreen = 3; // LED สีเขียว const int ledYellow = 4; // LED สีเหลือง const int ledRed = 5; // LED สีแดง // ตัวแปรที่ใช้ int buttonState1 = 0; // สถานะของปุ่ม S1 (เริ่มทำงาน) int buttonState2 = 0; // สถานะของปุ่ม S2 (หยุดทำงาน) int lastButtonState1 = 0; // สถานะของปุ่ม S1 ก่อนหน้า int lastButtonState2 = 0; // สถานะของปุ่ม S2 ก่อนหน้า unsigned long startMillis = 0; // ตัวจับเวลาเริ่มต้น bool machineRunning = false; // สถานะการทำงานของเครื่อง void setup() { // ตั้งค่า Pin ต่างๆ pinMode(buttonPin1, INPUT_PULLUP); // ปุ่ม S1 pinMode(buttonPin2, INPUT_PULLUP); // ปุ่ม S2 pinMode(ledBlue, OUTPUT); // LED สีฟ้า pinMode(ledGreen, OUTPUT); // LED สีเขียว pinMode(ledYellow, OUTPUT); // LED สีเหลือง pinMode(ledRed, OUTPUT); // LED สีแดง // เริ่มต้นให้ทุก LED ปิด digitalWrite(ledBlue, LOW); digitalWrite(ledGreen, LOW); digitalWrite(ledYellow, LOW); digitalWrite(ledRed, LOW); } void loop() { buttonState1 = digitalRead(buttonPin1); // อ่านค่าปุ่ม S1 buttonState2 = digitalRead(buttonPin2); // อ่านค่าปุ่ม S2 // ตรวจสอบเมื่อปุ่ม S1 ถูกกด (เริ่มทำงาน) if (buttonState1 == LOW && lastButtonState1 == HIGH) { // ถ้าปุ่ม S1 ถูกกด (เริ่มทำงานใหม่) if (!machineRunning) { machineRunning = true; startMillis = millis(); // เริ่มจับเวลาใหม่ digitalWrite(ledBlue, HIGH); // แสดงไฟฟ้า (เริ่มทำงาน) } } // ตรวจสอบเมื่อปุ่ม S2 ถูกกด (หยุดทำงาน) if (buttonState2 == LOW && lastButtonState2 == HIGH) { // ถ้าปุ่ม S2 ถูกกด (หยุดทำงาน) machineRunning = false; digitalWrite(ledBlue, LOW); // ปิดไฟสีฟ้า digitalWrite(ledGreen, LOW); // ปิดไฟสีเขียว digitalWrite(ledYellow, LOW); // ปิดไฟสีเหลือง digitalWrite(ledRed, LOW); // ปิดไฟสีแดง } lastButtonState1 = buttonState1; // อัปเดตสถานะของปุ่ม S1 lastButtonState2 = buttonState2; // อัปเดตสถานะของปุ่ม S2 if (machineRunning) { unsigned long currentMillis = millis(); // เวลา ณ ปัจจุบัน // ตรวจสอบช่วงเวลาและแสดงไฟที่ต่างกันตามเวลาที่กำหนด if (currentMillis - startMillis >= 600000) { // 10 นาที digitalWrite(ledRed, HIGH); // แสดงไฟสีแดง } else if (currentMillis - startMillis >= 300000) { // 5 นาที digitalWrite(ledYellow, HIGH); // แสดงไฟสีเหลือง } else if (currentMillis - startMillis >= 180000) { // 3 นาที digitalWrite(ledGreen, HIGH); // แสดงไฟสีเขียว } } }

โปรแกรมจับเวลาการต้มไข่แบบแตกต่างกัน

การทำงานของวงจรควบคุม LED

คำอธิบายการทำงาน

โปรแกรมนี้ใช้ปุ่ม S1 และ S2 เพื่อควบคุมการทำงานของเครื่องและแสดงผลด้วย LED สีต่างๆ ตามระยะเวลา:

1. ปุ่ม (S1 และ S2):

  • S1 (ปุ่มเริ่มต้น): เมื่อกดปุ่ม S1 โปรแกรมจะเริ่มการทำงานและจับเวลา โดยใช้ฟังก์ชัน millis() ซึ่งนับเวลาในหน่วยมิลลิวินาทีจากการเริ่มต้นโปรแกรม.
  • S2 (ปุ่มหยุด): เมื่อกดปุ่ม S2 โปรแกรมจะหยุดทำงานทั้งหมด และปิด LED ทุกตัว.

2. LED:

  • LED สีฟ้า (Pin 13): ใช้แสดงสถานะว่าระบบกำลังทำงานหรือไม่ ถ้าเครื่องทำงาน ไฟฟ้า (LED สีฟ้า) จะเปิดสว่างขึ้น.
  • LED สีเขียว (Pin 3): ไฟสีเขียวจะเปิดเมื่อเวลาผ่านไป 3 นาที (180,000 มิลลิวินาที) หลังจากกดปุ่ม S1.
  • LED สีเหลือง (Pin 4): ไฟสีเหลืองจะเปิดเมื่อเวลาผ่านไป 5 นาที (300,000 มิลลิวินาที) หลังจากกดปุ่ม S1.
  • LED สีแดง (Pin 5): ไฟสีแดงจะเปิดเมื่อเวลาผ่านไป 10 นาที (600,000 มิลลิวินาที) หลังจากกดปุ่ม S1.

3. การทำงานของเครื่อง:

  • เมื่อเริ่มต้น (หลังจากกดปุ่ม S1), ระบบจะเริ่มจับเวลาและแสดงสถานะด้วย LED ตามช่วงเวลาที่กำหนด:
    • 3 นาทีแรก: ไฟสีเขียวจะเปิด
    • 5 นาทีถัดไป: ไฟสีเหลืองจะเปิด
    • 10 นาทีถัดไป: ไฟสีแดงจะเปิด
  • เมื่อกดปุ่ม S2, ระบบจะหยุดทำงานและปิดไฟทุกตัว.

4. ขั้นตอนการทำงานโดยละเอียด:

  1. เมื่อโปรแกรมเริ่มทำงาน ทุก LED จะปิด.
  2. ผู้ใช้กดปุ่ม S1 (เริ่มทำงาน): ไฟสีฟ้าจะเปิด และเริ่มจับเวลา (ด้วย millis()).
  3. เมื่อเวลาผ่านไป 3 นาที (180,000 มิลลิวินาที): ไฟสีเขียวจะเปิด.
  4. เมื่อเวลาผ่านไป 5 นาที (300,000 มิลลิวินาที): ไฟสีเหลืองจะเปิด.
  5. เมื่อเวลาผ่านไป 10 นาที (600,000 มิลลิวินาที): ไฟสีแดงจะเปิด.
  6. ผู้ใช้กดปุ่ม S2 (หยุดทำงาน): ทุกไฟ (สีฟ้า, สีเขียว, สีเหลือง, สีแดง) จะปิด และระบบจะหยุดทำงาน.