1. Trang chủ
  2. » Luận Văn - Báo Cáo

Mạch Cảm Ứng Điện Dung Hiển Thị LED Sử Dụng Kit Arduino

18 455 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 18
Dung lượng 530,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Giới thiệu Arduino là một bo mạch vi xử lý được dùng để lập trình tương tác với các thiết bị phần cứng như cảm biến, động cơ, đèn hoặc các thiết bị khác.. Đặc điểm nổi bật của Arduino là

Trang 1

Mạch Cảm Ứng Điện Dung Hiển Thị LED Sử Dụng Kit

Arduino

Nhóm 16: Nguyễn Tuấn Duy

Hoàng Minh Phương Phan Phi Hóa

Nguyễn Minh Tuấn

1 Giới thiệu

Arduino là một bo mạch vi xử lý được dùng để lập trình tương tác với các thiết bị phần cứng như cảm biến, động cơ, đèn hoặc các thiết bị khác Đặc điểm nổi bật của Arduino là môi trường phát triển ứng dụng cực kỳ dễ sử dụng, với một ngôn ngữ lập trình có thể học

Trang 2

một cách nhanh chóng ngay cả với người ít am hiểu về điện tử và lập trình Và điều làm nên hiện tượng Arduino chính là mức giá rất thấp và tính chất nguồn mở từ phần cứng tới phần mềm Chỉ với khoảng $30, người dùng đã có thể sở hữu một bo Arduino có 20 ngõ I/O có thể tương tác và điều khiển chừng ấy thiết bị

Hiện nay có rất nhiều loại kit arduino được sử dụng , trong bài báo cáo này nhóm sử dụng Kit Arduino NaNo( ATmega328) để phù hợp với các điều kiện của nhóm.

1 số hình ảnh kit arduino nano

2 Mô tả Kit Arduino Nano

Trang 3

• Arduino Nano là một thiết kế nhỏ gọn với chức năng, sức mạnh, phần cứng cũng như cách sử dụng hoàn toàn tương đương với Arduino Uno, nếu bạn thích sự nhỏ gọn trong thiết kế thì đây là 1 sự lựa chọn hoàn toàn tối ưu dành cho bạn.

• Arduino Nano sử dụng chip dán ATmega328 (Arduino Nano 3.x) hoặc Atmega168 (Arduino Nano 2.x) Nó có chức năng tương tự của Arduino Duemilanove, nhưng khác pakage(gói) Nó thiếu chỉ một jack cắm điện DC, và làm việc với một cáp USB Mini-B Nano được thiết kế và được sản xuất rộng khắp.

Nguồn Arduino Nano

Arduino Nano có thể được hỗ trợ thông qua kết nối USB Mini-B, với nguồn ngoài giới hạn 6-20V (pin 30), hoặc 5V quy định cung cấp điện bên ngoài (pin 27) Arduino Nano

Chip FTDI FT232RL trên Nano chỉ được hỗ trợ nếu board đang được cung cấp thông qua cổng USB Kết quả là, khi chạy nguồn điện ngoài (không USB), đầu ra 3.3V (được cung cấp bởi chip FTDI) không có sẵn và các đèn LED RX và TX sẽ nhấp nháy nếu chân số 0 hoặc 1 là cao.

Bộ Nhớ

Các Atmega168 có 16 KB bộ nhớ flash để lưu trữ(trong đó có 2 KB được sử dụng cho bộ nạp khởi động); các ATmega328 có 32 KB, (cũng với 2 KB được sử dụng cho bộ nạp khởi động) Atmega168 có 1 KB của SRAM và 512 byte EEPROM (có thể đọc và ghi với thư viện EEPROM); các ATmega328 có 2 KB của SRAM và 1 KB EEPROM

Sơ đồ và chức năng các chân của Arduino Nano

Bộ Nhớ

Các Atmega168 có 16 KB bộ nhớ flash để lýu

trữ(trong đó có 2 KB đýợc sử dụng cho bộ nạp khởi động); các ATmega328 có 32 KB, (cũng với 2

KB đýợc sử dụng cho bộ nạp khởi động)

Atmega168 có 1 KB của SRAM và 512 byte EEPROM (có thể đọc và ghi với thý viện EEPROM); các ATmega328 có 2 KB của SRAM và

