Jack Humbert před 7 roky
rodič
revize
8e7537560d
2 změnil soubory, kde provedl 1724 přidání a 0 odebrání
  1. 1507 0
      drivers/qwiic/hud.c
  2. 217 0
      drivers/qwiic/hud.h

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1507 - 0
drivers/qwiic/hud.c


+ 217 - 0
drivers/qwiic/hud.h

@@ -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