Clip các sản phẩm tham dự cuộc thi Sensors & LEDs 2010

admin

Pay It Forward
Staff member
Kết quả cuộc thi SENSORS & LEDs 2010
Giải nhất: KLV-3UP
Giải nhì: BK-PAW, QHH1
Giải ba: LVL-TD08, EVEREST
Giải KK: NEGUP, NMN-BK, LVL, HiNaMi, BK-CGT



Clip một số sản phẩm Sensors & LEDs tham dự cuộc thi (8/16 sản phẩm)

KLV-3UP
<Còn tiếp>

Các đội sau đây chưa gửi clip về BTC :)
QHH1
EVEREST
NEGUP
BKN
BK-CGT
BK 825
CUIVTP
THE FALLEN

Chúc các đội sớm hoàn thành clip của đội mình ;)

 
không biết các bạn làm sản phẩm đèn nháy theo nhạc có thể cho mình cái sơ đồ mạch với cái code của các bạn được không vậy. mình đang định làm cái chơi cho vui mà ko biết cách giải thuật viết code cho nó sao cả.
 
cảm ơn bạn đã chia sẽ nhưng trong phần đó không có code không biết các bạn đội BK PAW có còn code không có thể cho mình tham khảo tý. hoặc các bạn nêu hướng lập trình cũng được. và hầu như các file trên không nêu cách kết nối với pic như thế nào cả. xuất ra led là dùng phương pháp nào chốt led hay là quét led.
 
Đây là code của đội BK_PAW. Gửi các bạn tham khảo.

Code:
/*------------------------------------------------------------------+
|			*Chuong trinh PIC16F887 va VU Meter	__BK_PAW		|
|			*Ngay viet: 12/2010									|
+-------------------------------------------------------------------+---------------+
+Mo ta phan cung:																	|
|	Mach hien thi do lon 3 dai tan so am thanh dung phuong phap chot led			|
|		Dai tan so thu nhat:
|			nhan tin hieu analog tu pin RE0
|			xuat ra 8 bit du lieu: pin RA0 va 7 pin port B gom RB1->RB7
|		Dai tan so thu hai:
|			nhan tin hieu analog tu pin RE1
|			xuat ra cac chan PORTC
|		Dai tan so thu hai:
|			nhan tin hieu analog tu pin RE2
|			xuat ra cac chan PORTD
|	Pin RB0 dung lam ngat ngoai de chuyen doi kieu hien thi							|
|	Xuat muc 1 den sang, muc 0 den tat			
+Mach co 8 trang thai hien thi gom:													|
|	0: am thanh cang lon thi cang nhieu den sang
|	1: giong tthai 1 nhung sau 1,5s thi den se dich phai 1 bit
|		su dung bien k de kiem soat so lan dich nghia la cu sau 2s vao chuong trinh ngat timer1
|		thi bien k se duoc tang len 1. Moi lan vao chuong trinh doi thi du lieu se duoc dich lai
|		tu dau su dung bien k.
|	2: giong tthai 2 nhung den se dich trai 1 bit
|	3: am thanh cang manh thi den nhay cang nhanh (ca 8 den nhay 1 luc)
|	4: giong tthai 3 nhung den se sang tat xen ke
|	5: am thanh cang lon thi cang it den sang (nguoc lai tthai 1)
|	6: giong tthai 3 nhung tin hieu doc duoc phai lon hon 1/2 tam toan thang thi moi sang	
|	7: ket hop 3 tthai so 4,1,3														|
+----------------------------------------------------------------------------------*/


#include <htc.h>

__CONFIG(XT & WDTDIS & PWRTEN & MCLREN & UNPROTECT & SWBOREN & IESODIS & FCMDIS & LVPDIS & DEBUGDIS); //1st config. Word

__CONFIG(BORV21); //2st config. Word

#define _XTAL_FREQ 	4000000 //tan so thach anh 4Mhz
							//khai bao tan so thach anh dung cho lenh delay 

/***********************************************************************+
|				             VARIABLES									|
+-----------------------------------------------------------------------*/
	
unsigned char k;						//luu so lan da dich trai/phai
unsigned char trangthai;				//kieu chay
unsigned char laptm1;					//luu so lan lap timer 1
unsigned int gtthap,gtgiua,gtcao;		//luu gia tri de hien thi dung trong trang thai 3 va 4
unsigned int tgthap,tggiua,tgcao;		//luu thoi gian sang tat den dung trong trang thai 3 va 4