1 KB EEPROM.

Sõ đồ và chức năng các chân của

Arduino Nano

Trang 4

Chân Input / Output

Với mỗi chân trong số 14 chân (digital) trên Nano có thể được sử dụng như một đầu vào hay đầu ra, qua việc sử dụng pinMode (), digitalWrite (), và digitalRead () Mỗi chân

đó hoạt động ở mức 5 volts Mỗi pin có thể cung cấp hoặc nhận tối đa 40 mA và có một điện trở kéo lên bên trong (ngắt kết nối theo mặc định) 20-50 kohms Ngoài ra, một số chân có chức năng khác như:

Serial: 0 (RX) và 1 (TX) Được sử dụng để nhận (RX) và truyền tải (TX) TTL dữ

liệu nối tiếp Các chân này được kết nối với các chân tương ứng của FTDI USB-to-TTL

và nối tiếp chip.

Ngắt ngoài(pin 2 và 3):Các chân có thể được code để kích hoạt một ngắt trên một

giá trị thấp, một xung lên và xuống, hoặc một sự thay đổi về giá trị

PWM: 3, 5, 6, 9, 10, và 11Cung cấp 8-bit đầu ra PWM với analogWrite ()

SPI: 10 (SS), 11 (MOSI), 12 (miso), 13 (SCK)Những chân hỗ trợ SPI truyền

thông

LED: 13 Có một LED kết nối với pin số 13 Khi pin là giá trị cao, đèn LED được

bật, khi pin là thấp, nó ra.

Arduino Nano có 8 đầu vào tương tự, mỗi trong số đó cung cấp độ phân giải 10 bit

(tức là năm 1024 giá trị khác nhau) Theo mặc định thì mức điện sẽ là 5 volts, tuy nhiên

có thể thay đổi phạm vi của nó bằng cách sử dụng analogReference () chức năng Chân Analog 6 và 7 không thể được sử dụng như chân số (digital).

Ngoài ra, một số chân có chức năng khác:

I2C: 4 (SDA) và 5 (SCL) Hỗ trợ I2C (TWI) giao tiếp bằng cách sử dụng Wire

library.

Aref Điện áp tham chiếu cho các đầu vào tương tự Được sử dụng với

analogReference ().

Reset: Thiết lập lại hệ thống.

3 Sơ đồ nguyên lý

Trang 5

Thiết đặt các phần cứng cơ bản +) Thiết đặt LED

3 Sõ đồ nguyên lý c

Trang 6

+) Thiết đặt công tắc

Trang 7

+) Thiết đặt biến trở

Trang 8

#define set_PortB (1 << 7)

#define set_PortD (1 << 2)

#define CLK_ROW 2

#define DATA_ROW 3

#define CHOT 4

#define CLK_COL 5

#define DATA_COL 6

#define BUTTON1 10

#define BUTTON2 11

#define BUTTON3 12

#define BUTTON4 13

Trang 9

#define buffer_size 48

unsigned char mahang[8] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};

unsigned char macot [(buffer_size >> 3)][8] = {

{0x3c, 0x66, 0x66, 0x7e, 0x7e, 0x66, 0x66, 0x66}, // A

{0x7c, 0x66, 0x66, 0x7c, 0x7e, 0x66, 0x66, 0x7c}, // B

{0x3c, 0x76, 0x62, 0x60, 0x60, 0x62, 0x76, 0x3c}, // C

{0x7c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c}, // D

{0x7e, 0x60, 0x60, 0x7e, 0x7e, 0x60, 0x60, 0x7e}, // E

{0x3c, 0x66, 0x66, 0x7e, 0x7e, 0x66, 0x66, 0x66}, // A

};

