Перейти к содержанию
    

датчик освещенности APDS-9300

Кто-нибудь пробовал подключать такой датчик или какой-нибудь аналогичный? Не могу разобраться почему не отзывается по i2c. Может у него и контроллера интерфейсы отличаются?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Обратите внимание, что у APDS-9300 максимальное напряжение питания 3.0v , а у at91sam9 3.0v - это минимальное напряжение питания.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Обратите внимание, что у APDS-9300 максимальное напряжение питания 3.0v , а у at91sam9 3.0v - это минимальное напряжение питания.

напряжение на датчик подается 2,5v. Непонятно почему он не реагирует на команды записи. а при чтении выдает неправильные данные

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

частота нормальная. другие устройства по twi работают, а этот датчик никак не хочет

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Немного разобрался с датчиком и набросал программу, включает ИК - подсветку, при низкой освещенности

 

// Датчик освещенности
#define DATCHIK_ADRESS (0x49) // Адрес датчика
int Osveshennost(unsigned char ADC0)
{
 int VklIK = 0;
 unsigned char *Control, *Timing, *ID, *ADC;  // Значения регистров датчика

  TWID_Write(&twid, DATCHIK_ADRESS, 0x80, 1, 0x02, 1, 0); // Включение датчика !!! Почему-то включается не по 0x3, а по 0x2.

 do
 {
/*   // Управляем временем интегрирования
  TWID_Write(&twid, DATCHIK_ADRESS, 0x81, 1, 0x0B, 1, 0);

  mdelay(200);
  TWID_Write(&twid, DATCHIK_ADRESS, 0x81, 1, 0x03, 1, 0);
  */

  TWID_Read(&twid, DATCHIK_ADRESS, 0xAC, 1, ADC, 2, 0); //Считываем значения ADC
 }while(ADC[0]==0x00); //Пока датчик не начнет присылать значения 

 int i = 0;
 for(i=0; i<96; i++)  //считываем нужное количество значений с датчика
 {
    TWID_Read(&twid, DATCHIK_ADRESS, 0xAC, 1, ADC, 2, 0);
 //   USART_Write(AT91C_BASE_US0, ADC[0], 0);
 //   USART_Write(AT91C_BASE_US0, ADC[1], 0);
 }

  if(ADC[1]==0x00)
  {
       if(ADC[0]<ADC0)
       {
           VklIK = 1; //Включаем ИК-прожектор если низкая освещенность
       }
  }
  //Выключаем датчик 
    TWID_Write(&twid, DATCHIK_ADRESS, 0x80, 1, 0x00, 1, 0);  //Записываем 0x00 для выключения

  return VklIK;
}

Изменено пользователем wmakc

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...