/***********************************************************************+
|								SUBROUTINES								|
+-----------------------------------------------------------------------*/										
void init_port();
void init_adc();
void init_int();
unsigned int ReadADC();
unsigned char doi(unsigned int tmp, unsigned char trangthaitam);
unsigned char dichtrai(unsigned char dulieut);
unsigned char dichphai(unsigned char dulieup);

/***********************************************************************+
|								MAIN PROGRAM							|
+-----------------------------------------------------------------------*/										


void main()
{	
	unsigned int thap,giua,cao;					//cac bien luu du lieu doc duoc tu cac pin ADC
	unsigned char xthap,xgiua,xcao;				//cac bien luu du lieu se xuat ra port
	unsigned char tgthaptam,tggiuatam,tgcaotam;	/*cac bien tam luu thoi gian de so sanh voi
												thoi gian dang su dung dung trong tthai 3 va 4*/
	
	init_port();
	init_int();	
	init_adc();

	k=0;										//chua dich lan nao

	while(1){
	/*-----------------------------------------------------------------------	
					TRANG THAI 0 1 2 5
	-----------------------------------------------------------------------*/
		if(trangthai==0|trangthai==1|trangthai==2|trangthai==5)	//trang thai 0,1,2,5 xu ly so den sang
		{

	//-------------------------xu ly dai tan so thu nhat------------------------
		CHS0=1;					//doc chan AN5
		CHS1=0;
		thap=ReadADC();
		xthap=doi(thap,trangthai);
		if((xthap%2)==1)	RA0=1;	//chuyen RB0 thanh RA0
		else				RA0=0;
		PORTB=xthap;
		__delay_ms(10);
	
	//-------------------------xu ly dai tan so thu hai------------------------
		CHS0=0;					//doc chan AN6
		CHS1=1;
		giua=ReadADC();
		xgiua=doi(giua,trangthai);
		PORTC=xgiua;
		__delay_ms(10);
	//-------------------------xu ly dai tan so thu ba------------------------	
		CHS0=1;					//doc chan AN7
		cao=ReadADC();
		xcao=doi(cao,trangthai);
		PORTD=xcao;
		__delay_ms(10);
		}
	

	/*-----------------------------------------------------------------------	
					TRANG THAI 3 VA 4
	-----------------------------------------------------------------------*/	

			else if(trangthai==3|trangthai==4)		//trang thai 3 va 4 xu ly thoi gian
		{
	//-------------------------xu ly dai tan so thu nhat------------------------		
		CHS0=1;					//doc chan AN5
		CHS1=0;
		thap=ReadADC();
		tgthaptam=doi(thap,trangthai);
		if(tgthaptam<tgthap)
		tgthap=tgthaptam;
			if(tgthap==0)			
			{	tgthap=19;
				gtthap=~(gtthap);			//lay dao portB
				if((gtthap%2)==1)	RA0=1;	//chuyen RB0 thanh RA0
				else				RA0=0;
				PORTB=gtthap;
			}
			else
			{	tgthap--;
				__delay_ms(20);
			};
	
	//-------------------------xu ly dai tan so thu hai------------------------
		CHS0=0;						//doc chan AN6
		CHS1=1;
		giua=ReadADC();
		tggiuatam=doi(giua,trangthai);
		if(tggiuatam<tggiua)
		tggiua=tggiuatam;
			if(tggiua==0)			
			{	tggiua=19;
				gtgiua=~(gtgiua);	//lay dao portC
				PORTC=gtgiua;
			}
			else
			{tggiua--;
			__delay_ms(20);
			};
	
	//-------------------------xu ly dai tan so thu ba------------------------	
		CHS0=1;						//doc chan AN7
		cao=ReadADC();
		tgcaotam=doi(cao,trangthai);
		if(tgcaotam<tgcao)
		tgcao=tgcaotam;
			if(tgcao==0)			
			{	tgcao=19;
				gtcao=~(gtcao);		//lay dao portD
				PORTD=gtcao;
			}
			else
			{tgcao--;
			__delay_ms(20);
			};
		}
	
	
	/*-----------------------------------------------------------------------	
					TRANG THAI 6
	-----------------------------------------------------------------------*/
		else if(trangthai==6)						//trang thai 6
		{
	//-------------------------xu ly dai tan so thu nhat------------------------	
		CHS0=1;			//xu ly xuat port B
		CHS1=0;
		thap=ReadADC();
		tgthaptam=doi(thap,trangthai);
	if((tgthaptam<10)|(tgthap!=10))
	{
		if(tgthaptam<10)			
			{if(tgthaptam<tgthap)				/*neu thoi gian lay duoc nho hon thoi gian dang su dung
											thi dung thoi gian moi lay duoc de su dung*/
			tgthap=tgthaptam;
			};
		if((gtthap%2)==1)		RA0=1;	//chuyen RB0 thanh RA0
		else					RA0=0;
		PORTB=gtthap;

		if(tgthap==0)			
		{	tgthap=10;
			gtthap=~(gtthap);	//lay dao portB
			if((gtthap%2)==1)	//chuyen RB0 thanh RA0
			RA0=1;
			else
			RA0=0;
			PORTB=gtthap;
		}
		else
		{	tgthap--;
			__delay_ms(21);
		};
	}
	else
	{
		PORTB=0;
		RA0=0;
		gtthap=0xff;
	};
	
	//-------------------------xu ly dai tan so thu hai------------------------		
		CHS0=0;		//xu ly xuat port C
		CHS1=1;
		giua=ReadADC();
		tggiuatam=doi(giua,trangthai);
	if((tggiuatam<10)|(tggiua!=10))
	{
		if(tggiuatam<10)
		{
			if(tggiuatam<tggiua)
			tggiua=tggiuatam;
		};
		PORTC=gtgiua;

		if(tggiua==0)			
		{	tggiua=10;
			gtgiua=~(gtgiua);	//dao port C
			PORTC=gtgiua;
		}
		else
		{tggiua--;
		__delay_ms(21);
		};
	}
	else
	{
		PORTC=0;
		gtgiua=0xff;
	};
	
	//-------------------------xu ly dai tan so thu ba------------------------		
		CHS0=1;				//xu ly xuat port D
		cao=ReadADC();
		tgcaotam=doi(cao,trangthai);
	if((tgcaotam<10)|(tgcao!=10))
	{
		if(tgcaotam<10)
		{
			if(tgcaotam<tgcao)
			tgcao=tgcaotam;
		};
		PORTD=gtcao;
		if(tgcao==0)			
		{	tgcao=10;
			gtcao=~(gtcao);	//lay dao portD
			PORTD=gtcao;
		}
		else
		{tgcao--;
		__delay_ms(21);
		};
	}
	else
	{
		PORTD=0;
		gtcao=0xff;
	};
	}							//ket thuc trang thai 6
	

	/*-----------------------------------------------------------------------	
					TRANG THAI 7
	-----------------------------------------------------------------------*/	
		else if(trangthai==7)	//bat dau trang thai 7 (hon hop)
		{
		CHS0=1;
		CHS1=0;
		thap=ReadADC();
		tgthaptam=doi(thap,4);
		if(tgthaptam<tgthap)
		tgthap=tgthaptam;
			if(tgthap==0)			
			{	tgthap=19;
				gtthap=~(gtthap);	//lay dao portB
				if((gtthap%2)==1)	//chuyen RB0 thanh RA0
				RA0=1;
				else
				RA0=0;
				PORTB=gtthap;
			}
			else
			{tgthap--;
			__delay_ms(20);
			};
	
	
		CHS0=0;
		CHS1=1;
		giua=ReadADC();
		xgiua=doi(giua,1);
		PORTC=xgiua;
		__delay_ms(10);
	
	
		CHS0=1;
		cao=ReadADC();
		tgcaotam=doi(cao,3);
	if((tgcaotam<10)|(tgcao!=10))
	{
		if(tgcaotam<10)
		{
		if(tgcaotam<tgcao)
		tgcao=tgcaotam;
		};
			PORTD=gtcao;
			if(tgcao==0)			
			{	tgcao=10;
				gtcao=~(gtcao);	//lay dao portD
				PORTD=gtcao;
			}
			else
			{tgcao--;
			__delay_ms(21);
			};
	}
	else
	{
		PORTD=0;
		gtcao=0xff;
	};
	};							//ket thuc trang thai 7
	
	
	
};							//ket thuc vong lap while
}
 