unsigned char fon[20][8] = {

//{0x7E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18}, // T

//{0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c}, // I

//{0x7e, 0x60, 0x60, 0x7e, 0x7e, 0x60, 0x60, 0x7e}, // E

//{0x66, 0x76, 0x76, 0x7e, 0x6e, 0x66, 0x66, 0x66}, // N

//{0x3c, 0x66, 0x60, 0x7c, 0x66, 0x66, 0x7E, 0x3c}, // 6

//{0x3c, 0x7E, 0x66, 0x66, 0x3e, 0x06, 0x66, 0x3c}, // 9

{0x7c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c}, // D

{0x30, 0x71, 0x30, 0x30, 0x30, 0x30, 0x30, 0x79}, // 1-1

{0xC6, 0xC6, 0xC3, 0xC1, 0xC1, 0xC3, 0xC6, 0xe6}, // 1-x

{0x66, 0x66, 0xC6, 0x86, 0x86, 0xC6, 0x66, 0x67}, // x-L

{0x3F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xCC}, // L-T

{0x66, 0x66, 0x66, 0x7E, 0x7E, 0x66, 0x66, 0x66}, // H

{0x66, 0x76, 0x76, 0x7e, 0x6e, 0x66, 0x66, 0x66}, // N

{0x66, 0x66, 0x66, 0x7E, 0x7E, 0x66, 0x66, 0x66}, // H

{0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c}, // O

{0xC3, 0xE7, 0xFF, 0xDB, 0xC3, 0xC3, 0xC3, 0xC3}, // M

{0x18, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7E}, // 1

{0x3c, 0x66, 0x60, 0x7c, 0x66, 0x66, 0x7E, 0x3c}, // 6

{0x7c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c}, // D

{0x18, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7E}, // 1

{0x18, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7E}, // 1

{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},

{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},

{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}

};

unsigned char Row_Data_Offset[128] =

{

0x00, 0xfe, 0xff, 0x19, 0x19, 0xff, 0xfe, 0x00, // A

0x00, 0xff, 0xff, 0x99, 0x99, 0xff, 0x76, 0x00, // B

0x00, 0x7e, 0xff, 0xc3, 0x81, 0xc3, 0x66, 0x00, // C

0x00, 0xff, 0xff, 0x81, 0x81, 0xff, 0x7e, 0x00, // D

0x00, 0x7e, 0xff, 0xc3, 0x81, 0xc3, 0x66, 0x00, // C

0x00, 0xff, 0xff, 0x99, 0x99, 0xff, 0x76, 0x00, // B

0x00, 0xfe, 0xff, 0x19, 0x19, 0xff, 0xfe, 0x00, // A

};

unsigned char Col_Data_Offset[32][4] =

{

Trang 10

{0x80, 0x00, 0x00, 0x00},

{0x40, 0x00, 0x00, 0x00},

{0x20, 0x00, 0x00, 0x00},

{0x10, 0x00, 0x00, 0x00},

{0x08, 0x00, 0x00, 0x00},

{0x04, 0x00, 0x00, 0x00},

{0x02, 0x00, 0x00, 0x00},

{0x01, 0x00, 0x00, 0x00},

{0x00, 0x80, 0x00, 0x00},

{0x00, 0x40, 0x00, 0x00},

{0x00, 0x20, 0x00, 0x00},

{0x00, 0x10, 0x00, 0x00},

{0x00, 0x08, 0x00, 0x00},

{0x00, 0x04, 0x00, 0x00},

{0x00, 0x02, 0x00, 0x00},

{0x00, 0x01, 0x00, 0x00},

{0x00, 0x00, 0x80, 0x00},

{0x00, 0x00, 0x40, 0x00},

{0x00, 0x00, 0x20, 0x00},

{0x00, 0x00, 0x10, 0x00},

{0x00, 0x00, 0x08, 0x00},

{0x00, 0x00, 0x04, 0x00},

{0x00, 0x00, 0x02, 0x00},

{0x00, 0x00, 0x01, 0x00},

{0x00, 0x00, 0x00, 0x80},

{0x00, 0x00, 0x00, 0x40},

{0x00, 0x00, 0x00, 0x20},

{0x00, 0x00, 0x00, 0x10},

{0x00, 0x00, 0x00, 0x08},

{0x00, 0x00, 0x00, 0x04},

{0x00, 0x00, 0x00, 0x02},

{0x00, 0x00, 0x00, 0x01}

};

int i, j;

int temp;

int buttonState[4], Last, State;

void GPIO_Init(void)

