Tải bản đầy đủ (.docx) (47 trang)

bài-báo-cáo-1

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (357.4 KB, 47 trang )

TRƯỜNG ĐẠI HỌC KHOA HỌC HUẾ
KHOA ĐIỆN TỬ-VIỄN THÔNG

BÀI BÁO CÁO
THỰC HÀNH

CƠ SỞ ĐIỆN TỬ - VIỄN THÔNG II

Giáo Viên Hướng Dẫn:

NGUYỄN ĐỨC NHẬT QUANG
Sinh Viên Thực Hiện:
LÊ VĂN ĐÁ
LÊ CƠNG NGUN
LÊ CƠNG TRÌNH
TRẦN VIẾT KHÁNH
Nhóm:3
Lớp Điện Tử Viễn Thơng K37
1


Năm Học:2016-2017

2


BÀI 1 : ĐIỀU KHIỂN HOẠT ĐỘNG LED BẰNG MÁY TÍNH

I. Kết quả thực hiện:
1. Kết quả thực hành :
- Những kết quả làm được:


+ Thiết kế được giao diện bằng Visual studio 2010 trên PC.
+ Điều khiển được hoạt động của LED đơn ,Led RGB bằng lập trình trên Kit Ardunio Intel Gallileo
Gen 2.
+ Gộp code để điều khiển mã Morse .
+ Sáng dần, tắt dần, chạy vòng, sáng tuần tự, tắt tuần tự.
-Chưa làm được:
Khơng có.
2. Lưu đồ thuật toán :
a.Lưu đồ thuật toán trên Arduino:

3


Bắt Đầu

Khai báo giao tiếp cổng COM
khi báo các biến

Đọc dữ liệu nhận được từ cổng COM
Thiết lập trạng thái đàu của các Led đơn và Laze

Nhận các kí tự đặc biệt

Sai
Đúng

Tắt bật các Led đơn hoặc Led RBG

Nhận kí tự A-Z hoặc số


Sai
Đúng

Phát tín hiệu Laze theo mã morse

Tắt nguồn
4

Đúng

Kết thúc


Sai

b. Lưu đồ thuật toán Visual studio:

Bắt Đầu

Khai báo chọn cổng COM

Sai

Kiểm tra chọn cổng

Đúng

Tạo kết nối

Sai


Kiểm tra nút nhấn điều khiển LED

Gửi các kí tự đặc biệt qua cổng COM

Đúng

Sai

Kiểm tra nút nhấn gửi mã morse

5


Đúng

Gửi các kí tự trong ơ textbox qua cổng COM

Kết thúc

3. Thiết kế giao diện

6


7


II. Lập trình:


a. Code trên Arduino Intel Gallileo Gen 2:
byte rbg[]={6, 5, 3};
byte led[]={8,9,10,11,12};
int led1 = 8;
int led2 = 9;
int led3 = 10;
int led4 = 11;
int led5 = 12;
int Red = 6;
int Green =5;
int Blue = 3;
String dt;
void setup(){

// Khai báo giá trị ban đầu cho các chân điều khiển

for(int i=0; i<5; i++){
pinMode(led[i], OUTPUT);
}
for(int i=0; i<3; i++){
pinMode(rbg[i], OUTPUT);
}
for(int i=0; i<5; i++){
digitalWrite(led[i], LOW);
}
for(int i=0; i<3; i++){
analogWrite(rbg[i], 0);
}
Serial.begin(9600);
}

