РЕШЕНО Бесконтактный датчик расстояния APDS-9190

Тема в разделе "Arduino & Shields", создана пользователем Ramterdam, 16 ноя 2019.

  1. Ramterdam

    Ramterdam Гик

    Нашёл дома датчик расстояния APDS-9190. Поискал в интернете библиотеки к нему, как с ним работать, как подключать к Ардуинке и т.п.
    Но мои поиски безуспешны...(поэтому обращаюсь на форум)
    Так вот, не знает ли, кто-нибудь из Вас, как работать с этой штукой на Ардуино?
    Видел что там надо какую-то шину I2C изучать, и я как раз занялся этим, но вот как подключать сам датчик APDS-9190 и как с ним работать и что для этого нужно не нашёл....Подскажите пожалуйста...
     

    Вложения:

  2. Asper Daffy

    Asper Daffy Иксперд

  3. Ramterdam

    Ramterdam Гик

    И есть ещё вариант того, чтобы вместо него приобрести APDS-9960
    Но это уже более глобальный датчик для более глобальных задач
     
  4. NikitOS

    NikitOS Король шутов Администратор

  5. Ramterdam

    Ramterdam Гик

  6. Asper Daffy

    Asper Daffy Иксперд

    А для подключения-то какая разница?
     
  7. Ramterdam

    Ramterdam Гик

    Разница в том, что этот датчик APDS-9190 надо распаивать а APDS-9960 не надо
     
  8. Ramterdam

    Ramterdam Гик

    Да, но там ни слова про Ардуино....
     
  9. NikitOS

    NikitOS Король шутов Администратор

    Там, это где?
    В даташите? Ну да, он же не для нее создавался.
    На гите библиотека для дуины, могу даже папку показать - вот
     
  10. Ramterdam

    Ramterdam Гик

    Я же ещё вроде как про подключение спрашивал)
     
  11. NikitOS

    NikitOS Король шутов Администратор

    В даташите сказано что и как хочет датчик, что не понятно-то? :)
     
    Daniil нравится это.
  12. Ramterdam

    Ramterdam Гик

    Дело, в том, что в этой библиотеке нет примеров для Ардуино
     
  13. NikitOS

    NikitOS Король шутов Администратор

    А зачем? :)
    В коде библиотеки есть комментарии к функциям. В файле .h посмотрите
     
  14. a1000

    a1000 Гуру

    Если работает по I2C то подключается стандартно SCL к SCL, SDA к SDA. Только не забудьте их к питанию подтянуть резисторами по 10 кОм.
     
  15. Ramterdam

    Ramterdam Гик

    это уже сделано, но всё равно спасибо
     
  16. Ramterdam

    Ramterdam Гик

    вообщем, постарался восстановить код из файла .h и вот что получилось
    Код (C++):
    [code]
    #include <Arduino.h>
    #include <Wire.h>
    #ifndef APDS9190_H
    #define APDS9190_H
    // I2C address
    #define APDS9190_ADDRESS 0x39
    // register names
    #define APDS9190_ENABLE_REG (0x00 | 0x80)  // enable of states and interrupts
    #define APDS9190_ATIME_REG (0x01 | 0x80)  // a time
    #define APDS9190_PTIME_REG (0x02 | 0x80)  // proximity ADC time
    #define APDS9190_WTIME_REG (0x03 | 0x80)  // wait time
    #define APDS9190_PILTL_REG (0x08 | 0x80)  // proximity interrupt low threshold low byte
    #define APDS9190_PILTH_REG (0x09 | 0x80)  // proximity interrupt low threshold hi byte
    #define APDS9190_PIHTL_REG (0x0A | 0x80)  // proximity interrupt hi threshold low byte
    #define APDS9190_PIHTH_REG (0x0B | 0x80)  // proximity interrupt hi threshold hi byte
    #define APDS9190_PERS_REG (0x0C | 0x80)  // interrupt persistence filters
    #define APDS9190_CONFIG_REG (0x0D | 0x80)  // configuration
    #define APDS9190_PPCOUNT_REG (0x0E | 0x80)  // proximity pulse count
    #define APDS9190_CONTROL_REG (0x0F | 0x80)  // gain control register
    #define APDS9190_REV_REG (0x11 | 0x80)  // revision number
    #define APDS9190_STATUS_REG (0x13 | 0x80)  // device statu
    #define APDS9190_PDATAL_REG (0x18 | 0x80)  // proximity ADC low data register
    #define APDS9190_PDATAH_REG (0x19 | 0x80)  // proximity ADC high data register
    class APDS9190 {
      public:
        bool WriteToRegister(byte data, byte reg);
        uint8_t ReadFromRegister(byte reg);
        uint8_t ReadBlockFromRegister(byte reg, int num_bytes, byte* buffer);
        uint16_t Proximity();
        bool Init();
        void PrintBits(byte b);
        void PrintlnBits(byte b);
    };
    #endif
    void setup() {
      // put your setup code here, to run once:

    }

    void loop() {
      // put your main code here, to run repeatedly:

    }

     
    [/code]
     
  17. Ramterdam

    Ramterdam Гик

    подскажите, то, что я восстановил - это правильно?
     
  18. Ramterdam

    Ramterdam Гик

    есть проблема: когда я захотел вставить библиотеку в Arduino, то стал писать ошибку в компиляторе:
     

    Вложения:

  19. NikitOS

    NikitOS Король шутов Администратор

    А Вы закинули папку из apds9190/lib/ или все содержимое архива?
     
  20. Ramterdam

    Ramterdam Гик

    Я выбрал в Arduino IDE Добавить ZIP библиотеку...