{

// Output

pinMode(CLK_ROW, OUTPUT);

pinMode(DATA_ROW, OUTPUT);

pinMode(CHOT, OUTPUT);

pinMode(CLK_COL, OUTPUT);

pinMode(DATA_COL, OUTPUT);

// input

pinMode(BUTTON1, INPUT);

pinMode(BUTTON2, INPUT);

pinMode(BUTTON3, INPUT);

pinMode(BUTTON4, INPUT);

}

void ShiftOut_Row(unsigned char TxData) {

unsigned int i, temp;

Trang 11

for( i=0; i<8; i++)

{

temp = TxData;

temp = temp & 0x80; // lay ra bit trong so cao nhat cua data "TxData"

if(temp == 0x80) // so sanh tung bit cua data

"Pin_Out" bang 1 hay bang 0 de xuot gia tri tuong ung voi bit ra chan DS digitalWrite(DATA_ROW, 1); //DATA_ROW = 1; // dat bit 1 len chan DS serial data input 74595

else

digitalWrite(DATA_ROW, 0); // DATA_ROW = 0; // dat bit 0 len chan DS serial data input 74595

TxData = TxData << 1;

digitalWrite(CLK_ROW, 0); // CLK_ROW = 0;// tao xung clock dang suon duong cho chan SHCP shift register clock input

digitalWrite(CLK_ROW, 1); // CLK_ROW = 1; // cho SCK len

1 de tao ra 1 suon duong

}

}

void ShiftOut_Col(unsigned char TxData)

{

unsigned int i, temp;

for( i=0; i<8; i++)

{

temp = TxData;

temp = temp & 0x01; // lay ra bit trong so thap nhat cua data "TxData"

if(temp == 0x01) // so sanh tung bit cua data

"TxData" bang 1 hay bang 0 de xuot gia tri tuong ung voi bit ra chan DS digitalWrite(DATA_COL, 1); // DATA_COL = 1; // dat bit 1 len chan DS serial data input 74595

else

digitalWrite(DATA_COL, 0); //DATA_COL = 0; // dat bit 0 len chan DS serial data input 74595

TxData = TxData >> 1;

digitalWrite(CLK_COL, 0); // SCK_COL = 0;// tao xung clock dang suon duong cho chan SHCP shift register clock input

digitalWrite(CLK_COL, 1); // SCK_COL = 1;// cho SCK len 1

de tao ra 1 suon duong

}

}

void GotoXY(unsigned char a)

{

unsigned char i;

for(i=0; i<a; i++)

{

digitalWrite(DATA_COL, 0); // DATA_COL = 0;

digitalWrite(CLK_COL, 0); // SCK_COL = 0; // tao xung clock dang suon duong cho chan SHCP shift register clock input

digitalWrite(CLK_COL, 1); // SCK_COL = 1; // cho SCK len

1 de tao ra 1 suon duong

}

}

Trang 12

void Data1(unsigned char Number_Col, unsigned char Number_Row, unsigned char numder_lap, unsigned char a)

{

unsigned char i, m, n, k;

Number_Col = Number_Col >> 3;

Number_Row = Number_Row >> 3;

for(k=0; k<numder_lap; k++)

for(i=0; i<8; i++)

{

for(n=0; n<Number_Col; n++)

{

ShiftOut_Col(macot[Number_Col-n-1][i]);

}

GotoXY(a);

for(m=0; m<Number_Row; m++)

{

ShiftOut_Row(mahang[i]);

}

digitalWrite(CHOT, 0); // CHOT = 0;

digitalWrite(CHOT, 1); // CHOT = 1;

//for(m=0; m<=Number_Row; m++) ShiftOut_Row(0X00);

//digitalWrite(CHOT, 0); // CHOT = 0;

//digitalWrite(CHOT, 1); // CHOT = 1;

}

}

void LED_Write_All_Matrix_Out(unsigned char Number_Col, unsigned char Number_Row, unsigned char x, unsigned char a)

{

unsigned char col_index, row_index, m, n, k, Number;

Number = Number_Col >> 3;

Number_Row = Number_Row >> 3;

for(k=0; k<10; k++)

for(col_index=0; col_index < Number_Col-x; col_index++)

{

for(row_index=0; row_index < Number_Row; row_index++)

{

ShiftOut_Row(Row_Data_Offset[col_index + (Number_Col *

(Number_Row-1) - row_index * Number_Col)]);

}

for(m=0; m<Number; m++)

{

ShiftOut_Col(Col_Data_Offset[col_index+x][Number-m-1]);

}

digitalWrite(CHOT, 0); // CHOT = 0;

digitalWrite(CHOT, 1); // CHOT = 1;

}

}

