OR-LINESENS-KTIRx10
Версия от 16:36, 4 марта 2010; =DeaD= (обсуждение | вклад)
Датчик линии OR-LINESENS-KTIRx10
Содержание
Краткие характеристики
Габариты модуля: 102 х 15 х 6 мм (длина*ширина — по печатной плате)
Количество оптопар: 10шт
Шаг оптопар: 10мм
Тип оптопар: KTIR0721ds
Вес: не более 15г
Распространенность модуля
- Продано 5 модулей: dimchehov, DrunkenMaster, SkyStorm, shel, Vooon
- Кроме того в использовании 2 модуля: =DeaD=, blindman
Документация
Код для проверки датчика на WinAVR (для контроллера OR-AVR-M32-D, датчик должен быть на линии A0-7, C7-6, питание от 5В, управляющий сигнал включения подсветки сенсора LED-on - линия C5) откалиброванный под расстояние до поверхности 4-5мм:
Соединение линий (первая на датчике - от логотипа OR): 01 - Gnd 02 - Vcc 03 - Sens0 04 - Sens1 05 - Sens2 06 - Sens3 07 - Sens4 08 - Sens5 09 - Sens6 10 - Sens7 11 - Sens8 12 - Sens9 13 - LED-on
Сам код:
#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 (пока не готова)