การเขียนโปรแกรมควบคุมสวิตซ์กดติดปล่อยดับ
ในการยกตัวอย่างเราจะใช้ สวิทช์กดติดปล่อยดับ ความหมายก็คือ เมื่อเรากดสวิทช์ มันจะกลายเป็นวงจรปิด (กระแสไฟจะไหล) เมื่อเราปล่อยมันจะกลายเป็นวงจรเปิด (กระแสไฟไม่ไหล) ต่อไปก็ถึงเวลาทำวงจร ซึ่งจะมีรูปแบบในลักษณะนี้
คราวนี้เราจะต่อวงจรทดลองตามรูปด้านบนกัน

เมื่อทำการต่อวงจร จนเสร็จแล้ว ก็มาเขียน Code แต่ก่อนอื่นเรามาทำความเข้าใจเกี่ยวกับฟังก์ชั่นที่สำคัญ สำหรับการอ่านค่า Digital ก่อน

Pin Mode (PIN, MODE);

คำสั่ง pinMode เป็นคำสั่งที่ใช้ในการกำหนดสถานะขาของ Arduino Nano โดยจะมีอยู่ 2 โหมด คือ Input และ Output ซึ่งโหมด Input ก็คือกำหนดให้ค่านั้นใช้สำหรับการรับค่า ส่วน Output คือกำหนดให้ขานั้นใช้ในการส่งค่า จากตัวอย่างนั้นเราต้องการให้ ขาที่ 2 ใช้ในการรับค่าจาก สวิทช์ ดังนั้นเราจะกำหนดดังนี้

pinMode(2,INPUT); หลังจากที่เรากำหนดการทำงานของขาแล้วเรา จะอ่านค่าโดยใช้อีกคำสั่งหนึ่ง ก็คือ

digitalRead(PIN); คำสั่งนี้จะใช้ในการอ่านค่า Digital จากขาที่เราต้องการ โดยในการทดลองเราต้องการที่จะอ่านค่าขา D2

 

ซึ่งจะกำหนดได้ดังนี้

digitalRead(2);

โดยค่าที่ได้จากคำสั่งนี้ ก็จะมีแค่ 0 หรือ 1 เท่านั้น คราวนี้การนำไปใช้งานในการทดลองเราจะให้ กำหนดตัวแปรสำหรับเก็บค่า
ชื่อ buttonState  ก็จะเขียนได้ในลักษณะนี้

int buttonState;
buttonState = digitalRead(2);

 

Code ตัวอย่างสำหรับการทดลอง

Example Code :

int buttonPin = 2; // declare int parameter for button pin
int buttonState; //declare int parameter
void setup() {   
  Serial.begin(9600); //Start Serial Comunication with baud rate 9600
   pinMode(buttonPin, INPUT);//Set mode for buttonPin     
}
void loop(){
  buttonState = digitalRead(buttonPin); //Read digital signal
  Serial.println(buttonState); //Print buttonState to Serial Port

  delay(100); //delay for 0.1 second
}

 

     จากนั้น อัพโหลดโค๊ดให้กับ Arduino Nano เมื่ออัพโหลดเสร็จ แล้วเปิด Serial Monitor ดูว่าจะมีการเปลี่ยนแปลงไหมเมื่อ ทำการกด สวิทช์ แล้ว ค่าที่ได้คืออะไร ซึ่งเราสามารถคลิกที่ไอคอน ดังรูป

 

ซึ่งผลลัพธ์ที่จะได้จะมีลักษณะดังรูปข้างล่าง โดยที่เมื่อทำการกด สวิทช์ จะได้รับค่า 1 เมื่อ จากกระแสไฟ สามารถไหลผ่านไปได้ และเป็น 0 เมื่อไม่ได้กดเพราะ กระแสไฟไหลผ่าน สวิทช์ ไม่ได้  

int buttonPin0 = 5; /*กำหนดตัวแปรที่ขา 5 เป็นอินเทเจอร์*/
int buttonPin1 = 6; /*กำหนดตัวแปรที่ขา 6 เป็นอินเทเจอร์*/
int buttonState; /*กำหนดสถานะของตัวแปร*/

