OR-LINESENS-KTIRx10 — различия между версиями
=DeaD= (обсуждение | вклад) |
=DeaD= (обсуждение | вклад) (→Документация) |
||
Строка 24: | Строка 24: | ||
==Документация== | ==Документация== | ||
+ | |||
+ | #include "defines.h" | ||
+ | |||
+ | #include <ctype.h> | ||
+ | #include <stdint.h> | ||
+ | #include <stdio.h> | ||
+ | #include <string.h> | ||
+ | |||
+ | #include <avr/interrupt.h> | ||
+ | |||
+ | #include <util/delay.h> | ||
+ | |||
+ | #include "uart.h" | ||
+ | |||
+ | FILE uart_str = FDEV_SETUP_STREAM(uart_putchar, uart_getchar, _FDEV_SETUP_RW); | ||
+ | |||
+ | int main(void) | ||
+ | { | ||
+ | uart_init(); | ||
+ | stdout = stdin = &uart_str; | ||
+ | printf("Linesensor-test ready!\n"); | ||
+ | |||
+ | DDRC=0x20; | ||
+ | DDRD=0x30; | ||
+ | |||
+ | //PWM, Phase and frequency correct, TOP=ICR1 | ||
+ | TCCR1A=0xA0; //clear on up-counting, set on down-counting | ||
+ | TCCR1B=0x12; //Clock prescaler 1/8 | ||
+ | ICR1=9216; //Set 50Hz frequency | ||
+ | uint16_t baseA=(153*2+1)*23/10; | ||
+ | uint16_t baseB=(156*2+1)*23/10; | ||
+ | OCR1A=baseA; | ||
+ | OCR1B=baseB; | ||
+ | while(1==1){ | ||
+ | DDRA=0xFF; | ||
+ | PORTA=0xFF; | ||
+ | DDRC|=0xC0; | ||
+ | PORTC|=0xC0; | ||
+ | _delay_us(3000); | ||
+ | DDRA=0x00; | ||
+ | PORTA=0x00; | ||
+ | DDRC&=~0xC0; | ||
+ | PORTC&=~0xC0; | ||
+ | PORTC|=0x20; | ||
+ | _delay_us(500); | ||
+ | int x=PINA; | ||
+ | int y=PINC>>6; | ||
+ | if(y==1){ y=2; }else if (y==2){y=1;}; | ||
+ | x=x+(y<<8); | ||
+ | |||
+ | for(int i=0; i<10; i++){ | ||
+ | int j=x&0x01; | ||
+ | printf("%d",j); | ||
+ | x=x>>1; | ||
+ | }; | ||
+ | printf("\n"); | ||
+ | |||
+ | _delay_us(30000); | ||
+ | }; | ||
+ | } | ||
+ | |||
+ | |||
[[Media:OR-LINESENS-KTIRx10-UG.pdf|OR-LINESENS-KTIRx10 — Инструкция по эксплуатации.pdf]] (пока не готова) | [[Media:OR-LINESENS-KTIRx10-UG.pdf|OR-LINESENS-KTIRx10 — Инструкция по эксплуатации.pdf]] (пока не готова) | ||
==Форум поддержки== | ==Форум поддержки== | ||
[[http://www.roboforum.ru/viewtopic.php?f=69&t=5879 http://www.roboforum.ru/viewtopic.php?f=69&t=5879]] | [[http://www.roboforum.ru/viewtopic.php?f=69&t=5879 http://www.roboforum.ru/viewtopic.php?f=69&t=5879]] |
Версия 16:22, 28 сентября 2009
Датчик линии OR-LINESENS-KTIRx10
Содержание
Краткие характеристики
Габариты модуля: 102 х 15 х 6 мм (длина*ширина — по печатной плате)
Количество оптопар: 10шт
Шаг оптопар: 10мм
Тип оптопар: KTIR0721ds
Вес: не более 15г
Распространенность модуля
- Продано 0 модулей
- Кроме того в использовании 2 модуля: =DeaD=, blindman
Документация
#include "defines.h" #include <ctype.h> #include <stdint.h> #include <stdio.h> #include <string.h> #include <avr/interrupt.h> #include <util/delay.h> #include "uart.h" FILE uart_str = FDEV_SETUP_STREAM(uart_putchar, uart_getchar, _FDEV_SETUP_RW); int main(void) { uart_init(); stdout = stdin = &uart_str; printf("Linesensor-test ready!\n"); DDRC=0x20; DDRD=0x30;
//PWM, Phase and frequency correct, TOP=ICR1 TCCR1A=0xA0; //clear on up-counting, set on down-counting TCCR1B=0x12; //Clock prescaler 1/8 ICR1=9216; //Set 50Hz frequency uint16_t baseA=(153*2+1)*23/10; uint16_t baseB=(156*2+1)*23/10; OCR1A=baseA; OCR1B=baseB; while(1==1){ DDRA=0xFF; PORTA=0xFF; DDRC|=0xC0; PORTC|=0xC0; _delay_us(3000); DDRA=0x00; PORTA=0x00; DDRC&=~0xC0; PORTC&=~0xC0; PORTC|=0x20; _delay_us(500); int x=PINA; int y=PINC>>6; if(y==1){ y=2; }else if (y==2){y=1;}; x=x+(y<<8); for(int i=0; i<10; i++){ int j=x&0x01; printf("%d",j); x=x>>1; }; printf("\n"); _delay_us(30000); }; }
OR-LINESENS-KTIRx10 — Инструкция по эксплуатации.pdf (пока не готова)