Инфа о библиотеке

Wiring, Processing, библиотеки

Инфа о библиотеке

Сообщение Luan » 12 янв 2012, 23:27

Можно как нибудь узнать команды библиотеки? А то нашел пару библиотек а вот че как не написано...
Luan
 
Сообщения: 37
Зарегистрирован: 14 авг 2011, 20:41

Re: Инфа о библиотеке

Сообщение noonv » 13 янв 2012, 07:18

проще всего открыть заголовочный .h-файл библиотеки и посмотреть методы класса (которые к тому же зачастую идут с подробными комментариями) ;)
так же можно посмотреть идущие с библиотекой примеры, которые должны демонстрировать базовые возможности библиотеки.
Аватара пользователя
noonv
Администратор
 
Сообщения: 557
Зарегистрирован: 05 май 2011, 15:44
Откуда: Калининград
programming: С++

Re: Инфа о библиотеке

Сообщение konst » 02 фев 2012, 05:47

Добрый день!
Подскажите у меня проблема с библиотеками, (arduino UNO) при компиляции пишет Error Compiling

D:\aurdino\arduino-1.0\libraries\OneWire\OneWire.cpp:66:24: error: WConstants.h: No such file or directory
D:\aurdino\arduino-1.0\libraries\OneWire\OneWire.cpp: In constructor 'OneWire::OneWire(uint8_t)':
D:\aurdino\arduino-1.0\libraries\OneWire\OneWire.cpp:75: error: 'digitalPinToPort' was not declared in this scope
D:\aurdino\arduino-1.0\libraries\OneWire\OneWire.cpp:76: error: 'digitalPinToBitMask' was not declared in this scope
D:\aurdino\arduino-1.0\libraries\OneWire\OneWire.cpp:77: error: 'portOutputRegister' was not declared in this scope
D:\aurdino\arduino-1.0\libraries\OneWire\OneWire.cpp:78: error: 'portInputRegister' was not declared in this scope
D:\aurdino\arduino-1.0\libraries\OneWire\OneWire.cpp:79: error: 'portModeRegister' was not declared in this scope
D:\aurdino\arduino-1.0\libraries\OneWire\OneWire.cpp: In member function 'uint8_t OneWire::reset()':
D:\aurdino\arduino-1.0\libraries\OneWire\OneWire.cpp:97: error: 'INPUT' was not declared in this scope
D:\aurdino\arduino-1.0\libraries\OneWire\OneWire.cpp:97: error: 'pinMode' was not declared in this scope
D:\aurdino\arduino-1.0\libraries\OneWire\OneWire.cpp:100: error: 'delayMicroseconds' was not declared in this scope
D:\aurdino\arduino-1.0\libraries\OneWire\OneWire.cpp:101: error: 'digitalRead' was not declared in this scope
D:\aurdino\arduino-1.0\libraries\OneWire\OneWire.cpp:103: error: 'digitalWrite' was not declared in this scope
D:\aurdino\arduino-1.0\libraries\OneWire\OneWire.cpp:104: error: 'OUTPUT' was not declared in this scope
D:\aurdino\arduino-1.0\libraries\OneWire\OneWire.cpp:105: error: 'delayMicroseconds' was not declared in this scope
D:\aurdino\arduino-1.0\libraries\OneWire\OneWire.cpp: In member function 'void OneWire::write_bit(uint8_t)':
D:\aurdino\arduino-1.0\libraries\OneWire\OneWire.cpp:125: error: 'delayMicroseconds' was not declared in this scope
D:\aurdino\arduino-1.0\libraries\OneWire\OneWire.cpp: In member function 'uint8_t OneWire::read_bit()':
D:\aurdino\arduino-1.0\libraries\OneWire\OneWire.cpp:140: error: 'delayMicroseconds' was not declared in this scope
D:\aurdino\arduino-1.0\libraries\OneWire\OneWire.cpp: In member function 'void OneWire::write(uint8_t, uint8_t)':
D:\aurdino\arduino-1.0\libraries\OneWire\OneWire.cpp:163: error: 'INPUT' was not declared in this scope
D:\aurdino\arduino-1.0\libraries\OneWire\OneWire.cpp:163: error: 'pinMode' was not declared in this scope
D:\aurdino\arduino-1.0\libraries\OneWire\OneWire.cpp:164: error: 'digitalWrite' was not declared in this scope
D:\aurdino\arduino-1.0\libraries\OneWire\OneWire.cpp: In member function 'void OneWire::depower()':
D:\aurdino\arduino-1.0\libraries\OneWire\OneWire.cpp:203: error: 'INPUT' was not declared in this scope
D:\aurdino\arduino-1.0\libraries\OneWire\OneWire.cpp:203: error: 'pinMode' was not declared in this scope
konst
 