void loop(){
dt = Serial.readString(); // đọc giá trị nhận được.

8


if(dt == "cv"){ // chạy vòng bắt đầu bằng red, green, blue
for(int r=0; r<100; r++){
for(int l=0; l<4; l++){
analogWrite(rbg[l], 255);delay(20);
analogWrite(rbg[l], 0);delay(10);
}
}
}
if(dt=="sd") { // đèn red sáng dần
for(int lucdau=0;lucdau<255;lucdau++){
analogWrite(Red, lucdau);
delay(30);
}
}
if(dt=="td"){
for(int lucdau=255;lucdau>0;lucdau--){
analogWrite(Red, lucdau);
delay(30);
}
}
if(dt=="led1s"){// đèn led1 sáng
digitalWrite(led1, HIGH);
}
if(dt=="led1t") { // đèn led1 tắt

digitalWrite(led1, LOW);
}
if(dt=="led2s"){// đèn led2 sáng
digitalWrite(led2, HIGH);
}
if(dt=="led2t"){// đèn led2 tắt
digitalWrite(led2, LOW);
}

9


if(dt=="led3s"){// đèn led3 sáng
digitalWrite(led3, HIGH);
}
if(dt=="led3t"){// đèn led3 tắt
digitalWrite(led3, LOW);
}
if(dt=="led4s"){// đèn led4 sáng
digitalWrite(led4, HIGH);
}
if(dt=="led4t"){// đèn led4 tắt
digitalWrite(led4, LOW);
}
if(dt=="led5s"){// đèn led5 sáng
digitalWrite(led5, HIGH);
}
if(dt=="led5t"){// đèn led5 tắt
digitalWrite(led5, LOW);
}

if(dt=="5leds"){ // 5 led sáng cùng lúc
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
}
if(dt=="5ledt"){

// 5 led tắt cùng lúc

digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
}

10


if(dt=="red"){// Red sáng
analogWrite(Red, 255);
}
if(dt=="green"){// Green sáng
analogWrite(Green, 255);
}
if(dt=="blue"){

// Blue sáng


analogWrite(Blue, 255);
}
if(dt=="rbgt"){ // Đèn RBG tắt
analogWrite(Red, 0);
analogWrite(Green, 0);
analogWrite(Blue, 0);
}
if(dt == "do"){
analogWrite(Red, 255);
analogWrite(Green, 0);
analogWrite(Blue, 0);
}
if(dt == "xanh"){
analogWrite(Red, 0);
analogWrite(Green, 255);
analogWrite(Blue, 0);
}
if(dt == "xanhd"){
analogWrite(Red, 0);
analogWrite(Green, 0);
analogWrite(Blue, 255);
}

11


if(dt == "rbgs"){ // RBG sáng
analogWrite(Red, 255);
analogWrite(Green, 255);

analogWrite(Blue, 255);
}
if(dt=="5ledsd")

// 5 led sáng dần

{ for(int i=0; i<5;i++)
{
digitalWrite(led[i], 1);delay(100);
}
}
if(dt=="5ledtd")

// 5 led tắt dần.

{ for(int i=0; i<5;i++)
{
digitalWrite(led[i], 0);delay(100);
}
}
/// Mã morse
if( dt == "A"){
cham();gach();
}
if( dt == "B"){
gach();cham();cham();cham();
}
if( dt == "C"){
gach();cham();gach();cham();
}

if( dt == "D"){
gach();cham();cham();
}
if( dt == "E"){
cham();
}

12


if( dt == "F"){
cham();cham();gach();cham();
}
if( dt == "G"){
gach();gach();cham();
}
if( dt == "H"){
cham();cham();cham();
}
if( dt == "I"){
cham();cham();
}
if( dt == "J"){
cham();gach();gach();gach();
}
if( dt == "K"){
gach();cham();gach();
}
if( dt == "L"){
cham();gach();cham();cham();

}
if( dt == "M"){
gach();gach();
}
if( dt == "N"){
gach();cham();
}
if( dt == "O"){
gach();gach();gach();
}
if( dt == "P"){
cham();gach();gach();cham();
}

13


if( dt == "Q"){
gach();gach();cham();gach();
}
if( dt == "R"){
cham();gach();cham();
}
if( dt == "S"){
cham();cham();cham();
}
if( dt == "T"){
gach();
}
if( dt == "U"){

cham();cham();gach();
}
if( dt == "V"){
cham();cham();cham();gach();
}
if( dt == "W"){
cham();gach();gach();
}
if( dt == "X"){
gach();cham();cham();gach();
}
if( dt == "Y"){
gach();cham();gach();gach();
}
if( dt == "Z"){
gach();gach();cham();cham();
}
if( dt == "1"){
cham();gach();gach();gach();gach();
}

14


if( dt == "2"){
cham();cham();gach();gach();gach();
}
if( dt == "3"){
cham();cham();cham();gach();gach();
}

if( dt == "4"){
cham();cham();cham();cham();gach();
}
if( dt == "5") {
cham();cham();cham();cham();cham();
}
if( dt == "6"){
gach();cham();cham();cham();cham();
}
if( dt == "7"){
gach();gach();cham();cham();cham();
}
if( dt == "8"){
gach();gach();gach();cham();cham();
}
if( dt == "9"){
gach();gach();gach();gach();cham();
}
if( dt == "0"){
gach();gach();gach();gach();gach();
}
}

