Giao tiếp V.B 6.0 và arduino
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC NÔNG LÂM THÀNH PHỐ HỒ CHÍ MINH
KHOA CƠ KHÍ CÔNG NGHỆ
BÁO CÁO MÔN HỌC
THỰC TẬP ĐIỀU KHIỂN – LẬP TRÌNH
GIAO TIẾP MÁY TÍNH
SVTT: Nguyễn Hoàng Việt
Lớp: DH12TD
MSSV: 12138006
1
BÀI 1
GIAO DIỆN ĐO LƯỜNG VÀ ĐIỀU KHIỂN NHIỆT ĐỘ
I.
Giao diện giao tiếp máy tính dùng phần mềm Visual Basic 6.0
Hình 1.1 Thiết kế giao diện Visual Basic 6.0
2
Code Visual Basic 6.0
Form 1
Dim a
Private Sub Command2_Click()
Form1.Hide
Form2.Show
End Sub
Private Sub Form_Load()
End Sub
Private Sub thoat_Click()
Dim a As Integer
a = MsgBox("Ban Muon Thoat Khoi Chuong Trinh?", vbQuestion + vbYesNo,
"Thong bao")
Select Case a
Case vbYes
End
Case vbNo
End Select
End Sub
Private Sub Timer1_Timer()
a = Format(Time, "hh:mm:ss") ' thoi gian thuc
lbl.Caption = a
3
End Sub
Form 2
Dim nhietdo, b, so, data, d, h, q, w
Private Sub Command1_Click()
Form2.Hide
Form5.Show
End Sub
Private Sub Command_Click()
Timer2.Interval = Val(Text1.Text)
Timer3.Interval = Val(Text1.Text)
End Sub
Private Sub Command2_Click()
Dim a As Integer
a = MsgBox("Ban Muon Thoat Khoi Chuong Trinh?", vbQuestion + vbYesNo,
"Thong Bao")
Select Case a
Case vbYes
End
Case vbNo
End Select
End Sub
Private Sub Command3_Click()
4
Form2.Hide
Form1.Show
End Sub
Private Sub Command5_Click()
MSComm1.CommPort = d
MSComm1.PortOpen = True
MsgBox ("Ket noi thanh cong")
Label2.Caption = "Connecting"
End Sub
Private Sub Command6_Click()
MSComm1.PortOpen = False
MsgBox ("Da ngat ket noi")
Label2.Caption = "Disconnect"
End Sub
Private Sub Form_Load()
MSComm1.RThreshold = 1
MSComm1.InputLen = 1
MSComm1.InBufferSize = 16
MSComm1.InputLen = 10
MSComm1.DTREnable = False
For h = 1 To 16
5
Combo1.AddItem "COM" & Trim$(Str$(h))
Next h
End Sub
Private Sub Option2_Click()
Form3.Show
Form2.Hide
End Sub
Private Sub MSComm1_OnComm()
If MSComm1.InBufferCount <> 0 Then
nhietdo = MSComm1.Input
End If
data = Mid(nhietdo, 1, 4)
End Sub
Private Sub Timer1_Timer()
If (MSComm1.PortOpen = True) Then
If opt1.Value = True Then
txt.Text = data
ElseIf opt2.Value = True Then
txt.Text = data
End If
End If
6
lbl.Caption = Format(Time, "hh:mm:ss") ' thoi gian thuc
d = Val(Mid(Combo1.Text, 4, 1))
End Sub
Private Sub Timer2_Timer()
q = Text6.Text
w = Val(txt.Text)
If (MSComm1.PortOpen = True) Then
If IsNumeric(q) = True Then
If Val(q) <= w Then
MSComm1.Output = "m"
Shape1.BackColor = &HFF&
Else
MSComm1.Output = "t"
Shape1.BackColor = &HFF0000
End If
End If
End If
End Sub
Private Sub Timer3_Timer()
If opt2.Value = True Then
If MSComm1.PortOpen = True Then
7
If Not Adodc1.Recordset.EOF Then
Adodc1.Recordset.MoveLast
so = Val(Adodc1.Recordset.Fields("SO THU TU"))
so = so + 1
Adodc1.Recordset.AddNew
Adodc1.Recordset.Fields("SO THU TU") = so
Adodc1.Recordset.Fields("THOI GIAN") = Now()
Adodc1.Recordset.Fields("NHIET DO") = nhietdo
Adodc1.Recordset.Update
Adodc1.Refresh
End If
Adodc1.Refresh
Adodc1.Recordset.MoveLast
End If
End If
End Sub
8
II.
Sơ đồ nguyên lý kết nối Arduino UNO
Hình 1.2 Sơ đồ nguyên lý
Code arduino UNO:
float reading,voltage,temp;
int kt;
void setup() {
Serial.begin(9600);
pinMode(6,OUTPUT);
}
void doc()
{
reading = analogRead(A0);
9
voltage = map(reading,0,1023,0,1500);
temp = voltage/1.8 + 25;
Serial.println(temp);
delay(50);
}
void loop() {
doc();
kt = Serial.read();
if(kt=='m'){ digitalWrite(6,HIGH); }
if(kt=='t'){ digitalWrite(6,LOW);
}
10
BÀI 2
GIAO DIỆN ĐO LƯỜNG VÀ ĐIỀU CHỈNH SỐ
I.
Giao diện giao tiếp máy tính phần mềm Visual Basic 6.0
Hình 2.1 Giao diện thiết kế trên Visual Basic 6.0
11
Code Visual Basic 6.0
Form 1:
Dim a
Private Sub Command2_Click()
Form1.Hide
Form2.Show
End Sub
Private Sub Form_Load()
End Sub
Private Sub thoat_Click()
Dim a As Integer
a = MsgBox("Ban Muon Thoat Khoi Chuong Trinh?", vbQuestion + vbYesNo, "
Thong bao")
Select Case a
Case vbYes
End
Case vbNo
End Select
End Sub
Private Sub Timer1_Timer()
a = Format(Time, "hh:mm:ss") ' thoi gian thuc
lbl.Caption = a
12
End Sub
Form 2:
Dim buoc
Dim b, c, d As Integer
Dim h As Integer
Private Sub Form_Load()
MSComm1.RThreshold = 1
MSComm1.InBufferSize = 16
MSComm1.InputLen = 10
MSComm1.DTREnable = False
For h = 1 To 16
Combo1.AddItem "COM" & Trim$(Str$(h))
Next h
End Sub
Private Sub MSComm1_OnComm()
If MSComm1.InBufferCount <> 0 Then
buoc = MSComm1.Input
End If
Text1.Text = buoc
End Sub
Private Sub Timer1_Timer()
13
b = Val(Text6.Text)
c = Val(Text1.Text)
If (MSComm1.PortOpen = True) Then
If (Option1.Value = True) Then
If b <= c Then
MSComm1.Output = "m"
Shape1.BackColor = &HFF&
Else
MSComm1.Output = "t"
Shape1.BackColor = &HFF0000
End If
End If
If Option2.Value = True Then
MSComm1.Output = "t"
Shape1.BackColor = &HFF0000
End If
End If
Label6.Caption = Format(Time, "hh:mm:ss") ' thoi gian thuc
d = Val(Mid(Combo1.Text, 4, 1))
End Sub
Private Sub Command1_Click()
14
MSComm1.CommPort = d
MSComm1.PortOpen = True
MsgBox ("Ket noi thanh cong")
Label1.Caption = "Connecting"
End Sub
Private Sub Command2_Click()
Dim a As Integer
a = MsgBox("Ban Muon Thoat Khoi Chuong Trinh?", vbQuestion + vbYesNo,
"Thong Bao")
Select Case a
Case vbYes
End
Case vbNo
End Select
End Sub
Private Sub Command3_Click()
Form2.Hide
Form1.Show
End Sub
Private Sub Command4_Click()
MSComm1.PortOpen = False
MsgBox ("Da ngat ket noi")
15
Label1.Caption = "Disconnect"
End Sub
II.
Sơ đồ nguyên lý kết nối Arduino UNO
Hình 2.2 Sơ đồ nguyên lý
Code arduino UNO
const int buttonPin = 2;
int buttonState = 0;
unsigned int i = 0;
int kt;
void setup() {
Serial.begin(9600);
pinMode(buttonPin, INPUT);
pinMode(6, OUTPUT);
16
}
void loop() {
doc();
kt = Serial.read();
if(kt=='m'){ digitalWrite(6,HIGH); }
if(kt=='t'){ digitalWrite(6,LOW); }
delay(200);
}
void doc()
{buttonState = digitalRead(buttonPin);
if (buttonState == LOW)
{ i = i +1;}
Serial.println(i);
lcd.setCursor(0, 1);
lcd.print("
");
lcd.print(i);
}
BÀI 3
#include "DHT.h"
const int DHTPIN = A0;
//Đọc dữ liệu từ DHT11 ở chân 2 trên mạch Arduino
17
const int DHTTYPE = DHT11; //Khai báo loại cảm biến, có 2 loại là DHT11 và
DHT22
DHT dht(DHTPIN, DHTTYPE);
int kt;
int del = 100;
float reading0,reading,reading1,value,value1;
float voltage0,voltage,voltage1;
float temp0,temp,temp1,doam,doam1;
float h, t;
void setup() {
Serial.begin(9600);
dht.begin();
pinMode(7, OUTPUT);
pinMode(6, OUTPUT);
pinMode(5, OUTPUT);
pinMode(4, OUTPUT);
pinMode(3, OUTPUT);
}
void docnd()
{
h = dht.readHumidity();
//Đọc độ ẩm
t = dht.readTemperature(); //Đọc nhiệt độ
18
value = analogRead(A1);
doam = map(value,0,1023,0,100);
value1 = analogRead(A2);
doam1 = map(value1,0,1023,0,100);
reading = analogRead(A3);
voltage = reading * 5.0 / 1024.0;
temp = voltage * 100.0;
reading0 = analogRead(A5);
voltage0 = map(reading0,0,1023,0,1500);
temp0 = voltage0/1.8 + 25;
}
void printt()
{
Serial.println(doam+1000);
delay(del);
Serial.println(doam1+2000);
delay(del);
Serial.println(t+3000);
delay(del);
Serial.println(temp+4000);
delay(del);
19
Serial.println(h+5000);
delay(del);
Serial.println(temp0+6000);
delay(del);
}
void loop() {
docnd();
printt();
kt = Serial.read();
if
(kt == 'q') { digitalWrite(7,HIGH);}
else if (kt == 'w') { digitalWrite(7,LOW);}
else if (kt == 'e') { digitalWrite(6,HIGH);}
else if (kt == 'r') { digitalWrite(6,LOW);}
else if (kt == 't') { digitalWrite(5,HIGH);}
else if (kt == 'y') { digitalWrite(5,LOW);}
else if (kt == 'u') { digitalWrite(4,HIGH);}
else if (kt == 'i') { digitalWrite(4,LOW);}
else if (kt == 'o') { digitalWrite(3,HIGH);}
else if (kt == 'p') { digitalWrite(3,LOW);}
}
20
- Xem thêm -