void setup() { /*กำหนดขาการใช้งานเป็นอินพุต,เอาท์พุต*/
Serial.begin(9600); /*กำหนดสถานะอินพุต*/
pinMode(buttonPin0, INPUT); /*กำหนดให้ขา Pin0 เป็นอินพุต*/
pinMode(buttonPin1, INPUT); /*กำหนดให้ขา Pin1 เป็นอินพุต*/
pinMode(3,OUTPUT); /*กำหนดให้ขา Pin3 เป็นเอาท์พุต*/
pinMode(4,OUTPUT); /*กำหนดให้ขา Pin4 เป็นเอาท์พุต*/

}
void loop(){ /*สั่งให้โปรแกรมทำงานวนเป็นลูป*/
if (digitalRead(buttonPin0)==HIGH) /*ถ้าขา Pin0 เป็น HIGH*/
{

Serial.println("1"); /*ให้แสดงเลข 1*/
digitalWrite(3,HIGH); /*กำหนดสถานะพอร์ตขา 3 ให้เป็น HIGH*/
delay(500); /*ทำการหน่วงเวลาจากคำสั่งด้านบนเป็นเวลา 500 ms คือจะให้ไฟติด 0.5 วินาที*/
}

if (digitalRead(buttonPin1)==HIGH) /*ถ้าขา Pin1 เป็น HIGH*/
{

Serial.println("11"); /*ให้แสดงเลข 11*/
digitalWrite(4,HIGH); /*กำหนดสถานะพอร์ตขา 4 ให้เป็น HIGH*/
delay(500); /*ทำการหน่วงเวลาจากคำสั่งด้านบนเป็นเวลา 500 ms*/
}

else /*ตรวจสอบเงื่อนไข*/
{ Serial.println("0"); /*ให้เริ่มต้นแสดงที่เลข 0*/
digitalWrite(3,LOW); /*กำหนดสถานะพอร์ตขา 3 ให้เป็น LOW*/
digitalWrite(4,LOW); /*กำหนดสถานะพอร์ตขา 4 ให้เป็น LOW*/
delay(500); /*ทำการหน่วงเวลาจากคำสั่งด้านบนเป็นเวลา 500 ms*/
}
}

Code Arduino และคำธิบายโค้ด
Code Visual Basic พร้อมคำอธิบาย

Dim s As Double                                                //ประกาศตัวแปร s              
Dim rdet As String                                             //ประกาศตัวแปร rdet เป็นตัวอักษร
Dim t As Double                                                //ประกาศตัวแปร t              

Private Sub Command1_Click()                           //คำสั่งในคอมมาน 1
Form2.Show                                                            //ให้ฟอร์ม 2 แสดง
End Sub                                                            //จบคำสั่ง

Private Sub Command2_Click()                           //คำสั่งในคอมมาน 1
Unload Me                                                        //ปิดฟอร์ม
End Sub                                                            //จบคำสั่ง

Private Sub Form_Load()                                   //คำสั่งในฟอร์มโหลด

     If  MSComm1.PortOpen = False Then            //ถ้าพอร์ตอนุกรมปิด ให้ทำ
MSComm1.PortOpen = True                       //ให้พอร์ตอนุกรมเปิดใช้งาน   
End If                                                          //จบเงื่อนไข
rdet = ""                                                       //ตัวแปร rdet = ””

End Sub                                                            //จบคำสั่ง

Private Sub Timer1_Timer()                               //คำสั่งใน Timer 1

    Do
DoEvents
rdet = rdet + MSComm1.Input
Loop Until Right(rdet, 1) = Chr(10)
Text1.Text = Val(rdet)
rdet = ""   

If Text1.Text = "11" Then                          //ถ้า Text1 = 11 ให้ทำ
Shape3.FillColor = &HFF&                                    //ให้ Shape3 เป็นสีแดง
Text2.Text = "on"                                      //ให้ Text2 = “on”
Shape1.FillColor = &HFF&                                    //ให้ Shape1 เป็นสีแดง
Shape2.FillColor = &H0&                          //ให้ Shape2 เป็นสีดำ
Shape5.FillColor = &H0&                          //ให้ Shape5 เป็นสีดำ
Shape6.FillColor = &H0&                          //ให้ Shape6 เป็นสีดำ
Shape7.FillColor = &H0&                          //ให้ Shape7 เป็นสีดำ
Shape8.FillColor = &H0&                          //ให้ Shape8 เป็นสีดำ
Shape9.FillColor = &H0&                          //ให้ Shape9 เป็นสีดำ
Shape10.FillColor = &H0&                        //ให้ Shape10 เป็นสีดำ

Timer1.Enabled = False                              //ให้ Timer 1 ปิดการใช้งาน
Timer2.Enabled = True                              //สั่งให้ Timer 2 เปิดใช้งาน


Else                                                              //ตรวจสอบเงื่อนไข