Сообщения: 3
Зарегистрирован: 01 фев 2012, 17:47
programming: processing

Re: Инфа о библиотеке

Сообщение konst » 02 фев 2012, 05:52

не туда поместил
теперь другая проблема ))
sketch_feb02a.cpp:1:21: error: OneWire.h: No such file or directory
sketch_feb02a:6: error: 'OneWire' does not name a type
sketch_feb02a.cpp: In function 'void loop()':
sketch_feb02a:18: error: 'ds' was not declared in this scope
sketch_feb02a:30: error: 'OneWire' has not been declared
sketch_feb02a:40: error: 'ds' was not declared in this scope

скетч собственно вот это
Код: Выделить всё
#include <OneWire.h>

/*
 * тестируем работу по 1-Wire с ключём-таблеткой DS1990A
 *///sta8021xCA

OneWire ds(10);  // на  digital pin 10

void setup(void) {
  Serial.begin(9600);
}

void loop(void) {
  byte i;
  byte present = 0;
  byte data[12];
  byte addr[8];
 
  if ( !ds.search(addr)) {
      Serial.print("No more addresses.\n");
      ds.reset_search();
      return;
  }
 
  Serial.print("R=");
  for( i = 0; i < 8; i++) {
    Serial.print(addr[i], HEX);
    Serial.print(" ");
  }

  if ( OneWire::crc8( addr, 7) != addr[7]) {
      Serial.print("CRC is not valid!\n");
      return;
  }
 
  if ( addr[0] != 0x01) {
      Serial.print("Device is not a DS1990A family device.\n");
      return;
  }
  Serial.println();
  ds.reset();
 
  delay(1000);
}
konst
 
Сообщения: 3
Зарегистрирован: 01 фев 2012, 17:47
programming: processing

Re: Инфа о библиотеке

Сообщение admin » 02 фев 2012, 08:16

так как вы не указываете версию Arduino IDE могу предположить, что последняя - 1.0.
В ней, разработчики переименовали файл WProgram.h в Arduino.h, поэтому нужно просто открыть файлы библиотеки (.h и .cpp) и если в них встречается строчка
Код: Выделить всё
#include "WProgram.h"

, то заменить её на:
Код: Выделить всё
#if defined(ARDUINO) && ARDUINO >= 100
  #include "Arduino.h"
#else
  #include "WProgram.h"
#endif

Обычно, это нужно делать только в заголовочном h-файле библиотеки.
Скорее всего больше ничего делать не придётся и библиотека должна заработать :)

Как адаптировать библиотеки для Arduino 1.0
Аватара пользователя
admin
Администратор
 
Сообщения: 317
Зарегистрирован: 05 май 2011, 14:57
Откуда: Калининград

Re: Инфа о библиотеке

Сообщение konst » 02 фев 2012, 09:29

вот oneware.h файл здесь пробовал поменять
Код: Выделить всё
 #if ARDUINO >= 100
#include "Arduino.h"       // for delayMicroseconds, digitalPinToBitMask, etc
#else
#include "WProgram.h"      // for delayMicroseconds
#include "pins_arduino.h"  // for digitalPinToBitMask, etc
#endif


на

Код: Выделить всё
#if defined(ARDUINO) && ARDUINO >= 100
  #include "Arduino.h"
#else
  #include "WProgram.h"
#endif


Код: Выделить всё
#ifndef OneWire_h
#define OneWire_h