int CheckButtom()

{

int i;

for(i=0; i<4; i++)

{

buttonState[i] = 0;

}

buttonState[0] = digitalRead(BUTTON1);

Trang 13

buttonState[1] = digitalRead(BUTTON2);

buttonState[2] = digitalRead(BUTTON3);

buttonState[3] = digitalRead(BUTTON4);

for(i=0; i<4; i++)

{

if(buttonState[i] == 1)

{

Last = i+1;

//Serial.println(Last);

return Last;

}

}

}

int Interface1(int value)

{

int ck;

switch(value)

{

////////////////////////////////////////////////////case 1//////////////////////////////////////////////////////////

case 1:

for(i=0; i<6; i++)

{

for(j=0; j<8; j++)

{

macot[i][j] = fon[i+12][j];

}

}

for(j=0; j<32; j++)

{

for(i=0; i<24 ;i++)

{

ck = CheckButtom();

if(ck != -1)

{

Last = ck;

return 0;

}

Data1(buffer_size, 24, 5, i);

}

for(i=24; i>=0 ;i )

{

ck = CheckButtom();

if(ck != -1)

{

Last = ck;

return 0;

}

Data1(buffer_size, 24, 5, i);

}

}

break;

////////////////////////////////////////////////////case 2//////////////////////////////////////////////////////////

case 2:

for(i=0; i<6; i++)

Trang 14

{

for(j=0; j<8; j++)

{

macot[i][j] = fon[i][j];

}

}

for(j=0; j<20; j++)

{

for(i=0; i<48 ;i++)

{

ck = CheckButtom();

if(ck != -1)

{

Last = ck;

return 0;

}

Data1(buffer_size, 24, 15, i);

}

for(i=48; i>=0 ;i )

{

ck = CheckButtom();

if(ck != -1)

{

Last = ck;

return 0;

}

Data1(buffer_size, 24, 15, i);

}

}

break;

////////////////////////////////////////////////////case 3//////////////////////////////////////////////////////////

case 3:

for(i=0; i<6; i++)

{

for(j=0; j<8; j++)

{

macot[i][j] = fon[i][j];

}

}

for(j=0; j<20; j++)

{

for(i=0; i<2 ;i++)

{

ck = CheckButtom();

if(ck != -1)

{

Last = ck;

return 0;

}

Data1(buffer_size, 24, 10, 0);

}

ck = CheckButtom();

if(ck != -1)

{

Last = ck;

return 0;

Trang 15

}

Data1(buffer_size, 24, 10, 48);

}

break;

////////////////////////////////////////////////////case 4//////////////////////////////////////////////////////////

case 4:

for(i=0; i<6; i++)

{

for(j=0; j<8; j++)

{

macot[i][j] = fon[i+6][j];

}

}

for(j=0; j<20; j++)

{

for(i=0; i<48 ;i++)

{

ck = CheckButtom();

if(ck != -1)

{

Last = ck;

return 0;

}

Data1(buffer_size, 24, 15, i);

}

for(i=48; i>=0 ;i )

{

ck = CheckButtom();

if(ck != -1)

{

Last = ck;

return 0;

}

Data1(buffer_size, 24, 15, i);

}

}

break;

}

}

// setup

void setup()

{

Serial.begin(9600);

DDRB = 0xff;

DDRC = 0xff;

DDRD = 0xff;

GPIO_Init();

Last = 1;

}

// loop

void loop()

{

//PORTB = 0xf0;

//delay(500);

//Serial.println(255);

Ngày đăng: 12/10/2015, 10:32

HÌNH ẢNH LIÊN QUAN

Sơ đồ và chức năng các chân của Arduino Nano - Mạch Cảm Ứng Điện Dung Hiển Thị LED Sử Dụng Kit Arduino
Sơ đồ v à chức năng các chân của Arduino Nano (Trang 3)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w