Shape3.FillColor = &H0&                          //ให้ Shape3 เป็นสีดำ
Text2.Text = "off"                                     //ให้ Text2 = “off”
Shape1.FillColor = &H0&                          //ให้ Shape1 เป็นสีดำ
Shape2.FillColor = &H0&                          //ให้ Shape2 เป็นสีดำ
Shape5.FillColor = &H0&                          //ให้ Shape5 เป็นสีดำ
Shape6.FillColor = &H0&                          //ให้ Shape6 เป็นสีดำ
Shape7.FillColor = &H0&                          //ให้ Shape7 เป็นสีดำ
Shape8.FillColor = &H0&                          //ให้ Shape8 เป็นสีดำ
Shape9.FillColor = &H0&                          //ให้ Shape9 เป็นสีดำ
Shape10.FillColor = &H0&                        //ให้ Shape10 เป็นสีดำ
End If                                                           //จบเงื่อนไข

        If Text1.Text = "1" Then                            //ถ้า Text1 = 1 ให้ทำ
Shape4.FillColor = &HFF&                                    //ให้ Shape4 เป็นสีแดง
Text4.Text = "on"                                      //ให้ Text4 = “on”
Shape1.FillColor = &HFF&                                    //ให้ Shape1 เป็นสีแดง
Shape2.FillColor = &H0&                          //ให้ Shape2 เป็นสีดำ
Shape5.FillColor = &H0&                          //ให้ Shape5 เป็นสีดำ
Shape6.FillColor = &H0&                          //ให้ Shape6 เป็นสีดำ
Shape7.FillColor = &H0&                          //ให้ Shape7 เป็นสีดำ
Shape8.FillColor = &H0&                          //ให้ Shape8 เป็นสีดำ
Shape9.FillColor = &H0&                          //ให้ Shape9 เป็นสีดำ
Shape10.FillColor = &H0&                        //ให้ Shape10 เป็นสีดำ

Timer1.Enabled = False                              //ให้ Timer 1 ปิดการใช้งาน
Timer2.Enabled = True                              //สั่งให้ Timer 2 เปิดใช้งาน

 

    Else                                                              //ตรวจสอบเงื่อนไข

        Shape4.FillColor = &H0&                          //ให้ Shape4 เป็นสีดำ
Text4.Text = "off"                                     //ให้ Text4 = “off”
Shape1.FillColor = &H0&                          //ให้ Shape1 เป็นสีดำ
Shape2.FillColor = &H0&                          //ให้ Shape2 เป็นสีดำ
Shape5.FillColor = &H0&                          //ให้ Shape5 เป็นสีดำ
Shape6.FillColor = &H0&                          //ให้ Shape6 เป็นสีดำ
Shape7.FillColor = &H0&                          //ให้ Shape7 เป็นสีดำ
Shape8.FillColor = &H0&                          //ให้ Shape8 เป็นสีดำ
Shape9.FillColor = &H0&                          //ให้ Shape9 เป็นสีดำ
Shape10.FillColor = &H0&                        //ให้ Shape10 เป็นสีดำ    
End If                                                           //จบเงื่อนไข 
End Sub                                                            //จบคำสั่ง

 

Private Sub Timer10_Timer()                             //คำสั่งใน Tiner10
Shape11.FillColor = &HFF&                      //ให้ Shape11 เป็นสีแดง    
Shape12.FillColor = &H0&                        //ให้ Shape12 เป็นสีดำ    
Shape13.FillColor = &H0&                        //ให้ Shape13 เป็นสีดำ    
Shape14.FillColor = &H0&                        //ให้ Shape14 เป็นสีดำ    
Shape15.FillColor = &H0&                        //ให้ Shape15 เป็นสีดำ    
Shape16.FillColor = &H0&                        //ให้ Shape16 เป็นสีดำ    
Shape17.FillColor = &H0&                        //ให้ Shape17 เป็นสีดำ    
Shape18.FillColor = &H0&                        //ให้ Shape18 เป็นสีดำ    

Timer10.Enabled = False                            //ให้ Timer 10 ปิดการใช้งาน
Timer11.Enabled = True                             //ให้ Timer 10 เปิดการใช้งาน
End Sub                                                            //จบคำสั่ง

Private Sub Timer11_Timer()                             //คำสั่งใน Timer 11
Shape11.FillColor = &H0&                        //ให้ Shape11 เป็นสีดำ    
Shape12.FillColor = &HFF&                      //ให้ Shape12 เป็นสีแดง    
Shape13.FillColor = &H0&                        //ให้ Shape13 เป็นสีดำ    
Shape14.FillColor = &H0&                        “--------------------------”    
Shape15.FillColor = &H0&                        “--------------------------”
Shape16.FillColor = &H0&                        “--------------------------”
Shape17.FillColor = &H0&                        “--------------------------”
Shape18.FillColor = &H0&                        “--------------------------”

