|
|
@ -0,0 +1,217 @@ |
|
|
|
/* |
|
|
|
This is an example of how to write a library that allows user to pass in an I2C port |
|
|
|
|
|
|
|
Nathan Seidle |
|
|
|
SparkFun Electronics |
|
|
|
|
|
|
|
License: Public domain |
|
|
|
*/ |
|
|
|
|
|
|
|
#include < Wire.h > |
|
|
|
|
|
|
|
uint16_t DisplayLimit[6] = {199, 999, 999, 999, 99, 199}; |
|
|
|
|
|
|
|
bool begin(TwoWire & wirePort = Wire); //If user doesn't specify then Wire will be used |
|
|
|
|
|
|
|
void AdjustIconLevel(uint16_t IconNo, uint16_t IconLevel); |
|
|
|
void D01(uint8_t Action); |
|
|
|
void CC1(uint8_t Action); |
|
|
|
void D02(uint8_t Action); |
|
|
|
void CC2(uint8_t Action); |
|
|
|
void D03(uint8_t Action); |
|
|
|
void CC3(uint8_t Action); |
|
|
|
void D04(uint8_t Action); |
|
|
|
void CC4(uint8_t Action); |
|
|
|
void D05(uint8_t Action); |
|
|
|
void CC5(uint8_t Action); |
|
|
|
void D06(uint8_t Action); |
|
|
|
void CC6(uint8_t Action); |
|
|
|
void D07(uint8_t Action); |
|
|
|
void CC7(uint8_t Action); |
|
|
|
void D08(uint8_t Action); |
|
|
|
void CC8(uint8_t Action); |
|
|
|
void D0x(uint8_t Action); |
|
|
|
void C01(uint8_t Action); |
|
|
|
void C02(uint8_t Action); |
|
|
|
void H01(uint8_t Action); |
|
|
|
void K01(uint8_t Action); |
|
|
|
void M01(uint8_t Action); |
|
|
|
void C03(uint8_t Action); |
|
|
|
void K02(uint8_t Action); |
|
|
|
void M03(uint8_t Action); |
|
|
|
void P01(uint8_t Action); |
|
|
|
void P02(uint8_t Action); |
|
|
|
void P03(uint8_t Action); |
|
|
|
void T01(uint8_t Action); |
|
|
|
void T02(uint8_t Action); |
|
|
|
|
|
|
|
void compassCircle(uint8_t Select); |
|
|
|
void compassArrows(uint8_t Select); |
|
|
|
void radarDistanceUnits(uint8_t Action); |
|
|
|
void flag(uint8_t Action); |
|
|
|
void tirePressureAlert(uint8_t Action); |
|
|
|
void speedometerUnits(uint8_t Action); |
|
|
|
void destinationDistanceUnits(uint8_t iconUnits); |
|
|
|
void turnDistanceUnits(uint8_t iconUnits); |
|
|
|
|
|
|
|
void leftTunnel(uint8_t Action); |
|
|
|
void middleTunnel(uint8_t Action); |
|
|
|
void rightTunnel(uint8_t Action); |
|
|
|
void leftRoad(uint8_t Action); |
|
|
|
void middleRoad(uint8_t Action); |
|
|
|
void rightRoad(uint8_t Action); |
|
|
|
|
|
|
|
void nav_Group(uint8_t Action); |
|
|
|
void nav_KeepLeft(uint8_t Action); |
|
|
|
void nav_TurnLeft(uint8_t Action); |
|
|
|
void nav_TurnRight(uint8_t Action); |
|
|
|
void nav_HardRight(uint8_t Action); |
|
|
|
void nav_HardLeft(uint8_t Action); |
|
|
|
void nav_UTurnLeft(uint8_t Action); |
|
|
|
void nav_UTurnRight(uint8_t Action); |
|
|
|
void nav_ContinueStraight(uint8_t Action); |
|
|
|
void nav_KeepRight(uint8_t Action); |
|
|
|
|
|
|
|
void radarDetector(uint8_t Level); |
|
|
|
void setHeading(uint8_t SpeedNo); |
|
|
|
void setDestinationDistance(uint16_t SpeedNo, uint8_t Mode); |
|
|
|
void setRadarDistance(uint16_t SpeedNo, uint8_t Mode); |
|
|
|
void setTurnDistance(uint16_t SpeedNo, uint8_t Mode); |
|
|
|
void setTirePressure(uint8_t SpeedNo, uint8_t Mode); |
|
|
|
void setSpeedometer(uint8_t SpeedNo); |
|
|
|
void setCallIcon(uint8_t iconStatus); |
|
|
|
|
|
|
|
void clearAll(void); |
|
|
|
|
|
|
|
void IIC_Write_Command1(uint8_t IIC_Addr, uint16_t DataLen, uint8_t * DataPtr); |
|
|
|
void IIC_Write_Data1(uint8_t IIC_Addr, uint16_t DataLen, uint8_t * DataPtr); |
|
|
|
void IIC_Write_Data2(uint8_t IIC_Addr, uint16_t DataLen, |
|
|
|
const uint8_t * DataPtr); |
|
|
|
|
|
|
|
private: |
|
|
|
|
|
|
|
uint16_t S1_2_3; |
|
|
|
uint16_t S4_5_6; |
|
|
|
uint16_t S7_8_9; |
|
|
|
uint16_t S10_11_12; |
|
|
|
uint16_t S13_14; |
|
|
|
uint16_t S15_16_17; |
|
|
|
|
|
|
|
uint16_t ChangeRedValue(uint16_t OriginalValue, uint16_t R_Value); |
|
|
|
uint16_t ChangeGreenValue(uint16_t OriginalValue, uint16_t G_Value); |
|
|
|
uint16_t ChangeBlueValue(uint16_t OriginalValue, uint16_t B_Value); |
|
|
|
uint16_t ChangeRG_Value(uint16_t OriginalValue, uint16_t RG_Value); |
|
|
|
uint16_t ChangeGB_Value(uint16_t OriginalValue, uint16_t GB_Value); |
|
|
|
uint16_t SetRGB_Value(uint16_t RGB_Value); |
|
|
|
void NumericalTo4BCD(uint16_t S_Number, uint8_t * BCD_Ptr); |
|
|
|
|
|
|
|
void DispNumber(const uint16_t * SegIconPtr, uint8_t DispNo); |
|
|
|
|
|
|
|
void SoftReset(unsigned char DriverNo); |
|
|
|
void SetOscControl(unsigned char DriverNo, unsigned char mode); |
|
|
|
void SetGraphicsRAMWritingDirection(unsigned char DriverNo, unsigned char mode); |
|
|
|
void SetInterface(unsigned char DriverNo, unsigned char mode); |
|
|
|
void DisplayOnOff(unsigned char DriverNo, unsigned char Val); |
|
|
|
void DisplayStandbyOnOff(unsigned char DriverNo, unsigned char Val); |
|
|
|
void SetDisplaySize(unsigned char DriverNo, unsigned char Xstart, unsigned char Xend, unsigned char Ystart, unsigned char Yend); |
|
|
|
void SetDotCurrent(unsigned char DriverNo, unsigned char Rlevel, unsigned char Glevel, unsigned char Blevel); |
|
|
|
void SetSystemClockDivisionRatio(unsigned char DriverNo, unsigned char mode); |
|
|
|
void SetPreChargeWidth(unsigned char DriverNo, unsigned char Val); |
|
|
|
void SetPeakPulseWidth(unsigned char DriverNo, unsigned char Rlevel, unsigned char Glevel, unsigned char Blevel); |
|
|
|
void SetPeakPulseDelay(unsigned char DriverNo, unsigned char Val); |
|
|
|
void SetRowScanOperation(unsigned char DriverNo, unsigned char mode); |
|
|
|
void SetInternalRegulatorforRowScan(unsigned char DriverNo, unsigned char mode); |
|
|
|
void DumpDataToDriver(unsigned char DriverNo, unsigned int SData); |
|
|
|
|
|
|
|
void initializeHUD231(void); |
|
|
|
|
|
|
|
const uint8_t IIC_Addr[2] = { 0x30, 0x31 }; |
|
|
|
|
|
|
|
const uint8_t NumberSegTable[11] = { 0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x00 }; |
|
|
|
|
|
|
|
// T TR BR B BL TL M |
|
|
|
const uint8_t SegIconTable[6][3][7] = {{{ 0, 6, 7, 0, 0, 0, 0 }, |
|
|
|
{ 10, 16, 14, 13, 12, 11, 15 }, |
|
|
|
{ 19, 25, 23, 22, 21, 20, 24 } |
|
|
|
}, |
|
|
|
{{ 33, 39, 37, 36, 35, 34, 38 }, |
|
|
|
{ 41, 47, 45, 44, 43, 42, 46 }, |
|
|
|
{ 49, 55, 53, 52, 51, 50, 54 } |
|
|
|
}, |
|
|
|
{{ 59, 65, 63, 62, 61, 60, 64 }, |
|
|
|
{ 66, 72, 70, 69, 68, 67, 71 }, |
|
|
|
{ 73, 79, 77, 76, 75, 74, 78 } |
|
|
|
}, |
|
|
|
{{ 131, 137, 135, 134, 133, 132, 136 }, |
|
|
|
{ 138, 144, 142, 141, 140, 139, 143 }, |
|
|
|
{ 146, 152, 150, 149, 148, 147, 151 } |
|
|
|
}, |
|
|
|
{{ 0, 0, 0, 0, 0, 0, 0 }, |
|
|
|
{ 182, 188, 186, 185, 184, 183, 187 }, |
|
|
|
{ 190, 196, 194, 193, 192, 191, 195 } |
|
|
|
}, |
|
|
|
{{ 0, 214, 215, 0, 0, 0, 0 }, |
|
|
|
{ 216, 222, 220, 219, 218, 217, 221 }, |
|
|
|
{ 223, 229, 227, 226, 225, 224, 228 } |
|
|
|
}}; |
|
|
|
|
|
|
|
typedef struct { |
|
|
|
uint8_t DriverNo; |
|
|
|
uint16_t StartBumpLocation; |
|
|
|
uint8_t BumpNo; |
|
|
|
uint8_t Level; |
|
|
|
} IconStruct; |
|
|
|
|
|
|
|
const IconStruct IconData[231] = { |
|
|
|
{0, 0, 2, 30}, {0, 2, 2, 30}, {0, 4, 2, 30}, {0, 6, 2, 30}, {0, 8, 2, 30}, |
|
|
|
{0, 10, 2, 30}, {0, 12, 1, 30}, {0, 13, 1, 30}, {0, 14, 2, 30}, {0, 16, 2, 30}, |
|
|
|
{0, 18, 2, 30}, {0, 20, 1, 30}, {0, 21, 1, 30}, {0, 22, 2, 30}, {0, 24, 1, 30}, |
|
|
|
{0, 25, 1, 30}, {0, 26, 1, 30}, {0, 27, 2, 30}, {0, 29, 2, 30}, {0, 31, 2, 30}, |
|
|
|
{0, 33, 1, 30}, {0, 34, 1, 30}, {0, 35, 2, 30}, {0, 37, 1, 30}, {0, 38, 1, 30}, |
|
|
|
{0, 39, 1, 30}, {0, 40, 2, 30}, {0, 42, 2, 30}, {0, 44, 2, 30}, {0, 46, 2, 30}, |
|
|
|
{0, 48, 2, 30}, {0, 50, 2, 30}, {0, 52, 16, 30}, {0, 68, 3, 30}, {0, 71, 3, 30}, |
|
|
|
{0, 74, 3, 30}, {0, 77, 3, 30}, {0, 80, 3, 30}, {0, 83, 3, 30}, {0, 86, 3, 30}, |
|
|
|
{0, 89, 1, 30}, {0, 90, 3, 30}, {0, 93, 3, 30}, {0, 96, 3, 30}, {0, 99, 3, 30}, |
|
|
|
{0, 102, 3, 30}, {0, 105, 3, 30}, {0, 108, 3, 30}, {0, 111, 1, 30}, {0, 112, 3, 30}, |
|
|
|
{0, 115, 3, 30}, {0, 118, 3, 30}, {0, 121, 3, 30}, {0, 124, 3, 30}, {0, 127, 3, 30}, |
|
|
|
{0, 130, 3, 30}, {0, 133, 4, 30}, {0, 137, 6, 30}, {0, 143, 5, 30}, {0, 148, 2, 30}, |
|
|
|
{0, 150, 1, 30}, {0, 151, 1, 30}, {0, 152, 2, 30}, {0, 154, 1, 30}, {0, 155, 1, 30}, |
|
|
|
{0, 156, 1, 30}, {0, 157, 2, 30}, {0, 159, 1, 30}, {0, 160, 1, 30}, {0, 161, 2, 30}, |
|
|
|
{0, 163, 1, 30}, {0, 164, 1, 30}, {0, 165, 1, 30}, {0, 166, 2, 30}, {0, 168, 1, 30}, |
|
|
|
{0, 169, 1, 30}, {0, 170, 2, 30}, {0, 172, 1, 30}, {0, 173, 1, 30}, {0, 174, 1, 30}, |
|
|
|
{0, 175, 3, 30}, {0, 178, 7, 30}, {0, 185, 1, 3}, {0, 186, 1, 3}, {0, 187, 1, 3}, |
|
|
|
{0, 188, 1, 3}, {0, 189, 1, 3}, {0, 190, 1, 3}, {0, 191, 1, 3}, {0, 192, 1, 30}, |
|
|
|
{0, 193, 2, 30}, {0, 195, 2, 30}, {0, 197, 1, 30}, {0, 198, 1, 30}, {0, 199, 2, 30}, |
|
|
|
{0, 201, 1, 30}, {0, 202, 1, 30}, {0, 203, 3, 30}, {0, 206, 1, 30}, {0, 207, 1, 30}, |
|
|
|
{0, 208, 1, 30}, {0, 209, 1, 30}, {0, 210, 3, 30}, {0, 213, 5, 30}, {0, 218, 4, 30}, |
|
|
|
{0, 222, 1, 5}, {0, 223, 1, 12}, {0, 224, 6, 30}, {0, 230, 2, 30}, {0, 232, 5, 30}, |
|
|
|
{0, 237, 4, 30}, {0, 241, 1, 5}, {0, 242, 1, 12}, {0, 243, 5, 30}, {0, 248, 2, 30}, |
|
|
|
{0, 250, 5, 30}, {0, 255, 3, 30}, {0, 258, 2, 30}, {0, 260, 3, 30}, {0, 263, 1, 15}, |
|
|
|
{0, 264, 1, 30}, {0, 265, 1, 15}, {0, 266, 1, 10}, {0, 267, 4, 30}, {0, 271, 1, 30}, |
|
|
|
{0, 272, 2, 30}, {0, 274, 5, 30}, {0, 279, 4, 30}, {0, 283, 1, 5}, {0, 284, 7, 20}, |
|
|
|
{0, 291, 4, 31}, {0, 295, 1, 15}, {0, 296, 1, 15}, {0, 297, 1, 15}, {0, 298, 1, 15}, |
|
|
|
{0, 299, 1, 15}, {0, 300, 1, 15}, {0, 301, 1, 15}, {0, 302, 1, 15}, {0, 303, 1, 15}, |
|
|
|
{0, 304, 1, 15}, {0, 305, 1, 15}, {0, 306, 1, 15}, {0, 307, 1, 15}, {0, 308, 1, 15}, |
|
|
|
{0, 309, 1, 5}, {0, 310, 1, 15}, {0, 311, 1, 15}, {0, 312, 1, 15}, {0, 313, 1, 15}, |
|
|
|
{0, 314, 1, 15}, {0, 315, 1, 15}, {0, 316, 1, 15}, {0, 317, 2, 15}, {0, 319, 2, 15}, |
|
|
|
{0, 321, 7, 20}, {0, 328, 1, 5}, {0, 329, 4, 30}, {0, 333, 5, 30}, {0, 338, 2, 30}, |
|
|
|
{0, 340, 1, 30}, {0, 341, 4, 30}, {0, 345, 1, 10}, {0, 346, 1, 12}, {0, 347, 1, 30}, |
|
|
|
{0, 348, 1, 15}, {0, 349, 3, 30}, {0, 352, 2, 30}, {0, 354, 3, 30}, {0, 357, 5, 30}, |
|
|
|
{0, 362, 2, 30}, {0, 364, 5, 30}, {0, 369, 1, 12}, {0, 370, 1, 5}, {0, 371, 4, 30}, |
|
|
|
{0, 375, 5, 30}, {0, 380, 2, 30}, {1, 0, 6, 30}, {1, 6, 1, 12}, {1, 7, 4, 30}, |
|
|
|
{1, 11, 2, 30}, {1, 13, 5, 30}, {1, 18, 1, 15}, {1, 19, 1, 15}, {1, 20, 1, 15}, |
|
|
|
{1, 21, 1, 15}, {1, 22, 1, 15}, {1, 23, 1, 15}, {1, 24, 1, 15}, {1, 25, 2, 30}, |
|
|
|
{1, 27, 1, 15}, {1, 28, 1, 15}, {1, 29, 1, 15}, {1, 30, 1, 15}, {1, 31, 1, 15}, |
|
|
|
{1, 32, 1, 15}, {1, 33, 1, 15}, {1, 34, 28, 30}, {1, 62, 1, 30}, {1, 63, 1, 30}, |
|
|
|
{1, 64, 1, 30}, {1, 65, 1, 30}, {1, 66, 3, 30}, {1, 69, 1, 30}, {1, 70, 1, 30}, |
|
|
|
{1, 71, 2, 30}, {1, 73, 1, 30}, {1, 74, 1, 30}, {1, 75, 2, 30}, {1, 77, 2, 30}, |
|
|
|
{1, 79, 1, 30}, {1, 80, 6, 30}, {1, 86, 5, 30}, {1, 91, 2, 30}, {1, 93, 17, 30}, |
|
|
|
{1, 110, 16, 30}, {1, 126, 18, 30}, {1, 144, 14, 30}, {1, 158, 14, 30}, {1, 172, 17, 30}, |
|
|
|
{1, 189, 17, 30}, {1, 206, 16, 30}, {1, 222, 16, 30}, {1, 238, 18, 30}, {1, 256, 14, 30}, |
|
|
|
{1, 270, 14, 30}, {1, 284, 17, 30}, {1, 301, 17, 30}, {1, 318, 16, 30}, {1, 334, 16, 30}, |
|
|
|
{1, 350, 33, 30} |
|
|
|
}; |
|
|
|
|
|
|
|
uint16_t IconRamMap[2][128]; |
|
|
|
uint8_t SendDataBuffer[1024]; //1024 |
|
|
|
uint8_t ReceiveData[1024]; //1024 |