1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

HỆ THỐNG NHÚNG, NHIỀU BÀI ( CÓ CODE )

37 169 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 37
Dung lượng 3 MB

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

Nội dung

Tự động đóng mở thiết bị điện trong tòa nhà thông minh dung từ xa thông qua internet (cửa, đèn, máy bơm, điều hòa…) define DEBUG true define RELAY_1 2 define RELAY_2 3 char x; void setup() { Serial.begin(9600); Serial1.begin(115200); chu y phai cung toc do voi ESP 8266 guidulieu(AT+CIOBAUD=9600 , 1000, DEBUG); Chọn chức năng client cho esp Serial1.begin(9600); chu y phai cung toc do voi ESP 8266 pinMode(13, OUTPUT); tuong tu chan 12

Trang 1

BÀI THỰC HÀNH NHÚNG (CODE) BÀI 1

Thực hành nhúng đấu nối, chạy demo mạch 8 led đơn sang dồn dùng PIC và ARDUINO

Main.c

#include <Main.h>

//COPYRIGHT BY XUAN KIEN 2017

// -CHUONG TRINH void main(void)

CHINH -{

//khai bao bien cuc bo o day

unsigned char MaDieuKhien=0x01, LuuTam=0x00,Gan;

signed char i,j;

Trang 2

Gan=MaDieuKhien|LuuTam;

P1=Gan;

_Delay_ms(300);

for(j=1;j<i;j++){

MaDieuKhien=MaDieuKhien<<1;Gan=MaDieuKhien|LuuTam;P1=Gan;

_Delay_ms(300);

} LuuTam=LuuTam|MaDieuKhien;

} }

;}}

}

Trang 3

Bài 2

Thực hành nhúng điều khiển đóng mở đèn điện khi trời sáng, dùng cảm biến ánh sáng dùng PIC

và ARDUINO

int sensorPin = A0; // select the input pin for the potentiometer

int ledPin = 13; // select the pin for the LED

Serial.println("THU THAP GIA TRI CAM BIEN ANH SANG!");

Serial.println("DUOC THUC HIEN BOI NGUYEN XUAN KIEN!");

Trang 4

sensorValue = analogRead(sensorPin); LayTong=LayTong+sensorValue;

Trang 8

//guidulieu("AT+CIOBAUD=9600\r\n", 1000, DEBUG); // Chọn chức năng client cho esp //Serial1.begin(9600); // chu y phai cung toc do voi ESP 8266

pinMode(13, OUTPUT); // tuong tu chan 12

guidulieu("AT+RST\r\n", 2000, DEBUG); // reset module

guidulieu("AT+CWMODE=1\r\n", 1000, DEBUG); // Chọn chức năng client cho esp

guidulieu("AT+CWQAP\r\n", 1000, DEBUG);

guidulieu("AT+CWJAP=\"KSTH\",\"kysuthuchanh\"\r\n", 10000, DEBUG); // Kết nối với wifi //guidulieu("AT+CIPSTA=\"192.168.0.178\"\r\n", 5000, DEBUG); // fix ip

guidulieu("AT+CIFSR\r\n", 5000, DEBUG); // xem ip là bn

guidulieu("AT+CIPMUX=1\r\n", 1000, DEBUG); // configure for multiple connections

Trang 9

"<form action=\"\" method=\"get\">"

"<input type=\"radio\" name=\"LED\" value=\"BAT1\">BAT 1" "<br/>"

"<input type=\"radio\" name=\"LED\" value=\"TAT1\">TAT 1<br>" "<br/>"

"<input type=\"radio\" name=\"LED\" value=\"BAT2\">BAT 2" "<br/>"

"<input type=\"radio\" name=\"LED\" value=\"TAT2\">TAT 2<br>" "<br/>"

static char InLine[300]; //Hạn chế ký tự

static unsigned int Position = 0;

Trang 10

Serial1.print(lenh); // send the read character to the Serial1

long int time = millis();

Trang 11

