подскажите по настройке чувствительности
- Войдите на сайт для отправки комментариев
Добрый день уважаемые участники
подскажите пожалуйста как поменять настройки чувствительности сенсора в полном коде скетча
хочу пробовать разные варианты настроек , поэтому снизойдите подробным объяснением где и чо менять
#include <Wire.h>
int IRsensorAddress = 0xB0;
//int IRsensorAddress = 0x58;
int slaveAddress;
int ledPin = 13;
boolean ledState = false;
byte data_buf[16];
int i;
int Ix[4];
int Iy[4];
int s;
void Write_2bytes(byte d1, byte d2)
{
Wire.beginTransmission(slaveAddress);
Wire.write(d1); Wire.write(d2);
Wire.endTransmission();
}
void setup()
{
slaveAddress = IRsensorAddress >> 1; // This results in 0x21 as the address to pass to TWI
Serial.begin(19200);
pinMode(ledPin, OUTPUT); // Set the LED pin as output
Wire.begin();
// IR sensor initialize
Write_2bytes(0x30,0x01); delay(10);
Write_2bytes(0x30,0x08); delay(10);
Write_2bytes(0x06,0x90); delay(10);
Write_2bytes(0x08,0xC0); delay(10);
Write_2bytes(0x1A,0x40); delay(10);
Write_2bytes(0x33,0x33); delay(10);
delay(100);
}
void loop()
{
ledState = !ledState;
if (ledState) { digitalWrite(ledPin,HIGH); } else { digitalWrite(ledPin,LOW); }
//IR sensor read
Wire.beginTransmission(slaveAddress);
Wire.write(0x36);
Wire.endTransmission();
Wire.requestFrom(slaveAddress, 16); // Request the 2 byte heading (MSB comes first)
for (i=0;i<16;i++) { data_buf[i]=0; }
i=0;
while(Wire.available() && i < 16) {
data_buf[i] = Wire.read();
i++;
}
Ix[0] = data_buf[1];
Iy[0] = data_buf[2];
s = data_buf[3];
Ix[0] += (s & 0x30) <<4;
Iy[0] += (s & 0xC0) <<2;
Ix[1] = data_buf[4];
Iy[1] = data_buf[5];
s = data_buf[6];
Ix[1] += (s & 0x30) <<4;
Iy[1] += (s & 0xC0) <<2;
Ix[2] = data_buf[7];
Iy[2] = data_buf[8];
s = data_buf[9];
Ix[2] += (s & 0x30) <<4;
Iy[2] += (s & 0xC0) <<2;
Ix[3] = data_buf[10];
Iy[3] = data_buf[11];
s = data_buf[12];
Ix[3] += (s & 0x30) <<4;
Iy[3] += (s & 0xC0) <<2;
for(i=0; i<4; i++)
{
if (Ix[i] < 1000)
Serial.print("");
if (Ix[i] < 100)
Serial.print("");
if (Ix[i] < 10)
Serial.print("");
Serial.print( int(Ix[i]) );
Serial.print(",");
if (Iy[i] < 1000)
Serial.print("");
if (Iy[i] < 100)
Serial.print("");
if (Iy[i] < 10)
Serial.print("");
Serial.print( int(Iy[i]) );
if (i<3)
Serial.print(",");
}
Serial.println("");
delay(15);
}
исходя из рекомендаций производителя сенсора
Инициализация
Напоминание Не
забудьте установить бит 2 (0x04) в первом байте выходных отчетов для записи в регистры!
Чтобы включить ИК-камеру, необходимо выполнить следующую процедуру:
-
Включить ИК-камеру (отправить 0x04 в выходной отчет 0x13)
-
Включить ИК-камеру 2 (отправить 0x04 в выходной отчет 0x1a)
-
Запишите 0x08 в регистр 0xb00030
-
Запись блока чувствительности 1 в регистры по адресу 0xb00000
-
Запись блока чувствительности 2 в регистры по адресу 0xb0001a
-
Номер режима записи в регистр 0xb00033
-
Напишите 0x08 в регистр 0xb00030 (снова)
После этих шагов пульт Wii Remote будет в одном из трех состояний:
ИК-камера включена, но не принимает данные,
ИК-камера включена и принимает данные с половинной чувствительностью,
ИК-камера включена и принимает данные с полной чувствительностью.
В каком состоянии вы окажетесь, кажется, довольно случайным.
Повторяйте шаги, пока не достигнете желаемого состояния.
Чтобы избежать случайного состояния, установите задержку не менее 50 мс между каждой передачей байта.
Wii выполняет эти шаги несколько иначе, различия выделены жирным шрифтом:
-
Включить IR Pixel Clock (отправить 0x06 в выходной отчет 0x13)
-
Включить логику IR (отправить 0x06 в выходной отчет 0x1A)
-
Запишите 0x01 в регистр 0xb00030
-
Запись блока чувствительности 1 в регистры по адресу 0xb00000
-
Запись блока чувствительности 2 в регистры по адресу 0xb0001a
-
Номер режима записи в регистр 0xb00033
-
Напишите 0x08 в регистр 0xb00030 (снова)
Добавление бита 0x02 к отчетам 0x13 и 0x1a является запросом подтверждения (если он установлен, wiimote ответит отчетом 0x22).
Настройки чувствительности
Чувствительность контролируется двумя блоками конфигурации, длиной 9 и 2 байта. Известно, что следующие настройки работают:
Блок 1 |
Блок 2 |
Заметки |
00 00 00 00 00 00 90 00 C0 |
40 00 |
Предложил Marcan |
00 00 00 00 00 00 FF 00 0C |
00 00 |
Предлагает Kestrel (максимальная чувствительность) |
00 00 00 00 00 00 90 00 41 |
40 00 |
Предложено inio (высокая чувствительность) |
02 00 00 71 01 00 64 00 fe |
fd 05 |
Wii, уровень 1 |
02 00 00 71 01 00 96 00 b4 |
b3 04 |
Wii, уровень 2 |
02 00 00 71 01 00 аа 00 64 |
63 03 |
Wii уровня 3 (по рекомендации Клиффа) |
02 00 00 71 01 00 c8 00 36 |
35 03 |
Wii, уровень 4 |
07 00 00 71 01 00 72 00 20 |
1f 03 |
Wii, уровень 5 |
Последний байт блока 1 определяет чувствительность по интенсивности, при увеличении значений
чувствительность снижается. Оба байта блока 2 должны быть нулевыми, чтобы был доступен полный
диапазон чувствительности. Для достижения наивысшего субпиксельного разрешения рекомендуется
установить максимально высокую чувствительность без отслеживания нежелательного света. По мере
уменьшения чувствительности уменьшается и субпиксельное разрешение, приближаясь к истинному
разрешению сенсора 128x96.
Вставьте код как положено - с номерами строк.
просто я не вижу в скетче похожей настройки , одного из уровней
должен быть по идее здесь
но я не пойму как его вставить .
я не пишу для ардуино
а просто пользователь
может приведете пример одной настройки как нужно писать
Простите, Вы не поняли, что я написал? Ну, вот скажите, как вам помогать?
У Вас шибка в строке №ХЗ. А в строке №ХЗ поменяете точку на запятую. Так?
Вставьте код как положено на этом форуме. Если Вы не в состоянии увидеть иконку с надписью "Code" вверху окна вставки сообщения, то почитайте тему там всё написано.
Пока Вы не вставите код как положено в теме ничего полезного не будет.
А сенсор то какой. PDF на него есть?
http://wiibrew.org/wiki/Wiimote#IR_Camera
неужели никто не может разобраться в настройках?
А зачем? Такого сенсора нет. Зачем тратить время? Если очень нужно, есть платный раздел. Там сделают.
неужели никто не может разобраться в настройках?
Вы код этот откуда взяли? В коде автор шлет байты пакетами по 2 штуки. Что он имел в виду. если только адреса регистров уже двух байтные?
нужно больше информации и желательно даташит на камеру, а не просто куцое описание на чей-то вебстраничке
И да, если вы сами скетчи не пишете - писать за вас на этом форуме вряд ли кто станет.
https://wiki.dfrobot.com/Positioning_ir_camera
не знаю, я не смог понять по этим файлам, как записывается конфиг через I2C
спасибо, хотя бы за ответ :)