Tiếp tục, bài dài quá nên không gửi 1 lần được.

Code:
/***********************************************************************+
|					CAC CHUONG TRINH KHOI TAO PORT						|
+-----------------------------------------------------------------------*/

void init_port(){
	TRISA=0;
	TRISB=0x01;
	TRISC=0;
	TRISD=0;
	TRISE0=1;
	TRISE1=1;
	TRISE2=1;
	ANSEL = 0;
	ANSELH = 0;
};

void init_int(){
	INTF = 0;//co bao ngat ngoai
	INTE = 1;//cho phep ngat ngoai
	INTEDG=0;//ngat canh xuong

	TMR1L = 0;	//interrupt after 0.5s
	TMR1H = 0;
	
	T1CON = 0x35;	//External Clock/8
				
	TMR1IF = 0;	//clear t1 interrupt
	TMR1IE = 1;
	
	PEIE = 1;	//enable interrupts peripral	
	GIE = 1;	//enable global interrupts
};

void init_adc(){
	ANS5 = 1;	//cac chan nhan ADC la analog
	ANS6 = 1;	//dung 3 chan PORT E
	ANS7 = 1;
	
	ADCON1 = 0;
	ADFM = 1;
	
	ADCON0 = 0;
	ADCS0 = 1;

	CHS2=1;		//su dung 3 chan ADC 5,6,7 nen bit thu 3 luon bang 1

	ADON = 1;
};