while ((time + thoigian) > millis()) {

Trang 12

Bài 5

Đi u khi n đ ng c dung IC L298-V3 và Arduinoề ể ộ ơ

//khai bao ket noi L298

while(!Serial);//cho ket noi UART

Serial.println("KHOI DONG UART XONG!");

pinMode(IN_1,OUTPUT);

pinMode(IN_2,OUTPUT);

pinMode(TANG,INPUT_PULLUP);//thiet lap tro keo len ben trong chan nay pinMode(GIAM,INPUT_PULLUP);//thiet lap tro keo len ben trong chan nay}

//chuong trinh chinh

Trang 13

void loop()

{

// put your main code here, to run repeatedly:

//khai bao bien va cai dat them

Trang 14

Turns on an LED on for one second, then off for one second, repeatedly.

Most Arduinos have an on-board LED you can control On the UNO, MEGA and ZERO

it is attached to digital pin 13, on MKR1000 on pin 6 LED_BUILTIN takes care

of use the correct LED pin whatever is the board used

If you want to know what pin the on-board LED is connected to on your Arduino model, check the Technical Specs of your board at https://www.arduino.cc/en/Main/Products

This example code is in the public domain

Trang 15

// the setup function runs once when you press reset or power the boardvoid setup()

digitalWrite(10, LOW); // turn the LED off by making the voltage LOW digitalWrite(11, LOW); // turn the LED off by making the voltage LOW digitalWrite(12, LOW); // turn the LED off by making the voltage LOW digitalWrite(13, LOW); // turn the LED off by making the voltage LOW delay(MyDelay); // wait for a second

}

Bài 7

Đi u khi n led sáng d n Arduinoề ể ồ

//khai bao cac chan ket noi led don

#define Led_1 0

Trang 16

void _bat_led(byte Led);

void _tat_led(byte Led);

void _bat_het(void);

void _tat_het(void);

byte _bit_test (byte Data,byte BitThuMay);

void _ghi_led(byte MaDieuKhien);

Trang 20

}

}

Trang 21

Dem=Dem+1;

Trang 22

Dem=0;

}}

else if(GIAM==0){

while(GIAM==0);

Dem=Dem-1;

if(Dem<0){

Dem=9;

}}

for(Dem_2=0;Dem_2<123;Dem_2++){

;}

}

}

Trang 23

//0b11000011Tam=Data & (0x80>>SoLanDich);//gui bit cao di truocif(Tam!=0)

{

DS=1;

}

Trang 24

DS=0;

}SH_CP=0;

;}

//khai bao cac chuong trinh con

void _TachSo(char Dem, char *H1, char *H2);

void _HienThiLed(char H1, char H2, char H3, char H4, char H5, char H6, char H7, char H8);void _DelayScan(char H1, char H2, char H3, char H4, char H5, char H6, char H7, char H8, int t);void _DenXanh_1(void);

void _DenVang_1(void);

Trang 25

signed char DenXanh_1=20,Den_Vang_1=3,Den_Do_1;

signed char DenXanh_2=15,Den_Vang_2=3,Den_Do_2;

signed char Dem=0;

Trang 26

Bài 12

Led đ nơ

H BAT TAT LED DON GIAN VOI PIC 16F887A - DAO DONG THACH ANH LA 4MHZ

#include<16F877A.H> //khai bao con pic se su dung

#include<math.h> //khai bao thu vien chua cac ham con se duoc su dung

//cau hinh dao dong thach anh 4MHZ

//khai bao cac ham chuon trinh con

void _Delay(char time);

//khai bao bien cuc bo

while(1)//vong lap vo han

{

output_high(PIN_B0);//bat led

Trang 27

_Delay(10);//tao tre 1soutput_low(PIN_B0);//tat led_Delay(10);//tao tre 1s}

}

/****************************************************************//****************************************************************/void _Delay(char time)

Bài 13

Led sang d nầ

//CHUONG TRINH DIEU KHIEN LED SANG DAN

#include<16F877A.H>//khai bao con pic se duoc su dung

#include<math.h>//khai bao thu vien chua cac ham se duoc su dung//cau hinh dao dong thach anh 4MHZ

//khai bao cac ham chuong trinh con

void _Delay(char time);//tao thoi gian tre

void _SangDan_C1(void);//ham dieu khien led sang dang theo cach 1void _SangDan_C2(void);//ham dieu khien led sang dang theo cach 2void _SangDan_C3(void);

Trang 29

output_b(0b00111111);//bat led thu sau

unsigned int8 temp,reset=0x00,init=0x01,move;

output_b(reset);//dua trang thai led ve trang thai ban dau la tat hetoutput_c(reset);

_Delay(5);//tao tre 0.5s

move=init;//nap gia tri khoi tao ban dau cho gia tri ngo ra

for(i=0;i<8;i++)//xay dung vong lap for

{

Trang 30

output_b(move);//nap gia tri cho ngo ra

temp=move;//luu gia tri ngo ra vao bien tam(buffer)_Delay(5);//tao tre 0.5s

move=move<<1;//dich 1 bit ve phia ben trai

move=move|temp;//or hai gia tri lai voi nhau

//move=0b00000010 do sau khi dich di mot bit//temp=0b00000001

//sau lenh move|temp thi ta duoc

output_c(move);//nap gia tri cho ngo ra

temp=move;//luu gia tri ngo ra vao bien tam(buffer)_Delay(5);//tao tre 0.5s

move=move<<1;//dich 1 bit ve phia ben trai

move=move|temp;//or hai gia tri lai voi nhau

//move=0b00000010 do sau khi dich di mot bit//temp=0b00000001

//sau lenh move|temp thi ta duoc

//move=0b00000011

Trang 31

value=value|temp;//or hai gia tri voi nhau//temp=0b00000001

//value=0b00000010//sau lenh value|temp thi ta duoc//move=0b00000011

value=value|temp;//or hai gia tri voi nhau//temp=0b00000001

//value=0b00000010

Trang 32

//sau lenh value|temp thi ta duoc//move=0b00000011

Trang 33

//value=0b00000001output_b(value);//nap gia tri vao ngo ra_Delay(3);//tao tre 0.3s

output_c(value);//nap gia tri vao ngo ra_Delay(3);//tao tre 0.3s

}

}

