Что нам надо: 1) дуно железка думаю есть у всех,цена не интересует 2) мотор шилд 690 руб 3) Инфракраный приёмник TSOP22 40 руб Алгоритм: */ #define F_CPU 16000000UL #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <stdint.h> #include <stdio.h> #include <avr/eeprom.h> volatile unsigned char num = 0,nump = 0,nump_next = 0,nump_old =0,nump_next_old =0; volatile unsigned int arr[256]; unsigned int arr_patterns[10][2] = {{0b00010100,0b00000010},{0b00010100,0b00000011},{0b00010100,0b00000001}}; unsigned int time; char str[100]; int adr = 0x0000; void SendByte(char byte) { while(!(UCSRA & (1<<UDRE))); UDR=byte; } void SendStr(char *string) { while (*string!='\0') { SendByte(*string); string++; } } ISR(USART_RXC_vect) { } ISR(USART_TXC_vect) { } ISR(INT0_vect){ //num = 0; //PORTC |= _BV(PC1); } ISR(INT1_vect){ TCCR1B = (0<<CS12)|(0<<CS11)|(0<<CS10); time = TCNT1; TCNT1 = 0; TCCR1B = (0<<CS12)|(1<<CS11)|(0<<CS10); arr[num] = time; num++; PORTC ^= _BV(PC0); } ISR (TIMER1_COMPA_vect) { TCCR1B = (0<<CS12)|(0<<CS11)|(0<<CS10)|(0<<WGM12); таймера СТС TCNT1=0x00; PORTC &= ~_BV(PC0); /*if(num != 0){ SendStr(\"=== Start ===\n\r\"); int i; for(i = 1; i<num;i++){ //arr = arr/1.5; eeprom_write_word ((uint16_t*) adr, arr); adr++; //eeprom_write_byte ((unsigned char*) adr, ((unsigned int *)arr)[0]); adr++; sprintf(str,\"%u\n\r\",arr); SendStr(str); } SendStr(\"=== End ===\n\r\"); }*/ //num = 0; //num = 0; //int i; //for(i = 0; i<= 254; i++){ // arr = 0; //} /*arr[0] = 0; arr[1] = 0; arr[2] = 0;*/ //PORTC &= ~_BV(PC1); PORTC |= _BV(PC0); //num = 0; //PORTC ^= 1<<PC1; /*if (((PORTC&(1<<PC1))>>1)==1) { PORTC &= ~_BV(PC1); }else{ PORTC |= _BV(PC1); }*/ //led_2000_1(); } int main(void) { #define XTAL 18000000L #define baudrate 9600L #define bauddivider (XTAL/(16*baudrate)-1) #define HI(x) ((x)>>16) #define LO(x) ((x)& 0xFF) UBRRL = LO(bauddivider); UBRRH = HI(bauddivider); UCSRA = 0; UCSRB = 1<<RXEN|1<<TXEN|1<<RXCIE|0<<TXCIE; UCSRC = 1<<URSEL|1<<UCSZ0|1<<UCSZ1; // DDRC |= _BV(PC4); DDRC |= _BV(PC3); DDRC |= _BV(PC2); DDRC |= _BV(PC0); DDRC |= _BV(PC1); PORTC |= _BV(PC0); // GICR |= ( 1 << INT1 ); GICR |= ( 1 << INT0 ); //DDRD &= ~_BV(DDD2); //PORTD |= _BV(PD2); DDRD &= ~_BV(DDD3); PORTD |= _BV(PD3); //Idle MCUCR |= 1<<SE| 0 << ISC11 | 1 << ISC10; //Stand by //MCUCR |= 1<<SM2|1<<SM1|0<<SM0|1<<SE; //Power-down //MCUCR |= 1<<SM1|1<<SE; // TCCR1A = 0x00; TCCR1B = (0<<CS12)|(0<<CS11)|(0<<CS10)|(0<<WGM12); таймера СТС TCNT1=0x00; //OCR1A=65535; TIMSK=(1<<OCIE1A); asm (\"sei\"); while (1) { nump_old= nump = num-36; nump_next_old = nump_next = nump+1; unsigned int address = 0,command = 0; int i,j,res; res = -1; if(arr[nump]>7000 && arr[nump]<9000 && arr[nump_next]>3000 && arr[nump_next]<5000){ //SendStr(\"Address\n\r\"); for(j = 0;j<8;j++){ nump = nump+2; nump_next = nump + 1; /*SendStr(\"Next byte\n\r\"); sprintf(str,\"%u\n\r\",arr[nump]); SendStr(str); sprintf(str,\"%u\n\r\",arr[nump_next]); SendStr(str);*/ if(arr[nump_next]>1400){ //if(arr[nump+2]>300){ address |= 1 << j; } } //sprintf(str,\"Address %u\n\r\",address); //SendStr(str); nump = nump+2; //SendStr(\"Command\n\r\"); for(j = 0;j<8;j++){ nump = nump+2; nump_next = nump + 1; /*SendStr(\"Next byte\n\r\"); sprintf(str,\"%u\n\r\",arr[nump]); SendStr(str); sprintf(str,\"%u\n\r\",arr[nump_next]); SendStr(str);*/ if(arr[nump_next]>1400){ //if(arr[nump+2]>300){ command |= 1 << j; } } //sprintf(str,\"Command %u\n\r\",command); //SendStr(str); //SendStr(\"Serching command.. .\n\r\"); for(i = 0;i<=2;i++){ if(arr_patterns[0] == address && arr_patterns[1] == command){ res = command; //sprintf(str,\"num_next %u\n\r\",nump_next); //SendStr(str); arr[nump_old]=0; arr[nump_next_old]=0; //num = 0; break; }else{ res = -1; } } if(res == 3){ PORTC |= _BV(PC2); PORTC |= _BV(PC3); _delay_ms(500); PORTC &= ~_BV(PC2); PORTC &= ~_BV(PC3); }else if(res == 2){ PORTC |= _BV(PC3); PORTC |= _BV(PC1); _delay_ms(500); PORTC &= ~_BV(PC1); PORTC &= ~_BV(PC3); }else if(res == 1){ PORTC |= _BV(PC4); PORTC |= _BV(PC1); _delay_ms(500); PORTC &= ~_BV(PC1); PORTC &= ~_BV(PC4); } } //led_2000_1(); //asm(\"sleep\"); };
вы в ide что ли пытаетесь запустить? Отвыт: 1)управление по протоколу daewoo. 2)надо программатор,что бы прошить дуньку.
шилд это более компактное и эстетичное,чем транзисторы,но они роль играют одну и туже.если загуглить уже много подобного...под иде писали или еще что?
Код (Text): Что нам надо: 1) дуно железка думаю есть у всех,цена не интересует 2) мотор шилд 690 руб 3) Инфракраный приёмник TSOP22 40 руб А моторчик? А колёса?