/***********************************************************************+
|					CHUONG TRINH PHUC VU NGAT 							|
+-----------------------------------------------------------------------*/

void interrupt isr(){
	if(TMR1IF && TMR1IE){
		TMR1IF  = 0;		//clear T1 interrupt flag
		if(laptm1==0)		//thuc hien lenh sau 4 lan vao ngat timer 1
		{	laptm1=3;
			if(k==7)		//thay doi k de thay doi vi tri cua day led
			k=0;
			else
			k++;
		}
		else
		laptm1--;
		};
		
	if(INTE && INTF)		//Ngat ngoai de thay doi trang thai hien thi
		{
		INTE=0;
		INTF = 0;			//xoa co ngat ngoai
		trangthai++;
		if(trangthai==3)
		{gtthap=0xff;gtgiua=0xff;gtcao=0xff;
		PORTB=0xff;
		RA0=1;
		PORTC=0xff;
		PORTD=0xff;
		}
		else if(trangthai==4|trangthai==7)
		{gtthap=0xaa;gtgiua=0x55;gtcao=0xaa;
		PORTB=0xAA;
		RA0=0;
		PORTC=0x55;
		PORTD=0xAA;
		}
		else if(trangthai==6)
		{gtthap=0xff;gtgiua=0xff;gtcao=0xff;
		tgthap=10;tggiua=10;tgcao=10;
		}		
		else if(trangthai==8)
		trangthai=0;
		INTE=1;
		};
}

/***********************************************************************+
|			CHUONG TRINH KIEM TRA VA DICH TRAI 8 BIT DU LIEU			|
+-----------------------------------------------------------------------*/
unsigned char dichtrai(unsigned char dulieut)
{
	if(dulieut>127)		//kiem tra bit thu 7 co bang 1 khong
	{dulieut<<=1;
	dulieut|=1;
	}
	else
	{dulieut<<=1;}
	return(dulieut);
};


/***********************************************************************+
|			CHUONG TRINH KIEM TRA VA DICH PHAI 8 BIT DU LIEU			|
+-----------------------------------------------------------------------*/
unsigned char dichphai(unsigned char dulieup)
{
	if((dulieup%2)==1)	//kiem tra bit 0 co bang 1 khong
	{dulieup>>=1;
	dulieup|=0x80;
	}
	else
	dulieup>>=1;
	return(dulieup);
};


/***********************************************************************+
|	CHUONG TRINH DOI DO LON TIN HIEU DOC DUOC VE CAC GIA TRI CAN THIET	|
+-----------------------------------------------------------------------*/
	/*tmp la bien luu do lon tin hieu doc duoc
	  trangthaitam la bien giu trang thai mong muon hien thi*/

