Despre Proiect

Am incercat realizarea unei masinute controlata prin tastatura , trimitand date pe interfata seriala catre placuta realizata in prima etapa a proiectului.


Cu ajutorul microcontrolerului descifrez datele primite (tastele apasate de utilizator) iar apoi trimit mai departe o comanda catre telecomanda.


Descifrarea datelor primite de la utilizator se reduce la verificarea codului ascii al caracterului primit.


Telecomanda actioneaza asupra uneia din cele 4 comenzi(fata,spate,stanga,dreapta, comenzi actionate initial mecanic) cu ajutorul semnalului primit de la microcontroler ce deschide unul dintre cele 4 relee.

Poze Masinuta

Schema placutei cu telecomanda

Semnalul trece de la pinul microcontrolerului printr-o rezistenta ajungand la baza tranzistorului . Curentul ce ajunge la tranzistor deschide circuitul care trece prin releul corespunzator. Am folosit de asemenea pentru protectia releelor 4 diode 4007.

Cod sursa

int main()
{
inregistrare = 0;
salvez = 0;
final = 0;
f=1;

for(;;)
{
	if ((int)message==(int)stanga) PORTA=0x04;               	
		else if ((int)message==(int)dreapta) PORTA=0x08; 
			else PORTA=0;                            
	scanf("%c",&message);    
	switch((int)message)
	{
		case ((int)stanga):
			printf("stanga\n");
			if (f==1) PORTA=6; 
			if (f==0) PORTA=5;
			break;
		case ((int)dreapta):
			printf("dreapta\n");
			if (f==1) PORTA=10; 
			if (f==0) PORTA=9; 	
			break;
		case ((int)sus):
			printf("sus\n");
			PORTA = 2;
			f=1;
			break;
		case ((int)jos):
			printf("jos\n");
			PORTA = 1;
			f=0;
			break;		
		case((int)start):
			printf("salvez\n");
			salvez = 1;
			break;
		case((int)stop):
			printf("nu mai salvez\n");
			salvez = 0;
			final = inregistrare;
			inregistrare = 0;
			break;
		case((int)replay):
			printf("replay\n");
			f=1;
			for(i=0;i<final;i++)
			{
				if ((int)c==(int)stanga) PORTA=0x04;    
				else if ((int)c==(int)dreapta) PORTA=0x08; 
				c = EEPROM_read(i);
				
				switch((int)c)
				{
					case ((int)stanga):
						printf("stanga\n");
						if (f==1) PORTA=6;
						if (f==0) PORTA=5;
						break;
					case ((int)dreapta):
						printf("dreapta\n");
						if (f==1) PORTA=10;
						if (f==0) PORTA=9;	
						break;
					case ((int)sus):
						printf("sus\n");
						PORTA = 2;
						f=1;
						break;
					case ((int)jos):
						printf("jos\n");
						PORTA = 1;
						f=0;
						break;	
				}
				astept(); 
			}
			break;
	}
	if (salvez == 1)
	{
		EEPROM_write(inregistrare,message); 
		inregistrare++;
	}
	astept(); 
}
  	return 0;
}
int uart_putchar(char c, FILE *unused)      
{
if (c == '\n')
	uart_putchar('\r', 0);
loop_until_bit_is_set(UCSRA, UDRE);
UDR = c;
return 0;
}
int uart_getchar(FILE* f)
{
char c;
  
  	loop_until_bit_is_set(UCSRA, RXC);
  	c = UDR;
  	if(c=='\r')
	c='\n';
  
  	return c;
}
void astept()
{
int i,j,k;
for(i=0;i<256;i++)
	for(j=0;j<256;j++)
	{
		k=0;
		while(k<256)
		{
			k++;
		}
	}
}
void EEPROM_write(unsigned int uiAddress, unsigned char ucData)
{
while(EECR & (1<<EEWE));
EEAR = uiAddress;
EEDR = ucData;
EECR |= (1<<EEMWE);
EECR |= (1<<EEWE);
}
unsigned char EEPROM_read(unsigned int uiAddress)
{
while(EECR & (1<<EEWE));
EEAR = uiAddress;
EECR |= (1<<EERE);
return EEDR;
}
pm/prj2010/amocanu/masina.txt · Last modified: 2021/04/14 17:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0