#include <inttypes.h>

#if ARDUINO >= 100
#include "Arduino.h"       // for delayMicroseconds, digitalPinToBitMask, etc
#else
#include "WProgram.h"      // for delayMicroseconds
#include "pins_arduino.h"  // for digitalPinToBitMask, etc
#endif

// You can exclude certain features from OneWire.  In theory, this
// might save some space.  In practice, the compiler automatically
// removes unused code (technically, the linker, using -fdata-sections
// and -ffunction-sections when compiling, and Wl,--gc-sections
// when linking), so most of these will not result in any code size
// reduction.  Well, unless you try to use the missing features
// and redesign your program to not need them!  ONEWIRE_CRC8_TABLE
// is the exception, because it selects a fast but large algorithm
// or a small but slow algorithm.

// you can exclude onewire_search by defining that to 0
#ifndef ONEWIRE_SEARCH
#define ONEWIRE_SEARCH 1
#endif

// You can exclude CRC checks altogether by defining this to 0
#ifndef ONEWIRE_CRC
#define ONEWIRE_CRC 1
#endif

// Select the table-lookup method of computing the 8-bit CRC
// by setting this to 1.  The lookup table enlarges code size by
// about 250 bytes.  It does NOT consume RAM (but did in very
// old versions of OneWire).  If you disable this, a slower
// but very compact algorithm is used.
#ifndef ONEWIRE_CRC8_TABLE
#define ONEWIRE_CRC8_TABLE 1
#endif

// You can allow 16-bit CRC checks by defining this to 1
// (Note that ONEWIRE_CRC must also be 1.)
#ifndef ONEWIRE_CRC16
#define ONEWIRE_CRC16 1
#endif

#define FALSE 0
#define TRUE  1

// Platform specific I/O definitions

#if defined(__AVR__)
#define PIN_TO_BASEREG(pin)             (portInputRegister(digitalPinToPort(pin)))
#define PIN_TO_BITMASK(pin)             (digitalPinToBitMask(pin))
#define IO_REG_TYPE uint8_t
#define IO_REG_ASM asm("r30")
#define DIRECT_READ(base, mask)         (((*(base)) & (mask)) ? 1 : 0)
#define DIRECT_MODE_INPUT(base, mask)   ((*(base+1)) &= ~(mask))
#define DIRECT_MODE_OUTPUT(base, mask)  ((*(base+1)) |= (mask))
#define DIRECT_WRITE_LOW(base, mask)    ((*(base+2)) &= ~(mask))
#define DIRECT_WRITE_HIGH(base, mask)   ((*(base+2)) |= (mask))

#elif defined(__PIC32MX__)
#include <plib.h>  // is this necessary?
#define PIN_TO_BASEREG(pin)             (portModeRegister(digitalPinToPort(pin)))
#define PIN_TO_BITMASK(pin)             (digitalPinToBitMask(pin))
#define IO_REG_TYPE uint32_t
#define IO_REG_ASM
#define DIRECT_READ(base, mask)         (((*(base+4)) & (mask)) ? 1 : 0)  //PORTX + 0x10
#define DIRECT_MODE_INPUT(base, mask)   ((*(base+2)) = (mask))            //TRISXSET + 0x08
#define DIRECT_MODE_OUTPUT(base, mask)  ((*(base+1)) = (mask))            //TRISXCLR + 0x04
#define DIRECT_WRITE_LOW(base, mask)    ((*(base+8+1)) = (mask))          //LATXCLR  + 0x24
#define DIRECT_WRITE_HIGH(base, mask)   ((*(base+8+2)) = (mask))          //LATXSET + 0x28

#else
#error "Please define I/O register types here"
#endif


class OneWire
{
  private:
    IO_REG_TYPE bitmask;
    volatile IO_REG_TYPE *baseReg;

#if ONEWIRE_SEARCH
    // global search state
    unsigned char ROM_NO[8];
    uint8_t LastDiscrepancy;
    uint8_t LastFamilyDiscrepancy;
    uint8_t LastDeviceFlag;
#endif

  public:
    OneWire( uint8_t pin);