Bài 14

CHUONG TRINH DIEU KHIEN DONG CO DC

#include<16F877A.H>//cau hinh dong pic su dung

#include<math.h>//chen thu vien chua cac ham se duoc su dung

#include<lcd.h>//chen thu vien chua cac ham de giao tiep va tuong tac voi lcd

#define en_pwm PIN_C0//cho phep dong co dung hay chay

#define direction PIN_B0//thay doi chieu quay cua dong co

//cau hinh dao dong thach anh 4M

#fuses HS,NOWDT,NOPROTECT,NOLVP

Trang 34

#use delay(clock=4M)

/*****************************************************/

//khai bao bien toan cuc

/*****************************************************/

//khai bao cac ham chuong trinh con se duoc su dung

void _Delay(char time);//ham tao thoi gian tre

void _Init_Input(void);//ham cai dat dien tro keo len cho porb b

//voi ham nay ta khong can mac them dien tro nao o ngo vao

void _Init_lcd(void);//ham khoi tao lcd

void _Init_PWM(void);//ham khoi tao pwm

void _To_Left(void);//quay trai

void _To_Right(void);//quay phai

//khai bao bien cuc bo

_Init_Input();//cai dat dien tro keo len

_Init_lcd();//ham khoi tao lcd

_Init_PWM();//ham khoi tao PWM

_To_Right();//mac dinh la dong co quay phai

while(1)//xay dung vong lap vo han

{

if(INPUT(PIN_B0)==0){

while(INPUT(PIN_B0)==0);//cho doi toi khi nut nhan duoc tha ra_To_Left();//dong co quay trai

}else if(INPUT(PIN_B1)==0){

Trang 35

_To_Right();//dong quay phai}

lcd_init();//ham khoi tao lcd

lcd_putc('\f');//ham xoa trang man hinh lcd

}

void _Init_PWM(void)

{

OUTPUT_HIGH(en_PWM);//cho phep dong co duoc phep hoat dong

SETUP_CCP1(CCP_PWM);//cai dat ccp1 ve che do pwm

SETUP_CCP2(CCP_PWM);//cai dat ccp2 ve che do pwm

SETUP_TIMER_2(T2_DIV_BY_1,99,1);//T2_DIV_BY_1 dung de dinh ti le timer2 la 1:1 //99 la PR2(chu ky PWM/TIMER2), 1 la so ngat cua timer2 la 1

/*

ap dung cong thuc chu ky PWM ta co:

T(pwm)=[PR2+1]*4*(Tosc)*(TMR2 Prescale Value)

Trang 36

=[PR2+1]*4*(1/Fosc)*(TMR2 Prescale Value)hay T(pwm)=[99+1]*4*(1/4)*1

=100*10^(-6)=10^(-4)=10khzvay tan so de dieu khien dong co la 10(khz)

SETUP_TIMER_2(T2_DIV_BY_1,99,1);//T2_DIV_BY_1 dung de dinh ti le timer2 la 1:1

99 la PR2(chu ky PWM/TIMER2), 1 la so ngat cua timer2 la 1

ap dung cong thuc tinh chu ky bon phan

Ton=(x/T)*100%

thi ta duoc

60%=(x/99)=>x=59;

trong do: 60% la gia tri chu ky bon phan ma ta muon cai dat

nghia la trong chu ky pwm la 99 thi 60% thoi gian chu ky cua no lun duoc on, con laithi bi off

Trang 37

SETUP_TIMER_2(T2_DIV_BY_1,99,1);//T2_DIV_BY_1 dung de dinh ti le timer2 la 1:1

99 la PR2(chu ky PWM/TIMER2), 1 la so ngat cua timer2 la 1

ap dung cong thuc tinh chu ky bon phan

Ton=(x/T)*100%

thi ta duoc

60%=(x/99)=>x=59;

trong do: 60% la gia tri chu ky bon phan ma ta muon cai dat

nghia la trong chu ky pwm la 99 thi 60% thoi gian chu ky cua no lun duoc on, con laithi bi off

Ngày đăng: 22/02/2019, 23:47

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

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

w