Hướng phát triển

Một phần của tài liệu THIẾT KẾ HỆ THỐNG PHÂN LOẠI XOÀI, CÓ CODE 2 (Trang 50 - 65)

DC: Direct Current

5.3 Hướng phát triển

- Kết hợp thêm cánh tay robot để vận chuyển sản phẩm.

- Kết hợp thêm cơ sở dữ liệu thêm, xóa, sửa sản phẩm cần phân loại. - Phân loại được liên tục các sản phẩm.

- Thiết kế và nghiên cứu để đọc được tất cả các kích thước của mã QR.

TÀI LIỆU KHAM KHẢO Tiếng việt:

[1] Nguyễn Hoàng Hà - Nguyễn Văn Trung.Giáo trình Visual

Studio. Huế. 2008.

[2] Phạm Quang Huy – Phạm Quang Hiển – Vũ Trọng Luật. Lập trình với

C#. NXB Thanh Niên. Websites:

[3] Tài liệu Visual Studio: http://visualcpp.net/visual-studio-la-gi-gioi-

thieu-phan- mem-visual-studio

LI

[5] Website: Mã QR – Wikipedia

[6] Website: Module quét mã 1D 2D QR GM65 [7] Website: Ardino IDE – Wikipedia

[8] Website: Cảm biến tiệm cận – Wikipedia [9] Website: Arduino Mega – Wikipedia

Trang 52

PHỤ LỤC Phụ lục I Mã nguồn cho chương trình

Chương trình Arduino: #include <Servo.h> Servo myservo_1; Servo myservo_2; Servo myservo_3; #define servoPin_1 9 #define servoPin_2 8 #define servoPin_3 10 #define BANGCHUYEN 22 #define CB_1 2 #define CB_2 3 #define CB_3 4

Trang 53 void setup() { Serial.begin(9600); Serial3.begin(9600); myservo_1.attach(servoPin_1); myservo_2.attach(servoPin_2); myservo_3.attach(servoPin_3); pinMode(BANGCHUYEN, OUTPUT); pinMode(CB_1, INPUT); pinMode(CB_2, INPUT); pinMode(CB_3, INPUT); myservo_1.write(0); myservo_2.write(0); myservo_3.write(0); } bool HLoai1 = 0; bool HLoai2 = 0; bool HLoai3 = 0;

Trang 54

String S; int dem = 0; void loop() { if (Serial3.available()) { char c = Serial3.read(); S += c; dem++; if (dem >= 9) {

if (HLoai1 == 0 && HLoai2 == 0 && HLoai3 == 0) { Serial.println(S); } S = ""; dem = 0; } } if (Serial.available()) {

Trang 55 char c = Serial.read(); if (c == '1') { HLoai1 = 1; } if (c == '2') { HLoai2 = 1; } if (c == '3') { HLoai3 = 1; } if (c == 'K') { digitalWrite(BANGCHUYEN, 1); } if ( c == 'D') { digitalWrite(BANGCHUYEN, 0); } } if (HLoai1 == 1) {

Trang 56

if (digitalRead(CB_1) == 0)

{

delay(300); // ??

for (int i = 0; i < 90; i++) { myservo_1.write(i); delay(3);

}

for (int i = 90; i > 0; i--) { myservo_1.write(i); delay(3); } HLoai1 = 0; } } if (HLoai2 == 1) { if (digitalRead(CB_2) == 0) {

Trang 57

delay(300);

for (int i = 0; i < 90; i++) { myservo_2.write(i); delay(3);

}

for (int i = 90; i > 0; i--) { myservo_2.write(i); delay(3); } HLoai2 = 0; } } if (HLoai3 == 1) { if (digitalRead(CB_3) == 0) { delay(300);

for (int i = 0; i < 90; i++) { myservo_3.write(i);

Trang 58

delay(3);

}

for (int i = 90; i > 0; i--) { myservo_3.write(i); delay(3); } HLoai3 = 0; } } }

Chương trình cho Visual:

InitializeComponent();

serialPort1.DataReceived += SerialPort1_DataReceived; // khai báo kết nối công COM

string[] BaudRate = { "1200", "2400", "4800", "9600", "19200", "38400", "57600", "115200" }; // dang sách tốc độ đường truyền

comboBox2.Items.AddRange(BaudRate); // add danh sách tốc độ đường truyền vào comboBox