Timer11.Enabled = False                            //ให้ Timer 10 ปิดการใช้งาน
Timer12.Enabled = True                             //ให้ Timer 10 เปิดการใช้งาน
End Sub                                                            //จบคำสั่ง

 

 

Private Sub Timer12_Timer()                             //คำสั่งใน Timer 12
Shape11.FillColor = &H0&
Shape12.FillColor = &H0&
Shape13.FillColor = &HFF&
Shape14.FillColor = &H0&
Shape15.FillColor = &H0&
Shape16.FillColor = &H0&
Shape17.FillColor = &H0&
Shape18.FillColor = &H0&

Timer12.Enabled = False
Timer13.Enabled = True
End Sub

Private Sub Timer13_Timer()                             //คำสั่งใน Timer 13
Shape11.FillColor = &H0&
Shape12.FillColor = &H0&
Shape13.FillColor = &H0&
Shape14.FillColor = &HFF&
Shape15.FillColor = &H0&
Shape16.FillColor = &H0&
Shape17.FillColor = &H0&
Shape18.FillColor = &H0&

Timer13.Enabled = False
Timer14.Enabled = True
End Sub

 

 

Private Sub Timer14_Timer()                             //คำสั่งใน Timer 14
Shape11.FillColor = &H0&
Shape12.FillColor = &H0&
Shape13.FillColor = &H0&
Shape14.FillColor = &H0&
Shape15.FillColor = &HFF&
Shape16.FillColor = &H0&
Shape17.FillColor = &H0&
Shape18.FillColor = &H0&

Timer14.Enabled = False
Timer15.Enabled = True
End Sub

Private Sub Timer15_Timer()                             //คำสั่งใน Timer 15
Shape11.FillColor = &H0&
Shape12.FillColor = &H0&
Shape13.FillColor = &H0&
Shape14.FillColor = &H0&
Shape15.FillColor = &H0&
Shape16.FillColor = &HFF&
Shape17.FillColor = &H0&
Shape18.FillColor = &H0&

Timer15.Enabled = False
Timer16.Enabled = True
End Sub

 

 

Private Sub Timer16_Timer()                             //คำสั่งใน Timer 16
Shape11.FillColor = &H0&
Shape12.FillColor = &H0&
Shape13.FillColor = &H0&
Shape14.FillColor = &H0&
Shape15.FillColor = &H0&
Shape16.FillColor = &H0&
Shape17.FillColor = &HFF&
Shape18.FillColor = &H0&

Timer16.Enabled = False
Timer17.Enabled = True
End Sub

Private Sub Timer17_Timer()                             //คำสั่งใน Timer 17
Shape11.FillColor = &H0&
Shape12.FillColor = &H0&
Shape13.FillColor = &H0&
Shape14.FillColor = &H0&
Shape15.FillColor = &H0&
Shape16.FillColor = &H0&
Shape17.FillColor = &H0&
Shape18.FillColor = &HFF&

Timer17.Enabled = False
Timer18.Enabled = True
End Sub

 

 

Private Sub Timer18_Timer()                             //คำสั่งใน Timer 18
Do
DoEvents
rdet = rdet + MSComm1.Input
Loop Until Right(rdet, 1) = Chr(10)
Text1.Text = Val(rdet)
rdet = ""


If Text1.Text = "11" Then
Shape3.FillColor = &HFF&
Text2.Text = "on"
Shape11.FillColor = &HFF&
Shape12.FillColor = &H0&
Shape13.FillColor = &H0&
Shape14.FillColor = &H0&
Shape15.FillColor = &H0&
Shape16.FillColor = &H0&
Shape17.FillColor = &H0&
Shape18.FillColor = &H0&

Timer18.Enabled = False
Timer10.Enabled = True


Else

Shape3.FillColor = &H0&
Text2.Text = "off"
Shape11.FillColor = &H0&
Shape12.FillColor = &H0&
Shape13.FillColor = &H0&
Shape14.FillColor = &H0&
Shape15.FillColor = &H0&
Shape16.FillColor = &H0&
Shape17.FillColor = &H0&
Shape18.FillColor = &H0&
End If

If Text1.Text = "1" Then
Shape4.FillColor = &HFF&
Text4.Text = "on"
Shape11.FillColor = &HFF&
Shape12.FillColor = &H0&
Shape13.FillColor = &H0&
Shape14.FillColor = &H0&
Shape15.FillColor = &H0&
Shape16.FillColor = &H0&
Shape17.FillColor = &H0&
Shape18.FillColor = &H0&

