একটি আই 2 সি লাইব্রেরি আছে?


12

আই + সি-তে সি ++ এর জন্য কথা বলার জন্য কি সাধারণ লাইব্রেরি নেই? পাইথন এবং জাভার জন্য আমি কিছু জিনিস পেয়েছি তবে আমি সি ++ চেয়েছিলাম। আমি আশা করছিলাম যে কেউ আরডুইনো ওয়্যার লাইব্রেরিতে পোর্ট করেছেন তাই আমি আরডুইনোর জন্য ইতিমধ্যে লিখে রেখেছি কোডটি ব্যবহার করতে পারি।



1
অসম্মতি ... আমি সত্যিই জিজ্ঞাসা করছি যদি আরডুইনো তারের লাইব্রেরি পাইতে পোর্ট করা হয়েছিল তবে আমি পাইটিতে আড়ডিনোর জন্য লিখিত কোডটি সহজেই ব্যবহার করতে পারি। এটি কেস হিসাবে মনে হয় না, সুতরাং কোনও সমতুল্য, সহজে ব্যবহারযোগ্য লাইব্রেরিটি দুর্দান্ত হবে। যাইহোক, এটিরও অস্তিত্ব নেই বলে মনে হয়, তাই আমি i2c-dev কোড ব্যবহার করেই চলে এসেছি।
কেভিন

উত্তর:


7

লিনাক্স ইউজারস্পেসে একটি আই 2c-dev শিরোনাম রয়েছে। আমি মনে করতে পারি না যে এই শিরোনামটি এলএম-সেন্সর প্যাকেজ সহ প্রেরণ করা হয়েছে, বা যদি এটি উত্স থেকে ইনস্টল করা প্রয়োজন। আমি আপনার ডিস্ট্রোর প্যাকেজ সংগ্রহস্থলটি যাচাই করেছিলাম। এক্সগোটের প্রস্তুতি এবং ব্যবহারের জন্য একটি দুর্দান্ত নিবন্ধ রয়েছে।

#include <linux/i2c-dev.h>
/*
  Including i2c-dev header will allow the following I2C SMBus functions
  - i2c_smbus_access
  - i2c_smbus_write_quick
  - i2c_smbus_read_byte
  - i2c_smbus_write_byte
  - i2c_smbus_read_byte_data
  - i2c_smbus_write_byte_data
  - i2c_smbus_read_word_data
  - i2c_smbus_write_word_data
  - i2c_smbus_process_call
  - i2c_smbus_read_block_data
  - i2c_smbus_write_block_data
  - i2c_smbus_read_i2c_block_data
  - i2c_smbus_write_i2c_block_data
  - i2c_smbus_block_process_call
*/

আই 2 সি-সরঞ্জামগুলির জন্য উত্স কোড ( ডাউনলোড ) ভাল উদাহরণ CC++এই ফাংশনগুলিকে মোড়ানো কয়েকটি সাধারণ লাইব্রেরি আমি দেখেছি । আমি আপনার প্রয়োজন অনুসারে আপনার নিজের লাইব্রেরি লেখার সুপারিশ করব। অন্যান্য দুর্দান্ত উদাহরণগুলি গিথুব-এ পাওয়া যেতে পারে, যেমন আই 2 সিবি বাস লাইব্রেরির মতো


5

আমি সবেমাত্র পিগ্পিও লাইব্রেরি ব্যবহার শুরু করেছি এবং আমি খুব মুগ্ধ হয়েছি। আমি বিশেষত বিট ব্যাং মোডটি পছন্দ করি, যেহেতু এটি আপনাকে কোনও দুটি জিপিআইও পিনকে আই 2 সি ইন্টারফেস হিসাবে ব্যবহার করতে দেয়, যতক্ষণ না তাদের কাছে পুল প্রতিরোধক রয়েছে। আপনি যদি পিআই 2 ব্যবহার করে থাকেন তবে আপনার 4 টি সিপিইউ রয়েছে বলে বিট বিং করার পক্ষে খুব একটা অসুবিধা নেই। বিট ব্যাং কমান্ডগুলির দুর্দান্ত জিনিসটি হ'ল তারা কমান্ড বাইটের "ঠিকানা, লেখার, উপাত্ত, পড়া, শুরু, থামানো" কমান্ড বাইটের একটি তালিকা নেয় যাতে আপনি একক কল দিয়ে একাধিক আই / ওএস চালাতে পারেন। এটি কেবলমাত্র আমি খুঁজে পেয়েছি যে নির্ভরযোগ্যতার সাথে পুনরাবৃত্তি শুরুর লেনদেনগুলি চালিত হয় যা অনেকগুলি ডিভাইসের দ্বারা প্রয়োজনীয় যা একটি পঠন কমান্ডের শুরুতে একটি রেজিস্টার নম্বর গ্রহণ করে। গ্রন্থাগারটি নথিভুক্ত এবং সহজেই ব্যবহারযোগ্য।

নীচে টেস্ট প্রোগ্রাম রয়েছে যা MAX31785 এ তাপমাত্রার নিবন্ধগুলি পড়ে। 4 পরবর্তী বাইটের সাথে ঠিকানা নির্ধারণ করে, 2 = শুরু করুন, 7 = লিখুন যা বাইট গণনা এবং ডেটা বাইট দ্বারা অনুসরণ করা হয়, 3 = স্টপ, 6 = পড়া যা বাইট গণনা অনুসরণ করে। কলটি বাইটের সংখ্যার সাথে পড়া কোনও ডেটা বাইট প্রদান করে।

#include <stdio.h>
#include <stdlib.h>
#include <pigpio.h>

#define MAX31785_TEMP_REG 0x8D
#define MAX31785_TEMP0 6
#define MAX31785_TEMP_INT 12
#define PAGE_REG_OFFSET 6  // Offset in CmdBuf of the page register write value