unsigned char doi(unsigned int tmp,unsigned char trangthaitam)
{
	unsigned char tam,i;	//luu gia tri truoc khi dich va so lan dich
	unsigned char tgtam;	//luu so lan lap su dung o trang thai 3,4
	
	if((0<=tmp)&(tmp<=50))
	{tam=((0x00));
	tgtam=19;
	}

	else if((50<tmp)&(tmp<=140))
	{tam=((0x01));
	tgtam=16;
	}
	
	else if((140<tmp)&(tmp<=240))
	{tam=((0x03));
	tgtam=13;
	}

	else if((240<tmp)&(tmp<=340))
	{tam=((0x07));
	tgtam=11;
	}

	else if((340<tmp)&(tmp<=450))
	{tam=((0x0f));
	tgtam=8;
	}

	else if((450<tmp)&(tmp<=570))
	{tam=((0x1f));
	tgtam=6;
	}

	else if((570<tmp)&(tmp<=700))
	{tam=((0x3f));
	tgtam=4;
	}

	else if((700<tmp)&(tmp<=889))
	{tam=((0x7f));
	tgtam=2;
	}

	else
	{tam=((0xff));
	tgtam=1;
	};
	
	if(trangthaitam==0)								//dung yen 
	{if(tam==0)
	tam=(1);
	return(tam);
	}
		else if(trangthaitam==1)					//vua dich phai vua sang
		{if(tam==0)
		tam=(1);
		for(i=0;i<k;i++)
		tam=dichphai(tam);
		return(tam);
		}
	else if(trangthaitam==2)						//vua dich trai vua sang
	{if(tam==0)
	tam=(1);
	for(i=0;i<k;i++)
	tam=dichtrai(tam);
	return(tam);
	}
		else if(trangthaitam==5)					//dung yen va thuong sang
		return(~tam);
		
		else								/*den sang het va nhap nhay nhanh hay cham tuy nhac
												den sang xen ke
												trang thai 6*/
		return(tgtam);
			
};


/***********************************************************************+
|					CHUONG TRINH DOC DU LIEU ADC						|
+-----------------------------------------------------------------------*/	

unsigned int ReadADC()
{
	__delay_us(20);
	GODONE = 1;
	while(GODONE);
	return ((((unsigned int)ADRESH)<<8)|ADRESL);
};
 
thank bạn đã share. không biết bạn có thể nói rõ hơn cho mình ở chổ ngắt không.mình không biết bạn dùng mạch gì để tạo ngắt nữa.
 
Ngắt ngoài thì hồi đó mình làm ngắt ngoài dùng nút bấm nhưng bạn có thể cải tiến lại là dùng quang trở hoặc hồng ngoại cho ngầu, lướt tay qua nó 1 cái là đổi kiểu thì hay hơn. Mạch tạo ngắt ngoài mình sử dụng giống như cái nút nhất reset của mạch main pic đó.
 
thank bạn nhé. ah bạn cho mình hỏi tiếp cái nữa nhé không biết cái mạch led của bạn có phải là một chân điều khiển một dãy led ko. mà mấy cái dãy led màu đỏ nối sao vậy. còn cái tấm kính trên bo led bạn mua ở đâu thế có thể chỉ chổ cho mình được không
 
Đúng rồi, làm như vậy nhằm mục đích tăng mức độ hoành tráng của sản phẩm đi lòe thiên hạ. Mấy cái led đỏ nối đối nhau, nghĩa là bóng bên này sáng thì bóng đối xứng cũng sáng, nối như thế nào là tùy mức độ sáng tạo của bạn, có cái là hơi bị khó nối dây, dễ lộn lắm. Cái tấm mica đó thì ra mấy tiệm làm bảng led trang trí đặt là được thôi, hơi bị mắc đó.
 

tranhieu_hcmut

Cố Vấn CLB
Staff member
Cần cách ly giữa PIC & led bằng ULN2803 & trở công suất. tính toán để áp trên mỗi led khoảng 2.5 -> 3.5 V (tuỳ loại led), dòng từ 15 -> 25ma. Lúc trước hàn xong cái đống led đó mình cũng muốn lòi cả mắt...hic hic
 
Mạch nguyên lý gì mà chơi file obj lên là sao? Up file .dsn lên mới được. Cái khó bây giờ là vấn đề nguồn. Muốn đẹp với tiện thì dùng nguồn pin nhưng dùng thêm opamp rồi tụ rồi ic nữa e pin nhanh hết. Có đề nghị gì không?
 
Thêm nữa, tính làm cái cây nến có thể đáp ứng theo sức mạnh mình thổi cơ, nghĩa là nếu mình thổi mạnh thì tắt luôn nhưng nếu thổi yếu yếu thì nó sẽ lập lờ. Muốn làm như vầy thì t nghĩ chắc chỉ có nước đọc adc liên tục thôi chứ ko dùng 74hc14 được đâu.
 
Top