mirror of
https://github.com/oliexdev/openScale.git
synced 2025-08-16 21:54:05 +02:00
initial commit microcontroller unit (mcu) arduino sketch for the custom bluetooth scale.
This commit is contained in:
67
arduino_mcu/libraries/I2C_eeprom/I2C_eeprom.h
Normal file
67
arduino_mcu/libraries/I2C_eeprom/I2C_eeprom.h
Normal file
@@ -0,0 +1,67 @@
|
||||
#ifndef I2C_EEPROM_H
|
||||
#define I2C_EEPROM_H
|
||||
//
|
||||
// FILE: I2C_eeprom.h
|
||||
// AUTHOR: Rob Tillaart
|
||||
// PURPOSE: Simple I2C_eeprom library for Arduino with EEPROM 24LC256 et al.
|
||||
// VERSION: 1.0.05
|
||||
// HISTORY: See I2C_eeprom.cpp
|
||||
// URL: http://arduino.cc/playground/Main/LibraryForI2CEEPROM
|
||||
//
|
||||
// Released to the public domain
|
||||
//
|
||||
|
||||
#include <Wire.h>
|
||||
|
||||
#if defined(ARDUINO) && ARDUINO >= 100
|
||||
#include "Arduino.h"
|
||||
#else
|
||||
#include "WProgram.h"
|
||||
#include "Wstring.h"
|
||||
#include "Wiring.h"
|
||||
#endif
|
||||
|
||||
#define I2C_EEPROM_VERSION "1.0.05"
|
||||
|
||||
// I2C_EEPROM_PAGESIZE must be multiple of 2 e.g. 16, 32 or 64
|
||||
// 24LC256 -> 64 bytes
|
||||
#define I2C_EEPROM_PAGESIZE 64
|
||||
|
||||
// TWI buffer needs max 2 bytes for address
|
||||
#define I2C_TWIBUFFERSIZE 30
|
||||
|
||||
// to break blocking read/write
|
||||
#define I2C_EEPROM_TIMEOUT 1000
|
||||
|
||||
// comment next line to keep lib small
|
||||
#define I2C_EEPROM_EXTENDED
|
||||
|
||||
class I2C_eeprom
|
||||
{
|
||||
public:
|
||||
I2C_eeprom(uint8_t deviceAddress);
|
||||
|
||||
int writeByte(uint16_t address, uint8_t value);
|
||||
int writeBlock(uint16_t address, uint8_t* buffer, uint16_t length);
|
||||
int setBlock(uint16_t address, uint8_t value, uint16_t length);
|
||||
|
||||
uint8_t readByte(uint16_t address);
|
||||
uint16_t readBlock(uint16_t address, uint8_t* buffer, uint16_t length);
|
||||
|
||||
#ifdef I2C_EEPROM_EXTENDED
|
||||
uint8_t determineSize();
|
||||
#endif
|
||||
|
||||
private:
|
||||
uint8_t _deviceAddress;
|
||||
uint32_t _lastWrite; // for waitEEReady
|
||||
|
||||
int _pageBlock(uint16_t address, uint8_t* buffer, uint16_t length, bool incrBuffer);
|
||||
int _WriteBlock(uint16_t address, uint8_t* buffer, uint8_t length);
|
||||
uint8_t _ReadBlock(uint16_t address, uint8_t* buffer, uint8_t length);
|
||||
|
||||
void waitEEReady();
|
||||
};
|
||||
|
||||
#endif
|
||||
// END OF FILE
|
Reference in New Issue
Block a user