เมื่อทำการต่อวงจร จนเสร็จแล้ว ก็มาเขียน 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*/
}
}
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