    // Perform a 1-Wire reset cycle. Returns 1 if a device responds
    // with a presence pulse.  Returns 0 if there is no device or the
    // bus is shorted or otherwise held low for more than 250uS
    uint8_t reset(void);

    // Issue a 1-Wire rom select command, you do the reset first.
    void select( uint8_t rom[8]);

    // Issue a 1-Wire rom skip command, to address all on bus.
    void skip(void);

    // Write a byte. If 'power' is one then the wire is held high at
    // the end for parasitically powered devices. You are responsible
    // for eventually depowering it by calling depower() or doing
    // another read or write.
    void write(uint8_t v, uint8_t power = 0);

    void write_bytes(const uint8_t *buf, uint16_t count, bool power = 0);

    // Read a byte.
    uint8_t read(void);

    void read_bytes(uint8_t *buf, uint16_t count);

    // Write a bit. The bus is always left powered at the end, see
    // note in write() about that.
    void write_bit(uint8_t v);

    // Read a bit.
    uint8_t read_bit(void);

    // Stop forcing power onto the bus. You only need to do this if
    // you used the 'power' flag to write() or used a write_bit() call
    // and aren't about to do another read or write. You would rather
    // not leave this powered if you don't have to, just in case
    // someone shorts your bus.
    void depower(void);

#if ONEWIRE_SEARCH
    // Clear the search state so that if will start from the beginning again.
    void reset_search();

    // Look for the next device. Returns 1 if a new address has been
    // returned. A zero might mean that the bus is shorted, there are
    // no devices, or you have already retrieved all of them.  It
    // might be a good idea to check the CRC to make sure you didn't
    // get garbage.  The order is deterministic. You will always get
    // the same devices in the same order.
    uint8_t search(uint8_t *newAddr);
#endif

#if ONEWIRE_CRC
    // Compute a Dallas Semiconductor 8 bit CRC, these are used in the
    // ROM and scratchpad registers.
    static uint8_t crc8( uint8_t *addr, uint8_t len);

#if ONEWIRE_CRC16
    // Compute the 1-Wire CRC16 and compare it against the received CRC.
    // Example usage (reading a DS2408):
    //    // Put everything in a buffer so we can compute the CRC easily.
    //    uint8_t buf[13];
    //    buf[0] = 0xF0;    // Read PIO Registers
    //    buf[1] = 0x88;    // LSB address
    //    buf[2] = 0x00;    // MSB address
    //    WriteBytes(net, buf, 3);    // Write 3 cmd bytes
    //    ReadBytes(net, buf+3, 10);  // Read 6 data bytes, 2 0xFF, 2 CRC16
    //    if (!CheckCRC16(buf, 11, &buf[11])) {
    //        // Handle error.
    //    }     
    //         
    // @param input - Array of bytes to checksum.
    // @param len - How many bytes to use.
    // @param inverted_crc - The two CRC16 bytes in the received data.
    //                       This should just point into the received data,
    //                       *not* at a 16-bit integer.
    // @return True, iff the CRC matches.
    static bool check_crc16(uint8_t* input, uint16_t len, uint8_t* inverted_crc);

    // Compute a Dallas Semiconductor 16 bit CRC.  This is required to check
    // the integrity of data received from many 1-Wire devices.  Note that the
    // CRC computed here is *not* what you'll get from the 1-Wire network,
    // for two reasons:
    //   1) The CRC is transmitted bitwise inverted.
    //   2) Depending on the endian-ness of your processor, the binary
    //      representation of the two-byte return value may have a different
    //      byte order than the two bytes you get from 1-Wire.
    // @param input - Array of bytes to checksum.
    // @param len - How many bytes to use.
    // @return The CRC16, as defined by Dallas Semiconductor.
    static uint16_t crc16(uint8_t* input, uint16_t len);
#endif
#endif
};

#endif

эффекта нет, не судите строго НОВИЧОК :)
konst
 
Сообщения: 3
Зарегистрирован: 01 фев 2012, 17:47
programming: processing


Вернуться в Программирование

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron
© 2009-2019 |  О проекте  |  Политика Конфиденциальности  |