無線ラジコンの本体を作ります.
初めにAttiny2313に以下のプログラムを書き込んでください.
2313_body.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
#include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> int x; void AVR_init(void) { DDRB=0b11111111; DDRD=0b1111110; PORTB=0b00000000; } void USART_init(void) { unsigned int baud; baud=8000000/16/9600-1; //ボーレートの計算(9600) UBRRH=(unsigned char)(baud>>8); UBRRL=(unsigned char)baud; UCSRC=(1<<USBS)|(3<<UCSZ0); UCSRB=(1<<RXEN)|(1<<TXEN)|(1<<RXCIE); } void Utx(unsigned char data) //データ送信 { while(!(UCSRA & (1<<UDRE)) ); UDR=data; } unsigned char Urx(void) //データ受信 { while(!(UCSRA & (1<<RXC)) ); return UDR; } void PWM_init(void) { TCCR0A = 0b10100011; TCCR0B = 0b00000100; OCR0A=50; OCR0B=50; } ISR(USART_RX_vect) { x = UDR; if(x=='1') { OCR0A = 250; OCR0B = 250; PORTB = (1 << PB0)|(0 << PB1)|(1 << PB3)|(0 << PB4); _delay_ms(10); } if(x=='2') { OCR0A = 250; OCR0B = 150; PORTB = (0 << PB0)|(1 << PB1)|(0 << PB3)|(1 << PB4); _delay_ms(10); } if(x=='3') { OCR0A = 150; OCR0B = 250; PORTB = (0 << PB0)|(1 << PB1)|(0 << PB3)|(1 << PB4); _delay_ms(10); } if(x=='4') { OCR0A = 250; OCR0B = 250; PORTB = (0 << PB0)|(1 << PB1)|(0 << PB3)|(1 << PB4); _delay_ms(10); } } int main(void) { AVR_init(); USART_init(); PWM_init(); sei(); for(;;) { PORTB = (0 << PB0)|(0 << PB1)|(0 << PB3)|(0 << PB4); _delay_ms(10); } } |
次に以下の回路を製作してください.
回路
外観
表側
裏側
裏側に,モータとキャスタを基板にねじ止めしたら完成です.
コントローラのボタンを押してみてください.動作したら成功です.
これでAttiny2313は終了です.
次はAttiny88Pを使ってみましょう.
1 Atmega88の書き込み器を作ろう に続く.
おすすめ図書(よかったらどうぞ)