Timer18.Enabled = False
Timer10.Enabled = True

    Else

Shape4.FillColor = &H0&
Text4.Text = "off"
Shape11.FillColor = &H0&
Shape12.FillColor = &H0&
Shape13.FillColor = &H0&
Shape14.FillColor = &H0&
Shape15.FillColor = &H0&
Shape16.FillColor = &H0&
Shape17.FillColor = &H0&
Shape18.FillColor = &H0&
End If
End Sub

Private Sub Timer2_Timer()                               //คำสั่งใน Timer 2
Shape1.FillColor = &H0&
Shape2.FillColor = &HFF&
Shape5.FillColor = &H0&
Shape6.FillColor = &H0&
Shape7.FillColor = &H0&
Shape8.FillColor = &H0&
Shape9.FillColor = &H0&
Shape10.FillColor = &H0&

 

        Timer2.Enabled = False
Timer3.Enabled = True
End Sub

Private Sub Timer3_Timer()                               //คำสั่งใน Timer 3
Shape1.FillColor = &H0&
Shape2.FillColor = &H0&
Shape5.FillColor = &HFF&
Shape6.FillColor = &H0&
Shape7.FillColor = &H0&
Shape8.FillColor = &H0&
Shape9.FillColor = &H0&
Shape10.FillColor = &H0&

Timer3.Enabled = False
Timer4.Enabled = True
End Sub

Private Sub Timer4_Timer()                               //คำสั่งใน Timer 4
Shape1.FillColor = &H0&
Shape2.FillColor = &H0&
Shape5.FillColor = &H0&
Shape6.FillColor = &HFF&
Shape7.FillColor = &H0&
Shape8.FillColor = &H0&
Shape9.FillColor = &H0&
Shape10.FillColor = &H0&

Timer4.Enabled = False
Timer5.Enabled = True
End Sub

Private Sub Timer5_Timer()                               //คำสั่งใน Timer 5
Shape1.FillColor = &H0&
Shape2.FillColor = &H0&
Shape5.FillColor = &H0&
Shape6.FillColor = &H0&
Shape7.FillColor = &HFF&
Shape8.FillColor = &H0&
Shape9.FillColor = &H0&
Shape10.FillColor = &H0&

Timer5.Enabled = False
Timer6.Enabled = True
End Sub

 

Private Sub Timer6_Timer()                               //คำสั่งใน Timer 6
Shape1.FillColor = &H0&
Shape2.FillColor = &H0&
Shape5.FillColor = &H0&
Shape6.FillColor = &H0&
Shape7.FillColor = &H0&
Shape8.FillColor = &HFF&
Shape9.FillColor = &H0&
Shape10.FillColor = &H0&

Timer6.Enabled = False
Timer7.Enabled = True
End Sub

Private Sub Timer7_Timer()                               //คำสั่งใน Timer 7
Shape1.FillColor = &H0&
Shape2.FillColor = &H0&
Shape5.FillColor = &H0&
Shape6.FillColor = &H0&
Shape7.FillColor = &H0&
Shape8.FillColor = &H0&
Shape9.FillColor = &HFF&
Shape10.FillColor = &H0&

Timer7.Enabled = False
Timer8.Enabled = True
End Sub

 

 

Private Sub Timer8_Timer()                               //คำสั่งใน Timer 8
Shape1.FillColor = &H0&
Shape2.FillColor = &H0&
Shape5.FillColor = &H0&
Shape6.FillColor = &H0&
Shape7.FillColor = &H0&
Shape8.FillColor = &H0&
Shape9.FillColor = &H0&
Shape10.FillColor = &HFF&

Timer8.Enabled = False
Timer9.Enabled = True
End Sub

Private Sub Timer9_Timer()                               //คำสั่งใน Timer 9
Shape1.FillColor = &H0&
Shape2.FillColor = &H0&
Shape5.FillColor = &H0&
Shape6.FillColor = &H0&
Shape7.FillColor = &H0&
Shape8.FillColor = &H0&
Shape9.FillColor = &H0&
Shape10.FillColor = &H0&

Timer9.Enabled = False
Timer1.Enabled = True
End Sub

ดาวน์โหลดซอร์สโค้ด 1
ดาวน์โหลดซอร์สโค้ด 2
ดาวน์โหลดซอร์สโค้ด 3
ดาวน์โหลดซอร์สโค้ด 4
หน้าแรก
ข้อมูลส่วนตัว
กิจกรรม
ข่าวสาร
ลิงค์เพื่อน

    

 

 

 

 

    

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    

 

 

 

 

 

 

 

 

 

 

 

 

 

Free Web Hosting