main( int argc, char *argv[])
{
    int  rcnt;
    char ReadBuf[256];
    char CmdBuf[] = {4, 0x52,  // Chip address
                       2, 7, 2, 0x00, MAX31785_TEMP0, 3,    // Write page register to select temperature sensor
                       2, 7, 1, MAX31785_TEMP_REG, 2, 6, 2, 3, // Read temperature register
                       0 // EOL
                       };

  if (gpioInitialise() < 0) return 1;

  // Open bit banging I2C on standard I2C pins
  if (bbI2COpen(2, 3, 100000)) return 1;

  while(1)
  {
    // Loop over the 7 temp sensors
      for(CmdBuf[PAGE_REG_OFFSET] = MAX31785_TEMP0; CmdBuf[PAGE_REG_OFFSET] <= MAX31785_TEMP_INT; CmdBuf[PAGE_REG_OFFSET]++)  
      {     
    // Read the temp reg for the current page
          rcnt = bbI2CZip(2, CmdBuf, sizeof(CmdBuf), ReadBuf, sizeof(ReadBuf));

          if(rcnt == 2)
            // Print out degrees C
            printf("%2.1f ", (short)(((ReadBuf[1] << 8) | ReadBuf[0]) + 50)/100.0 );
          else
            printf("Error: %d\n", rcnt);
      }

    printf("\n");
    fflush(stdout);
    sleep(1);
  }

  bbI2CClose(2);

  gpioTerminate();
}

crj11, আপনার কোড উদাহরণ পোস্ট করার জন্য ধন্যবাদ। এটি আমাকে খুঁজে পেতে এবং সঠিক পথে রাখার পক্ষে সেরা উদাহরণ। Pigpiod_if.h লাইব্রেরিটি ব্যবহার করে আমার একমাত্র সমস্যাটি হ'ল কোডটি সুডো হিসাবে চালানো দরকার যা আমার প্রকল্পের জন্য গ্রহণযোগ্য ছিল না। আমি pigpiod_if2.h লাইব্রেরিতে স্যুইচ করতে এবং কয়েকটি টুইট করতে সক্ষম হয়েছি এবং এটি চ্যাম্পের মতো চলেছে ran
রিচার্ড তেল

2

এমকনভিলি দ্বারা উল্লিখিত হিসাবে লিনাক্স ব্যবহারকারী স্পেসে ( #include <linux/i2c-dev.h>) একটি আই 2 সি-ডেভ শিরোনাম রয়েছে । তদ্ব্যতীত পড়ার জন্য আপনার একটি অক্ষর ডিভাইস প্রয়োজন। সঠিক মডিউলগুলি লোড করে এটি করা যেতে পারে। i2c_bcm2708নিম্ন স্তরের ড্রাইভারের i2c-devজন্য এবং চরিত্র তৈরির জন্য বাসগুলির জন্য সিদ্ধান্ত নেয় ives প্রয়োগ করুন ...

sudo modprobe -r i2c_bcm2708
sudo modprobe i2c_bcm2708 baudrate=32000

উড়ে তাদের লোড করার জন্য। প্রয়োগ করুন ...

sudo sh -c 'echo "i2c-dev" >> /etc/modules'
sudo sh -c 'echo "options i2c_bcm2708 baudrate=<your preferred baudrate>\n" > /etc/modprobe.d/custom.conf

এবং unblacklist i2c_bcm2708মধ্যে /etc/modprobe.d/raspi-blacklist.confকরতে /dev/i2c-0এবং /dev/i2c-1স্থায়ীভাবে দেখাবে।

এখন থেকে আপনি কীভাবে নিজে আইআইসি ডেল মাস্ত্রো ব্যবহার করবেন সে সম্পর্কে ইঙ্গিতগুলি অনুসরণ করতে পারেন ।

আমি এই পদ্ধতিটি পছন্দ করি কারণ এটি প্ল্যাটফর্মজনস্টিক। আপনি linux/i2c-dev.hঅন্যান্য ডিভাইসগুলির সাথেও ব্যবহার করতে পারবেন , যতক্ষণ না সেখানে আইআইসি ড্রাইভার রয়েছে। ওয়্যারিংপিপি আরপিআই-তে আবদ্ধ।

শুভেচ্ছা সহ

হালনাগাদ:

এই তথ্য হ্রাস করা হয়। ডিভাইস ট্রি ব্যবহারের জন্য এই পোস্টটি দেখুন ।


0

একটি ওয়্যারিংপি রয়েছে যা আমি মনে করি আপনি যা চান ঠিক তা করে। এছাড়াও পাস্কাল, জাভা, পাইথন, পার্ল, টিসিএল এবং রুবির জন্য মোড়ক রয়েছে। অতিরিক্তভাবে, কেউ একই লিঙ্কগুলি অন্বেষণ করতে চাইতে পারে:

  1. http://www.susa.net/wordpress/2012/06/raspberry-pi-pcf8563-real-time-clock-rtc/
  2. http://binerry.de/post/26685647322/raspberry-pi-and-i2c
  3. http://www.lazarus.freepascal.org/index.php?topic=17404.0

নাহ ... আবার দেখুন, এটি আই 2 সি করে না, কেবলমাত্র বেসিক পিন ফাংশন করে। প্রকল্পটি কিছুটা বিভ্রান্তিকরভাবে নামকরণ করা হয়েছে। আপনার প্রথম লিঙ্কটিতে কিছু দুর্দান্ত সি কোড রয়েছে তবে আরডুইনোর মতো আই 2 সি করার মতো সাধারণ মোড়ক নেই। আমাকে সম্ভবত এটি লিখতে হবে।
কেভিন

3
ওয়্যারিংপিআই
আই
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.