Trådlös Robot V2 (stöder WiFi & Bluetooth) (5 / 9 steg)
Steg 5: Controller krets
Scenariot av koden beroende på:
1-aktivera RX/TX av ATMEGA16 MCU.
2-Skicka ASCII-kod från PC eller tablett.
3-översätta ASCII-koden av MCU till en specifik utgång i port A och port C.
Säkringen lite för 16 Mhz externa frekvens resonator ska vara inställd: hög: 0xC9, låg: 0xFF som visas i den bifogade bilden.
Kod:
/*
ATmega16 16MHz externa frekvens resonator
Baud Betygsätt 9600 nr paritet, 1 stoppbit, flödeskontroll: ingen
*/
#include < avr/io.h >
#include < inttypes.h >
#include < util/delay.h >
void USARTInit(uint16_t ubrr_value)
{
Ange baudvärde
UBRRL = ubrr_value;
UBRRH = (ubrr_value >> 8);
UCSRC = (1 << URSEL) | (3 << UCSZ0); Ställ in asynkront läge, nr paritet, 1 StopBit
UCSRB = (1 << RXEN) | (1 << TXEN); Aktivera mottagare och sändare
}
char USARTReadChar()
{
medan (! () UCSRA & (1 << RXC)))
{
gör ingenting
}
returnera UDR;
}
void USARTWriteChar(char data)
{
medan (! () UCSRA & (1 << UDRE)))
{
gör ingenting
}
UDR = data;
}
void main)
{
DDRC = 0XFF;
DDRA = 0XFF;
röding data.
USARTInit(103); för 16Mhz och överföringshastighet 9600 UBRR = 103 och för baud 19200 UBRR = 51
While(1)
{
data=USARTReadChar();
om (data == 0x71) {PORTC = 0b10000000; USARTWriteChar('Q');} q i ascii
om (data == 0x77) {PORTC = 0b00001001; USARTWriteChar('w');} w i ascii fram
om (data == 0x65) {PORTC = 0b01000000; USARTWriteChar('e');} e i ascii
om (data == 0x61) {PORTC = 0b00000011; USARTWriteChar('A');} en i ascii vänster
om (data == 0x73) {PORTC = 0b00000000; USARTWriteChar('s');} s i ascii stoppa
om (data == 0x64) {PORTC = 0b00001100; USARTWriteChar('d');} d i ascii rätt
om (data == 0x7A) {PORTC = 0b00100000; USARTWriteChar('z');} z i ascii
om (data == 0x78) {PORTC = 0b10000110; USARTWriteChar('x');} x i ascii bakåt
om (data == 0x99) {PORTC = 0b11110000; USARTWriteChar('c');} c i ascii
om (data==0x69){PORTC=0b00001001;_delay_ms(200); PORTC = 0b00000000;} jag i ascii fram
om (data==0x6A){PORTC=0b00000011;_delay_ms(200); PORTC = 0b00000000;} j i ascii vänster
om (data==0x6C){PORTC=0b00001100;_delay_ms(200); PORTC = 0b00000000;} l i ascii rätt
om (data==0x6B){PORTC=0b00000110;_delay_ms(200); PORTC = 0b00000000;} k i ascii tillbaka
om (data == 0x31) {PORTA = 0b00000001; USARTWriteChar('1');} 1 i ASCII-//2 LED på
om (data == 0x32) {PORTA = 0b00000010; USARTWriteChar('2');} 2 i ASCII-//4 LED på
om (data == 0x33) {PORTA = 0b00000111; USARTWriteChar('3');} 3 i ASCII-//6 LED på
om (data == 0x34) {PORTA = 0b00001000; USARTWriteChar('4');} 4 i ASCII-//Red LED på
om (data == 0x35) {PORTA = 0b00010000; USARTWriteChar('5');} 5 i ascii
om (data == 0x36) {PORTA = 0b00100000; USARTWriteChar('6');} 6 i ascii
om (data == 0x37) {PORTA = 0b01000000; USARTWriteChar('7');} 7 i ascii
om (data == 0x38) {PORTA = 0b10000000; USARTWriteChar('8');} 8 i ascii
om (data == 0x39) {PORTA = 0b00000000; USARTWriteChar('9');} 9 i ASCII-//All av
annat {}
}
}