15


// chương trình mã morse
void cham(){
digitalWrite(led1, HIGH);
delay(100);

digitalWrite(led1, LOW);
delay(100);
}
void gach(){
digitalWrite(led1, HIGH);
delay(300);
digitalWrite(led1, LOW);
delay(300);
}

16


b. Code trong Visual studio
using
using
using
using
using
using
using
using
using

System;
System.Collections.Generic;
System.ComponentModel;
System.Data;
System.Drawing;
System.Linq;

System.Text;
System.Windows.Forms;
System.IO.Ports;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
string[] ComList = SerialPort.GetPortNames();
Array.Sort(ComList);
cbxComList.Items.AddRange(ComList);
}
private void ktCom_Click(object sender, EventArgs e)
{
if (cbxComList.Text == "")
{
MessageBox.Show(" Vui lòng chọn cổng COM", "Thông báo",
MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
if (serialPort.IsOpen)
{
serialPort.Close();
ktCom.Text = "Kết nối";

}
else
{
try
{
serialPort.PortName = cbxComList.Text;
serialPort.Open();

17


ktCom.Text = "Ngắt kết nối";
}
catch
{
MessageBox.Show("Không thể mở cổng COM" + serialPort.PortName,
"Lỗi",MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
private void led1_Click(object sender, EventArgs e)
{
serialPort.Write("led1s"); // đèn led1 sáng.
}
private void led2_Click(object sender, EventArgs e)
{
serialPort.Write("led2s"); // đèn led2 sáng.
}
private void led3_Click(object sender, EventArgs e)
{

serialPort.Write("led3s"); // đèn led3 sáng.
}
private void led4_Click(object sender, EventArgs e)
{
serialPort.Write("led4s"); // đèn led4 sáng.
}
private void led5_Click(object sender, EventArgs e)
{
serialPort.Write("led5s"); // đèn led5 sáng.
}
private void reset5led_Click(object sender, EventArgs e)
{
serialPort.Write("5ledt"); // tất cả 5 led đều tắt.
}
private void red_Click(object sender, EventArgs e)
{
serialPort.Write("red"); // Red sáng.
}
private void green_Click(object sender, EventArgs e)
{
serialPort.Write("green"); // Green sáng.
}
private void blue_Click(object sender, EventArgs e)
{
serialPort.Write("blue"); // Blue sáng.
}

18



private void resetRBG_Click(object sender, EventArgs e)
{
serialPort.Write("rbgt"); // đèn RBG tắt.
}
private void mamorse_Click(object sender, EventArgs e)
{
if (serialPort.IsOpen)
{
if ((dulieu.Text == ""))
{
MessageBox.Show("Chưa có dữ liệu!", "Thông Báo");
}
else
{
serialPort.Write(dulieu.Text);
dulieu.Text = "";
}
}
else
{
MessageBox.Show("COM chưa mở.", "Thông báo", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
private void sangdan_Click(object sender, EventArgs e)
{
serialPort.Write("sd"); // Red sáng dần.
}
private void modan_Click(object sender, EventArgs e)
{

serialPort.Write("td"); // Red tắt dần.
}
private void chayvong_Click(object sender, EventArgs e)
{
serialPort.Write("cv"); // chạy vòng.
}
private void stuantu_Click(object sender, EventArgs e)
{
serialPort.Write("5ledsd"); // 5 led sáng dần.
}
private void ttuantu_Click(object sender, EventArgs e)
{
serialPort.Write("5ledtd");// 5 led tắt dần.
}
}}

19


BÀI 2 : HIỂN THỊ LCD 16X2 THEO NỘI DUNG
NHẬP TỪ MÁY TÍNH
I. Kết quả thực hiện:
1. Kết quả thực hành :

- Những kết quả làm được:
+ Thiết kế được giao diện Visaul studio 2010 trên PC .
+ Hiển thị được chuỗi các kí tự nhập từ bàn phím bằng lập trình trên Kit Ardunio Intel Gallileo
Gen 2.
+ Khi vượt quá 16 ký tự tự độngxuống dòng, xuống dòng nguyên chữ, khi vượt quá 32 ký tự tự
động cuộn.

- Chưa làm được:
Khơng có
2. Lưu đồ thuật tốn :
a. Lưu đồ thuật toán Ardunio :

20


Bắt đầu

Khai báo giao tiếp cổng COM
Khai báo các biến
Sai
Đúng

Đọc dữ liệu từ cổng COM

Gán dữ liệu nhận được vào chuỗi

Hiển thị LCD

Tắt nguồn

Kết thúc

21


b. Lưu đồ thuật toán trong visual studio:


Bắt đầu

Sai
Sai
Đúng
Đúng

Khai báo chọn công COM

Kiểm tra chọn cổng

Tạo tuyến nối

Kiểm tra nút gửi dữ liệu qua cổng có đươc thực
hiện khơng

Gửi các ký tự trong ô textbox qua cổng COM

Kết thúc
22


3. Thiết kế giao diện:

23


II. Lập trình:

a. Code trên Arduino Intel Gallileo Gen 2:


#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // khai báo chân lcd
char a;
String chuoi_con,chuoi,b,c;
int i,j;
void setup()
{
Serial.begin(9600);
lcd.begin(16, 2);
}
void loop()
{ if(Serial.available()>0)
// nếu có dữ liệu nhập vào.
{ delay(200);
lcd.clear(); // thì xóa dữ liệu cũ đi.
i=1;
chuoi=chuoi_con="";
// lúc đầu chuỗi bằng chuỗi con bằng rỗng.
while(Serial.available()>0) // nếu có dữ liệu nhập vào.
{ a=Serial.read();
// gán dữ liệu nhận được vào a.
chuoi_con+=a;
// dữ liệu bằng chuỗi con cộng với dữ liệu nhận được.
if(a==' ')
// so sánh dữ liệu nhận được với khoảng trống
{ chuoi+=chuoi_con;
// dữ liệu lúc này sẽ bằng chuỗi cộng với chuỗi con.
chuoi_con="";
}

if(i==17)
{ lcd.clear();
lcd.print(chuoi);
// in dữ liệu ở mảng chuỗi ra màn hình LCD
b=chuoi;
//dùng cho chạy chữ hàng 2
lcd.setCursor(0,1);
// đặt con trỏ ở vị trí cột dầu tiên ở hàng hai
lcd.print(chuoi_con);
// in dữ liệu ở mảng chuỗi con ra màn hình.
c=chuoi_con;
//dùng cho chạy chữ hàng 2
}
else if(i>17)
{ lcd.write(a);
// nếu dữ liệu lớn hơn 17 thì chuỗi con cộng với những ký tự
18 trở lên
c+=a;
//dùng cho chạy chữ hàng 2

24


}
else
lcd.write(a);
i++;
delay(100);
}
}

if(c.length()>16)
// so sánh độ dài chuỗi c với 16, nếu c>16 thì cuộn dịng.
{ for ( i = 0;i{ if(Serial.available()>0) break;
lcd.clear();
lcd.print(b);
lcd.setCursor(0,1);
for (j=i;jlcd.print(c.charAt(j));
// truy cập vào mảng ký tự chuỗi c, và cuộn theo độ dài
chuỗi c
delay(300);
}
}
}

25


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×