OR-BWSENS — различия между версиями
=DeaD= (обсуждение | вклад) (→Документация) |
=DeaD= (обсуждение | вклад) (→Документация) |
||
Строка 26: | Строка 26: | ||
# Делаем сигнальную линию входом для МК (т.е. перестаём её подтягивать к земле или к питанию) и ждём сколько-то времени, пока через открытый, в зависимости от отражающей способности поверхности в спектре ИК-излучения и расстояния до поверхности, оптодатчик зарядится конденсатор; | # Делаем сигнальную линию входом для МК (т.е. перестаём её подтягивать к земле или к питанию) и ждём сколько-то времени, пока через открытый, в зависимости от отражающей способности поверхности в спектре ИК-излучения и расстояния до поверхности, оптодатчик зарядится конденсатор; | ||
# Замеряем что на выходе с датчика - 0 или 1. | # Замеряем что на выходе с датчика - 0 или 1. | ||
+ | |||
+ | Контакты: | ||
+ | * Сигнал - первый никак не обозначенный на плате контакт; | ||
+ | * Питание - соответственно + и - обозначенные на плате; | ||
===Пример использования для WinAVR=== | ===Пример использования для WinAVR=== | ||
Строка 84: | Строка 88: | ||
End | End | ||
− | + | ===Пример использования для Arduino=== | |
− | + | ||
− | + | #include <PololuQTRSensors.h> | |
+ | |||
+ | #define LED 13 // LED на pin 13 | ||
+ | |||
+ | |||
+ | // создаем объект, датчик подключен на pin 10 | ||
+ | PololuQTRSensorsRC qtr((unsigned char[]) {10}, 1); | ||
+ | |||
+ | |||
+ | void setup() | ||
+ | { | ||
+ | pinMode(LED, OUTPUT); //установка LED pin как выход | ||
+ | digitalWrite(LED, HIGH); // LED on | ||
+ | // калибровка датчика | ||
+ | int i; | ||
+ | for (i = 0; i < 250; i++) | ||
+ | { | ||
+ | qtr.calibrate(); | ||
+ | delay(20); | ||
+ | } | ||
+ | digitalWrite(LED, LOW); // LED off | ||
+ | Serial.begin(9600); | ||
+ | } | ||
==Форум поддержки== | ==Форум поддержки== | ||
[[http://www.roboforum.ru/viewtopic.php?f=69&t=5878 http://www.roboforum.ru/viewtopic.php?f=69&t=5878]] | [[http://www.roboforum.ru/viewtopic.php?f=69&t=5878 http://www.roboforum.ru/viewtopic.php?f=69&t=5878]] |
Версия 12:09, 11 января 2010
Датчик цвета поверхности OR-BWSENS (черное/белое)
Содержание
Краткие характеристики
Габариты модуля: 10 х 15 х 4 мм (длина*ширина — по печатной плате)
Вес: не более 3г
Распространенность модуля
- Продано 18 модулей: SkyStorm*2, BERKOF*2, pashteet*6, galex1981*2, space*4, Dimo3000*2
- Кроме того в использовании 2 модуля: =DeaD=, blindman
Документация
OR-BWSENS-sch.pdf - Схема модуля, номинал R3 - 330 Ом, номинал C2 - 0.01 мкФ
OR-BWSENS — Инструкция по эксплуатации.pdf (пока не готова)
Принцип работы датчика:
- Замыкаем на 2.5мс (2500мкс) сигнальную линию датчика на землю, разряжая конденсатор;
- Делаем сигнальную линию входом для МК (т.е. перестаём её подтягивать к земле или к питанию) и ждём сколько-то времени, пока через открытый, в зависимости от отражающей способности поверхности в спектре ИК-излучения и расстояния до поверхности, оптодатчик зарядится конденсатор;
- Замеряем что на выходе с датчика - 0 или 1.
Контакты:
- Сигнал - первый никак не обозначенный на плате контакт;
- Питание - соответственно + и - обозначенные на плате;
Пример использования для WinAVR
Код для проверки датчика на WinAVR (для контроллера OR-AVR-M32-D, датчик должен быть на линии A0, будет мигать светодиодом на линии C5):
#include "defines.h" #include <avr/interrupt.h> #include <util/delay.h> int main(void) { DDRC=0x20; while(1==1){ DDRA=0xFF; PORTA=0xFF; _delay_us(2500); DDRA=0x00; PORTA=0x00; _delay_us(2500); int x=PINA; if(x & 0x01 == 0x01){ PORTC=0x20; }else{ PORTC=0x00; }; _delay_us(1000); }; }
Пример использования для BASCOM AVR
Код для проверки датчика на BASCOM AVR (для контроллера OR-AVR-M32-D, датчик должен быть на линии A0, будет мигать светодиодами на линиях C5 и B3):
$regfile = "m32def.dat" $crystal = 7372800 Config Portc = Output Config Portb = Output Dim A As Byte A = 1 While A > 0 Config Porta = Output Set Porta.0 Waitms 3 Config Porta = Input Reset Porta.0 Waitms 3 If Pina.0 = 1 Then Set Portc.5 Set Portb.3 Else Reset Portc.5 Reset Portb.3 End If Wend End
Пример использования для Arduino
#include <PololuQTRSensors.h> #define LED 13 // LED на pin 13 // создаем объект, датчик подключен на pin 10 PololuQTRSensorsRC qtr((unsigned char[]) {10}, 1); void setup() { pinMode(LED, OUTPUT); //установка LED pin как выход digitalWrite(LED, HIGH); // LED on // калибровка датчика int i; for (i = 0; i < 250; i++) { qtr.calibrate(); delay(20); } digitalWrite(LED, LOW); // LED off Serial.begin(9600); }