comboBox2.SelectedIndex = 3; // chon vị tri ban đâu using System;

Trang 59 using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; using System.IO.Ports; using System.Xml; namespace PHAN_LOAI_SANG_PHAM_QRCODE {

public partial class Form1 : Form

{

public Form1() {

}

private void SerialPort1_DataReceived(object sender,

System.IO.Ports.SerialDataReceivedEventArgs e) // đọc data vdk gưi lên

Trang 60

{

string line = serialPort1.ReadLine(); // đọc 1 chuỗi (string) từ vdk gửi lên

this.BeginInvoke(new LineReceivedEvent(xuly), line); // chưa hiểu

}

private void Form1_Load(object sender, EventArgs e) {

comboBox1.DataSource = SerialPort.GetPortNames(); // quét tất cả cổng COM của máy tính đang kết nối đổ vào comboBox

}

private delegate void LineReceivedEvent(string line); // chưa hiểu

int l1 = 0, l2 = 0, l3 = 0;

private void xuly(string line) // xữ ly data được gưi lên

{

tb_data.Text = line.TrimEnd(); // chưa hiểu TrimEnd

if (line.TrimEnd() == "12345678") // nêu là "12345678" thì gưi lại VDK là sô "1" và công thêm hiên thi số lương

Trang 61

serialPort1.Write("1"); // truyen số 1 xuống lại arduino ?? hỏi lại

l1++; // cộng dồn số lượng sản phẩm

txt_l1.Text = l1.ToString(); // hiển thị số 1

Invoke(new MethodInvoker(() =>

lxt_l1.Items.Add(DateTime.Now.ToLongTimeString()))); // hiển thị thời gian thực datetime

}

if (line.TrimEnd() == "ABCDEFGH") // nêu là

"ABCDEFGH" thì gưi lại VDK là sô "2" và công thêm hiên thi số lương { serialPort1.Write("2"); l2++; txt_l2.Text = l2.ToString(); Invoke(new MethodInvoker(() =>

lxt_l2.Items.Add(DateTime.Now.ToLongTimeString()))); }

if (line.TrimEnd() == "TTTTTTTT") // nêu là "TTTTTTTT" thì gưi lại VDK là sô "3" và công thêm hiên thi số lương

{

serialPort1.Write("3"); l3++;

txt_l3.Text = l3.ToString();

Trang 62

lxt_l3.Items.Add(DateTime.Now.ToLongTimeString()))); }

}

private void timer1_Tick(object sender, EventArgs e) // chưa hiểu sao phải ghi ở timer1 mà k phải ở chỗ button

{

if (!serialPort1.IsOpen) // nếu chưa kết nối hiên thi "Chưa kết nối" và ẩn nút ngắt kết nối

{

button1.Enabled = true; button2.Enabled = false; label2.Text = ("Chưa kết nối"); label2.ForeColor = Color.Red; }

else if (serialPort1.IsOpen) // nếu đã kết nối hiên thi "Đã kết nối" và ẩn nút kết nối

{

button1.Enabled = false; button2.Enabled = true; label2.Text = ("Đã kết nối"); label2.ForeColor = Color.Blue; }

Trang 63

}

private void Form1_FormClosing(object sender,

FormClosingEventArgs e) // chưa hiểu hàm này

{ if(serialPort1.IsOpen) { serialPort1.Write("D"); } }

private void groupBox2_Enter(object sender, EventArgs e) {

}

private void comboBox1_SelectedIndexChanged(object sender,

EventArgs e)

{

}

Trang 64

{

}

private void button1_Click(object sender, EventArgs e) {

if (!serialPort1.IsOpen) // kiêm tra kết nối công com chưa nêu chưa thí tiến hành kết nối cổng COM đã chon

{

serialPort1.PortName = comboBox1.Text; serialPort1.BaudRate =

Convert.ToInt32(comboBox2.Text);

serialPort1.Open();

serialPort1.Write("K"); // truyền tín hiệu K xuống vdk

} }

private void button2_Click(object sender, EventArgs e) {

serialPort1.Write("D");

serialPort1.Close(); // ngắt kết nối với cổng COM

} }

Trang 65

Một phần của tài liệu THIẾT KẾ HỆ THỐNG PHÂN LOẠI XOÀI, CÓ CODE 2 (Trang 50 - 65)

Tải bản đầy đủ (DOC)

(65 trang)
w