fix arduino,add readme
This commit is contained in:
parent
e25d0bc44a
commit
8973995e53
327 changed files with 10032 additions and 10469 deletions
27
Arduino/README.md
Normal file
27
Arduino/README.md
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
由于arduino的内存有限,因此无法创建整帧图片数据缓存,因此在使用时最好按照如下的推荐进行使用,如果想使用Arduono UNO可以使用我们的e-paper Shield来操作,这样会更加方便,并且增加了读写了SD卡功能。
|
||||
Due to the limited memory of Arduino, it is not possible to create an entire frame of image data cache. Therefore, it is best to use the following recommendations when using it. If you want to use Arduono UNO, you can use our e-paper Shield to operate, which will be more convenient, and Added the function of reading and writing SD card.
|
||||
Arduino UNO:
|
||||
epd1in02d
|
||||
epd1in54
|
||||
epd1in54_V2
|
||||
epd1in54b
|
||||
epd1in54c
|
||||
epd2in7
|
||||
epd2in7b
|
||||
epd2in9
|
||||
epd2in9bc
|
||||
epd2in9d
|
||||
epd2in13
|
||||
epd2in13_V2
|
||||
epd2in13bc
|
||||
epd2in13d
|
||||
epd4in2
|
||||
epd4in2bc
|
||||
|
||||
Arduino MEGA2560:
|
||||
epd5in83
|
||||
epd5in83bc
|
||||
epd7in5
|
||||
epd7in5_V2
|
||||
epd7in5bc
|
||||
epd7in5bc_V2
|
||||
55
Arduino/epd1in02d/DEV_Config.cpp
Normal file
55
Arduino/epd1in02d/DEV_Config.cpp
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
/*****************************************************************************
|
||||
* | File : DEV_Config.c
|
||||
* | Author : Waveshare team
|
||||
* | Function : Hardware underlying interface
|
||||
* | Info :
|
||||
* Used to shield the underlying layers of each master
|
||||
* and enhance portability
|
||||
*----------------
|
||||
* | This version: V1.0
|
||||
* | Date : 2018-11-22
|
||||
* | Info :
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documnetation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
#
|
||||
******************************************************************************/
|
||||
#include "DEV_Config.h"
|
||||
|
||||
void GPIO_Init()
|
||||
{
|
||||
pinMode(EPD_CS_PIN, OUTPUT);
|
||||
pinMode(EPD_RST_PIN, OUTPUT);
|
||||
pinMode(EPD_DC_PIN, OUTPUT);
|
||||
pinMode(EPD_BUSY_PIN, INPUT);
|
||||
|
||||
}
|
||||
void Config_Init()
|
||||
{
|
||||
|
||||
GPIO_Init();
|
||||
|
||||
//Serial
|
||||
Serial.begin(115200);
|
||||
|
||||
//spi
|
||||
SPI.setDataMode(SPI_MODE3);
|
||||
SPI.setBitOrder(MSBFIRST);
|
||||
SPI.setClockDivider(SPI_CLOCK_DIV2);
|
||||
SPI.begin();
|
||||
}
|
||||
78
Arduino/epd1in02d/DEV_Config.h
Normal file
78
Arduino/epd1in02d/DEV_Config.h
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
/*****************************************************************************
|
||||
* | File : DEV_Config.c
|
||||
* | Author : Waveshare team
|
||||
* | Function : Hardware underlying interface
|
||||
* | Info :
|
||||
* Used to shield the underlying layers of each master
|
||||
* and enhance portability
|
||||
*----------------
|
||||
* | This version: V1.0
|
||||
* | Date : 2018-11-22
|
||||
* | Info :
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documnetation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
#
|
||||
******************************************************************************/
|
||||
#ifndef _DEV_CONFIG_H_
|
||||
#define _DEV_CONFIG_H_
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <SPI.h>
|
||||
#include "Debug.h"
|
||||
#include <avr/pgmspace.h>
|
||||
|
||||
|
||||
|
||||
#define UBYTE uint8_t
|
||||
#define UWORD uint16_t
|
||||
#define UDOUBLE uint32_t
|
||||
|
||||
/**
|
||||
* GPIO config
|
||||
**/
|
||||
#define EPD_RST_PIN 8
|
||||
#define EPD_DC_PIN 9
|
||||
#define EPD_CS_PIN 10
|
||||
#define EPD_BUSY_PIN 7
|
||||
|
||||
|
||||
/**
|
||||
* GPIO read and write
|
||||
**/
|
||||
#define DEV_Digital_Write(_pin, _value) digitalWrite(_pin, _value == 0? LOW:HIGH)
|
||||
#define DEV_Digital_Read(_pin) digitalRead(_pin)
|
||||
|
||||
|
||||
/**
|
||||
* SPI
|
||||
**/
|
||||
#define DEV_SPI_WriteByte(_dat) SPI.transfer(_dat)
|
||||
|
||||
/**
|
||||
* delay x ms
|
||||
**/
|
||||
#define DEV_Delay_ms(__xms) delay(__xms)
|
||||
|
||||
|
||||
|
||||
/*-----------------------------------------------------------------------------*/
|
||||
void Config_Init();
|
||||
#endif
|
||||
|
||||
28
Arduino/epd1in02d/Debug.h
Normal file
28
Arduino/epd1in02d/Debug.h
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
/*****************************************************************************
|
||||
* | File : Debug.h
|
||||
* | Author : Waveshare team
|
||||
* | Function : debug with prntf
|
||||
* | Info :
|
||||
* Image scanning
|
||||
* Please use progressive scanning to generate images or fonts
|
||||
*----------------
|
||||
* | This version: V1.0
|
||||
* | Date : 2018-01-11
|
||||
* | Info : Basic version
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __DEBUG_H
|
||||
#define __DEBUG_H
|
||||
|
||||
#include "stdio.h"
|
||||
|
||||
#define DEV_DEBUG 1
|
||||
#if DEV_DEBUG
|
||||
#define Debug(__info,...) printf("Debug : " __info,##__VA_ARGS__)
|
||||
#else
|
||||
#define DEBUG(__info,...)
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
404
Arduino/epd1in02d/EPD_1in02d.cpp
Normal file
404
Arduino/epd1in02d/EPD_1in02d.cpp
Normal file
|
|
@ -0,0 +1,404 @@
|
|||
/*****************************************************************************
|
||||
* | File : EPD_1in02.c
|
||||
* | Author : Waveshare team
|
||||
* | Function : Electronic paper driver
|
||||
* | Info :
|
||||
*----------------
|
||||
* | This version: V1.0
|
||||
* | Date : 2019-03-12
|
||||
* | Info :
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documnetation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
#
|
||||
******************************************************************************/
|
||||
#include "EPD_1in02d.h"
|
||||
/**
|
||||
* full screen update LUT
|
||||
**/
|
||||
const unsigned char lut_w1[] =
|
||||
{
|
||||
0x60 ,0x5A ,0x5A ,0x00 ,0x00 ,0x01 ,
|
||||
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
|
||||
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
|
||||
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
|
||||
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
|
||||
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
|
||||
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
|
||||
|
||||
};
|
||||
const unsigned char lut_b1[] =
|
||||
{
|
||||
0x90 ,0x5A ,0x5A ,0x00 ,0x00 ,0x01 ,
|
||||
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
|
||||
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
|
||||
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
|
||||
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
|
||||
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
|
||||
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
|
||||
|
||||
|
||||
};
|
||||
/**
|
||||
* partial screen update LUT
|
||||
**/
|
||||
const unsigned char lut_w[] =
|
||||
{
|
||||
0x60 ,0x01 ,0x01 ,0x00 ,0x00 ,0x01 ,
|
||||
0x80 ,0x0f ,0x00 ,0x00 ,0x00 ,0x01 ,
|
||||
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
|
||||
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
|
||||
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
|
||||
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
|
||||
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
|
||||
|
||||
};
|
||||
const unsigned char lut_b[] =
|
||||
{
|
||||
0x90 ,0x01 ,0x01 ,0x00 ,0x00 ,0x01 ,
|
||||
0x40 ,0x0f ,0x00 ,0x00 ,0x00 ,0x01 ,
|
||||
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
|
||||
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
|
||||
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
|
||||
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
|
||||
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
|
||||
|
||||
};
|
||||
|
||||
/******************************************************************************
|
||||
function : Software reset
|
||||
parameter:
|
||||
******************************************************************************/
|
||||
static void EPD_Reset(void)
|
||||
{
|
||||
DEV_Digital_Write(EPD_RST_PIN, 0);// Module reset
|
||||
DEV_Delay_ms(20);
|
||||
DEV_Digital_Write(EPD_RST_PIN, 1);
|
||||
DEV_Delay_ms(20);
|
||||
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
function : send command
|
||||
parameter:
|
||||
command : Command register
|
||||
******************************************************************************/
|
||||
static void EPD_SendCommand(UBYTE command)
|
||||
{
|
||||
DEV_Digital_Write(EPD_CS_PIN, 0);
|
||||
DEV_Digital_Write(EPD_DC_PIN, 0);// command write
|
||||
|
||||
DEV_SPI_WriteByte(command);
|
||||
DEV_Digital_Write(EPD_CS_PIN, 1);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
function : send data
|
||||
parameter:
|
||||
Data : Write data
|
||||
******************************************************************************/
|
||||
static void EPD_SendData(UBYTE Data)
|
||||
{
|
||||
DEV_Digital_Write(EPD_CS_PIN, 0);
|
||||
DEV_Digital_Write(EPD_DC_PIN, 1); // command write
|
||||
DEV_SPI_WriteByte(Data);
|
||||
DEV_Digital_Write(EPD_CS_PIN, 1);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
function : LUT download
|
||||
******************************************************************************/
|
||||
void EPD_SetFulltReg(void)
|
||||
{
|
||||
unsigned int count;
|
||||
EPD_SendCommand(0x23);
|
||||
for(count=0;count<42;count++)
|
||||
{EPD_SendData(lut_w1[count]);}
|
||||
|
||||
EPD_SendCommand(0x24);
|
||||
for(count=0;count<42;count++)
|
||||
{EPD_SendData(lut_b1[count]);}
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
function : LUT download
|
||||
******************************************************************************/
|
||||
void EPD_SetPartReg(void)
|
||||
{
|
||||
unsigned int count;
|
||||
EPD_SendCommand(0x23);
|
||||
for(count=0;count<42;count++){
|
||||
EPD_SendData(lut_w[count]);
|
||||
}
|
||||
|
||||
EPD_SendCommand(0x24);
|
||||
for(count=0;count<42;count++){
|
||||
EPD_SendData(lut_b[count]);
|
||||
}
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
function : Wait until the busy_pin goes LOW
|
||||
******************************************************************************/
|
||||
void EPD_WaitUntilIdle(void)
|
||||
{
|
||||
unsigned char busy;
|
||||
do
|
||||
{
|
||||
EPD_SendCommand(0x71);
|
||||
busy = DEV_Digital_Read(EPD_BUSY_PIN);
|
||||
busy =!(busy & 0x01);
|
||||
}
|
||||
while(busy);
|
||||
DEV_Delay_ms(200);
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
function : Turn On Display
|
||||
******************************************************************************/
|
||||
void EPD_TurnOnDisplay(void)
|
||||
{
|
||||
EPD_SendCommand(0x04); //power on
|
||||
EPD_WaitUntilIdle();
|
||||
EPD_SendCommand(0x12); //Start refreshing the screen
|
||||
EPD_WaitUntilIdle();
|
||||
EPD_SendCommand(0x02);
|
||||
EPD_WaitUntilIdle(); //power off
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
function :Initialize the e-Paper register
|
||||
******************************************************************************/
|
||||
UBYTE EPD_Init(void)
|
||||
{
|
||||
EPD_Reset();
|
||||
|
||||
EPD_SendCommand(0xD2);
|
||||
EPD_SendData(0x3F);
|
||||
|
||||
EPD_SendCommand(0x00);
|
||||
EPD_SendData (0x6F); //from outside
|
||||
|
||||
EPD_SendCommand(0x01); //power setting
|
||||
EPD_SendData (0x03);
|
||||
EPD_SendData (0x00);
|
||||
EPD_SendData (0x2b);
|
||||
EPD_SendData (0x2b);
|
||||
|
||||
EPD_SendCommand(0x06); //Configuring the charge pump
|
||||
EPD_SendData(0x3f);
|
||||
|
||||
EPD_SendCommand(0x2A); //Setting XON and the options of LUT
|
||||
EPD_SendData(0x00);
|
||||
EPD_SendData(0x00);
|
||||
|
||||
EPD_SendCommand(0x30); //Set the clock frequency
|
||||
EPD_SendData(0x13); //50Hz
|
||||
|
||||
EPD_SendCommand(0x50); //Set VCOM and data output interval
|
||||
EPD_SendData(0x57);
|
||||
|
||||
EPD_SendCommand(0x60); //Set The non-overlapping period of Gate and Source.
|
||||
EPD_SendData(0x22);
|
||||
|
||||
EPD_SendCommand(0x61); //resolution setting
|
||||
EPD_SendData (0x50); //source 128
|
||||
EPD_SendData (0x80);
|
||||
|
||||
EPD_SendCommand(0x82); //sets VCOM_DC value
|
||||
EPD_SendData(0x12); //-1v
|
||||
|
||||
EPD_SendCommand(0xe3);//Set POWER SAVING
|
||||
EPD_SendData(0x33);
|
||||
EPD_SetFulltReg();
|
||||
EPD_SendCommand(0x04);//Set POWER SAVING
|
||||
|
||||
EPD_WaitUntilIdle();
|
||||
return 0;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
function :Partial refresh initialization e-paper
|
||||
******************************************************************************/
|
||||
void EPD_Part_Init(void)
|
||||
{
|
||||
EPD_Reset();
|
||||
EPD_SendCommand(0xD2);
|
||||
EPD_SendData(0x3F);
|
||||
|
||||
EPD_SendCommand(0x00);
|
||||
EPD_SendData (0x6F); //from outside
|
||||
|
||||
EPD_SendCommand(0x01); //power setting
|
||||
EPD_SendData (0x03);
|
||||
EPD_SendData (0x00);
|
||||
EPD_SendData (0x2b);
|
||||
EPD_SendData (0x2b);
|
||||
|
||||
EPD_SendCommand(0x06); //Configuring the charge pump
|
||||
EPD_SendData(0x3f);
|
||||
|
||||
EPD_SendCommand(0x2A); //Setting XON and the options of LUT
|
||||
EPD_SendData(0x00);
|
||||
EPD_SendData(0x00);
|
||||
|
||||
EPD_SendCommand(0x30); //Set the clock frequency
|
||||
EPD_SendData(0x17);
|
||||
|
||||
EPD_SendCommand(0x50); //Set VCOM and data output interval
|
||||
EPD_SendData(0xf2);
|
||||
|
||||
EPD_SendCommand(0x60); //Set The non-overlapping period of Gate and Source.
|
||||
EPD_SendData(0x22);
|
||||
|
||||
EPD_SendCommand(0x82); //Set VCOM_DC value
|
||||
EPD_SendData(0x12);//-1v
|
||||
|
||||
EPD_SendCommand(0xe3);//Set POWER SAVING
|
||||
EPD_SendData(0x33);
|
||||
|
||||
EPD_SetPartReg();
|
||||
|
||||
EPD_SendCommand(0x04);//Set POWER SAVING
|
||||
|
||||
EPD_WaitUntilIdle();
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
function : Clear screen
|
||||
******************************************************************************/
|
||||
void EPD_Clear(void)
|
||||
{
|
||||
unsigned int i;
|
||||
EPD_SendCommand(0x10);
|
||||
for(i=0;i<1280;i++){
|
||||
EPD_SendData(0X00);
|
||||
}
|
||||
EPD_SendCommand(0x13); //Transfer new data
|
||||
for(i=0;i<1280;i++){
|
||||
EPD_SendData(0xff);
|
||||
}
|
||||
EPD_TurnOnDisplay();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
function : Sends the image buffer in RAM to e-Paper and displays
|
||||
parameter:
|
||||
Image :Displayed data
|
||||
******************************************************************************/
|
||||
void EPD_Display_Image(UBYTE *Image)
|
||||
{
|
||||
UWORD Width;
|
||||
Width = (EPD_WIDTH % 8 == 0)? (EPD_WIDTH / 8 ): (EPD_WIDTH / 8 + 1);
|
||||
//EPD_Init();
|
||||
EPD_SendCommand(0x10);
|
||||
for (UWORD j = 0; j < EPD_HEIGHT; j++) {
|
||||
for (UWORD i = 0; i < Width; i++) {
|
||||
EPD_SendData(0xff);
|
||||
}
|
||||
}
|
||||
|
||||
EPD_SendCommand(0x13);
|
||||
for (UWORD j = 0; j < EPD_HEIGHT; j++) {
|
||||
for (UWORD i = 0; i < Width; i++) {
|
||||
EPD_SendData(~pgm_read_byte(&Image[i + j * Width]));
|
||||
}
|
||||
}
|
||||
EPD_TurnOnDisplay();
|
||||
}
|
||||
|
||||
void EPD_Display(UBYTE *Image)
|
||||
{
|
||||
UWORD Width;
|
||||
Width = (EPD_WIDTH % 8 == 0)? (EPD_WIDTH / 8 ): (EPD_WIDTH / 8 + 1);
|
||||
//EPD_Init();
|
||||
EPD_SendCommand(0x10);
|
||||
for (UWORD j = 0; j < EPD_HEIGHT; j++) {
|
||||
for (UWORD i = 0; i < Width; i++) {
|
||||
EPD_SendData(0xff);
|
||||
}
|
||||
}
|
||||
|
||||
EPD_SendCommand(0x13);
|
||||
for (UWORD j = 0; j < EPD_HEIGHT; j++) {
|
||||
for (UWORD i = 0; i < Width; i++) {
|
||||
EPD_SendData(~(Image[i + j * Width]));
|
||||
}
|
||||
}
|
||||
EPD_TurnOnDisplay();
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
function : Sends the image buffer in RAM to e-Paper and displays
|
||||
parameter:
|
||||
old_Image: Last displayed data
|
||||
Image2 : New data
|
||||
******************************************************************************/
|
||||
void EPD_DisplayPartial(UBYTE *old_Image, UBYTE *Image)
|
||||
{
|
||||
/* Set partial Windows */
|
||||
EPD_SendCommand(0x91); //This command makes the display enter partial mode
|
||||
EPD_SendCommand(0x90); //resolution setting
|
||||
EPD_SendData(0); //x-start
|
||||
EPD_SendData(79); //x-end
|
||||
|
||||
EPD_SendData(0);
|
||||
EPD_SendData(127); //y-end
|
||||
EPD_SendData(0x00);
|
||||
|
||||
UWORD Width;
|
||||
Width = (EPD_WIDTH % 8 == 0)? (EPD_WIDTH / 8 ): (EPD_WIDTH / 8 + 1);
|
||||
|
||||
/* send data */
|
||||
EPD_SendCommand(0x10);
|
||||
for (UWORD j = 0; j < EPD_HEIGHT; j++) {
|
||||
for (UWORD i = 0; i < Width; i++) {
|
||||
EPD_SendData(old_Image[i + j * Width]);
|
||||
}
|
||||
}
|
||||
|
||||
EPD_SendCommand(0x13);
|
||||
for (UWORD j = 0; j < EPD_HEIGHT; j++) {
|
||||
for (UWORD i = 0; i < Width; i++) {
|
||||
EPD_SendData(Image[i + j * Width]);
|
||||
}
|
||||
}
|
||||
|
||||
/* Set partial refresh */
|
||||
EPD_TurnOnDisplay();
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
function : Enter sleep mode
|
||||
******************************************************************************/
|
||||
void EPD_Sleep(void)
|
||||
{
|
||||
EPD_SendCommand(0X02); //power off
|
||||
EPD_WaitUntilIdle();
|
||||
EPD_SendCommand(0X07); //deep sleep
|
||||
EPD_SendData(0xA5);
|
||||
DEV_Digital_Write(EPD_RST_PIN, 0);// Module reset
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
49
Arduino/epd1in02d/EPD_1in02d.h
Normal file
49
Arduino/epd1in02d/EPD_1in02d.h
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
/*****************************************************************************
|
||||
* | File : EPD_1in02.h
|
||||
* | Author : Waveshare team
|
||||
* | Function : Electronic paper driver
|
||||
* | Info :
|
||||
*----------------
|
||||
* | This version: V1.0
|
||||
* | Date : 2019-03-12
|
||||
* | Info :
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documnetation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
#
|
||||
******************************************************************************/
|
||||
#ifndef _EPD_1IN02_H_
|
||||
#define _EPD_1IN02_H_
|
||||
|
||||
#include "DEV_Config.h"
|
||||
|
||||
// Display resolution
|
||||
#define EPD_WIDTH 80
|
||||
#define EPD_HEIGHT 128
|
||||
|
||||
UBYTE EPD_Init(void);
|
||||
void EPD_Clear(void);
|
||||
void EPD_Display(UBYTE *Image);
|
||||
void EPD_Display_Image(UBYTE *Image);
|
||||
void EPD_DisplayPartial(UBYTE *Image1, UBYTE *Image2);
|
||||
void EPD_Sleep(void);
|
||||
void EPD_Part_Init(void);
|
||||
void EPD_DisplayPartia_Clear(void);
|
||||
#endif
|
||||
|
||||
|
||||
342
Arduino/epd1in02d/GUI_Paint.cpp
Normal file
342
Arduino/epd1in02d/GUI_Paint.cpp
Normal file
|
|
@ -0,0 +1,342 @@
|
|||
/**
|
||||
* @filename : epdpaint.cpp
|
||||
* @brief : Paint tools
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare September 9 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <avr/pgmspace.h>
|
||||
#include "GUI_Paint.h"
|
||||
|
||||
Paint::Paint(unsigned char* image, int width, int height) {
|
||||
this->rotate = ROTATE_0;
|
||||
this->image = image;
|
||||
/* 1 byte = 8 pixels, so the width should be the multiple of 8 */
|
||||
this->width = width % 8 ? width + 8 - (width % 8) : width;
|
||||
this->height = height;
|
||||
}
|
||||
|
||||
Paint::~Paint() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: clear the image
|
||||
*/
|
||||
void Paint::Clear(int colored) {
|
||||
for (int x = 0; x < this->width; x++) {
|
||||
for (int y = 0; y < this->height; y++) {
|
||||
DrawAbsolutePixel(x, y, colored);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a pixel by absolute coordinates.
|
||||
* this function won't be affected by the rotate parameter.
|
||||
*/
|
||||
void Paint::DrawAbsolutePixel(int x, int y, int colored) {
|
||||
if (x < 0 || x >= this->width || y < 0 || y >= this->height) {
|
||||
return;
|
||||
}
|
||||
if (IF_INVERT_COLOR) {
|
||||
if (colored) {
|
||||
image[(x + y * this->width) / 8] |= 0x80 >> (x % 8);
|
||||
} else {
|
||||
image[(x + y * this->width) / 8] &= ~(0x80 >> (x % 8));
|
||||
}
|
||||
} else {
|
||||
if (colored) {
|
||||
image[(x + y * this->width) / 8] &= ~(0x80 >> (x % 8));
|
||||
} else {
|
||||
image[(x + y * this->width) / 8] |= 0x80 >> (x % 8);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: Getters and Setters
|
||||
*/
|
||||
unsigned char* Paint::GetImage(void) {
|
||||
return this->image;
|
||||
}
|
||||
|
||||
int Paint::GetWidth(void) {
|
||||
return this->width;
|
||||
}
|
||||
|
||||
void Paint::SetWidth(int width) {
|
||||
this->width = width % 8 ? width + 8 - (width % 8) : width;
|
||||
}
|
||||
|
||||
int Paint::GetHeight(void) {
|
||||
return this->height;
|
||||
}
|
||||
|
||||
void Paint::SetHeight(int height) {
|
||||
this->height = height;
|
||||
}
|
||||
|
||||
int Paint::GetRotate(void) {
|
||||
return this->rotate;
|
||||
}
|
||||
|
||||
void Paint::SetRotate(int rotate){
|
||||
this->rotate = rotate;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a pixel by the coordinates
|
||||
*/
|
||||
void Paint::DrawPixel(int x, int y, int colored) {
|
||||
int point_temp;
|
||||
if (this->rotate == ROTATE_0) {
|
||||
if(x < 0 || x >= this->width || y < 0 || y >= this->height) {
|
||||
return;
|
||||
}
|
||||
DrawAbsolutePixel(x, y, colored);
|
||||
} else if (this->rotate == ROTATE_90) {
|
||||
if(x < 0 || x >= this->height || y < 0 || y >= this->width) {
|
||||
return;
|
||||
}
|
||||
point_temp = x;
|
||||
x = this->width - y;
|
||||
y = point_temp;
|
||||
DrawAbsolutePixel(x, y, colored);
|
||||
} else if (this->rotate == ROTATE_180) {
|
||||
if(x < 0 || x >= this->width || y < 0 || y >= this->height) {
|
||||
return;
|
||||
}
|
||||
x = this->width - x;
|
||||
y = this->height - y;
|
||||
DrawAbsolutePixel(x, y, colored);
|
||||
} else if (this->rotate == ROTATE_270) {
|
||||
if(x < 0 || x >= this->height || y < 0 || y >= this->width) {
|
||||
return;
|
||||
}
|
||||
point_temp = x;
|
||||
x = y;
|
||||
y = this->height - point_temp;
|
||||
DrawAbsolutePixel(x, y, colored);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a charactor on the frame buffer but not refresh
|
||||
*/
|
||||
void Paint::DrawCharAt(int x, int y, char ascii_char, sFONT* font, int colored) {
|
||||
int i, j;
|
||||
unsigned int char_offset = (ascii_char - ' ') * font->Height * (font->Width / 8 + (font->Width % 8 ? 1 : 0));
|
||||
const unsigned char* ptr = &font->table[char_offset];
|
||||
|
||||
for (j = 0; j < font->Height; j++) {
|
||||
for (i = 0; i < font->Width; i++) {
|
||||
if (pgm_read_byte(ptr) & (0x80 >> (i % 8))) {
|
||||
DrawPixel(x + i, y + j, colored);
|
||||
}
|
||||
if (i % 8 == 7) {
|
||||
ptr++;
|
||||
}
|
||||
}
|
||||
if (font->Width % 8 != 0) {
|
||||
ptr++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this displays a string on the frame buffer but not refresh
|
||||
*/
|
||||
void Paint::DrawStringAt(int x, int y, const char* text, sFONT* font, int colored) {
|
||||
const char* p_text = text;
|
||||
unsigned int counter = 0;
|
||||
int refcolumn = x;
|
||||
|
||||
/* Send the string character by character on EPD */
|
||||
while (*p_text != 0) {
|
||||
/* Display one character on EPD */
|
||||
DrawCharAt(refcolumn, y, *p_text, font, colored);
|
||||
/* Decrement the column position by 16 */
|
||||
refcolumn += font->Width;
|
||||
/* Point on the next character */
|
||||
p_text++;
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a line on the frame buffer
|
||||
*/
|
||||
void Paint::DrawLine(int x0, int y0, int x1, int y1, int colored) {
|
||||
/* Bresenham algorithm */
|
||||
int dx = x1 - x0 >= 0 ? x1 - x0 : x0 - x1;
|
||||
int sx = x0 < x1 ? 1 : -1;
|
||||
int dy = y1 - y0 <= 0 ? y1 - y0 : y0 - y1;
|
||||
int sy = y0 < y1 ? 1 : -1;
|
||||
int err = dx + dy;
|
||||
|
||||
while((x0 != x1) && (y0 != y1)) {
|
||||
DrawPixel(x0, y0 , colored);
|
||||
if (2 * err >= dy) {
|
||||
err += dy;
|
||||
x0 += sx;
|
||||
}
|
||||
if (2 * err <= dx) {
|
||||
err += dx;
|
||||
y0 += sy;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a horizontal line on the frame buffer
|
||||
*/
|
||||
void Paint::DrawHorizontalLine(int x, int y, int line_width, int colored) {
|
||||
int i;
|
||||
for (i = x; i < x + line_width; i++) {
|
||||
DrawPixel(i, y, colored);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a vertical line on the frame buffer
|
||||
*/
|
||||
void Paint::DrawVerticalLine(int x, int y, int line_height, int colored) {
|
||||
int i;
|
||||
for (i = y; i < y + line_height; i++) {
|
||||
DrawPixel(x, i, colored);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a rectangle
|
||||
*/
|
||||
void Paint::DrawRectangle(int x0, int y0, int x1, int y1, int colored) {
|
||||
int min_x, min_y, max_x, max_y;
|
||||
min_x = x1 > x0 ? x0 : x1;
|
||||
max_x = x1 > x0 ? x1 : x0;
|
||||
min_y = y1 > y0 ? y0 : y1;
|
||||
max_y = y1 > y0 ? y1 : y0;
|
||||
|
||||
DrawHorizontalLine(min_x, min_y, max_x - min_x + 1, colored);
|
||||
DrawHorizontalLine(min_x, max_y, max_x - min_x + 1, colored);
|
||||
DrawVerticalLine(min_x, min_y, max_y - min_y + 1, colored);
|
||||
DrawVerticalLine(max_x, min_y, max_y - min_y + 1, colored);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a filled rectangle
|
||||
*/
|
||||
void Paint::DrawFilledRectangle(int x0, int y0, int x1, int y1, int colored) {
|
||||
int min_x, min_y, max_x, max_y;
|
||||
int i;
|
||||
min_x = x1 > x0 ? x0 : x1;
|
||||
max_x = x1 > x0 ? x1 : x0;
|
||||
min_y = y1 > y0 ? y0 : y1;
|
||||
max_y = y1 > y0 ? y1 : y0;
|
||||
|
||||
for (i = min_x; i <= max_x; i++) {
|
||||
DrawVerticalLine(i, min_y, max_y - min_y + 1, colored);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a circle
|
||||
*/
|
||||
void Paint::DrawCircle(int x, int y, int radius, int colored) {
|
||||
/* Bresenham algorithm */
|
||||
int x_pos = -radius;
|
||||
int y_pos = 0;
|
||||
int err = 2 - 2 * radius;
|
||||
int e2;
|
||||
|
||||
do {
|
||||
DrawPixel(x - x_pos, y + y_pos, colored);
|
||||
DrawPixel(x + x_pos, y + y_pos, colored);
|
||||
DrawPixel(x + x_pos, y - y_pos, colored);
|
||||
DrawPixel(x - x_pos, y - y_pos, colored);
|
||||
e2 = err;
|
||||
if (e2 <= y_pos) {
|
||||
err += ++y_pos * 2 + 1;
|
||||
if(-x_pos == y_pos && e2 <= x_pos) {
|
||||
e2 = 0;
|
||||
}
|
||||
}
|
||||
if (e2 > x_pos) {
|
||||
err += ++x_pos * 2 + 1;
|
||||
}
|
||||
} while (x_pos <= 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a filled circle
|
||||
*/
|
||||
void Paint::DrawFilledCircle(int x, int y, int radius, int colored) {
|
||||
/* Bresenham algorithm */
|
||||
int x_pos = -radius;
|
||||
int y_pos = 0;
|
||||
int err = 2 - 2 * radius;
|
||||
int e2;
|
||||
|
||||
do {
|
||||
DrawPixel(x - x_pos, y + y_pos, colored);
|
||||
DrawPixel(x + x_pos, y + y_pos, colored);
|
||||
DrawPixel(x + x_pos, y - y_pos, colored);
|
||||
DrawPixel(x - x_pos, y - y_pos, colored);
|
||||
DrawHorizontalLine(x + x_pos, y + y_pos, 2 * (-x_pos) + 1, colored);
|
||||
DrawHorizontalLine(x + x_pos, y - y_pos, 2 * (-x_pos) + 1, colored);
|
||||
e2 = err;
|
||||
if (e2 <= y_pos) {
|
||||
err += ++y_pos * 2 + 1;
|
||||
if(-x_pos == y_pos && e2 <= x_pos) {
|
||||
e2 = 0;
|
||||
}
|
||||
}
|
||||
if(e2 > x_pos) {
|
||||
err += ++x_pos * 2 + 1;
|
||||
}
|
||||
} while(x_pos <= 0);
|
||||
}
|
||||
|
||||
/* END OF FILE */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
77
Arduino/epd1in02d/GUI_Paint.h
Normal file
77
Arduino/epd1in02d/GUI_Paint.h
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
/**
|
||||
* @filename : epdpaint.h
|
||||
* @brief : Header file for epdpaint.cpp
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare July 28 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef EPDPAINT_H
|
||||
#define EPDPAINT_H
|
||||
|
||||
#include "DEV_Config.h"
|
||||
|
||||
// Display orientation
|
||||
#define ROTATE_0 0
|
||||
#define ROTATE_90 1
|
||||
#define ROTATE_180 2
|
||||
#define ROTATE_270 3
|
||||
|
||||
// Color inverse. 1 or 0 = set or reset a bit if set a colored pixel
|
||||
#define IF_INVERT_COLOR 1
|
||||
|
||||
#include "fonts.h"
|
||||
|
||||
class Paint {
|
||||
public:
|
||||
Paint(unsigned char* image, int width, int height);
|
||||
~Paint();
|
||||
void Clear(int colored);
|
||||
int GetWidth(void);
|
||||
void SetWidth(int width);
|
||||
int GetHeight(void);
|
||||
void SetHeight(int height);
|
||||
int GetRotate(void);
|
||||
void SetRotate(int rotate);
|
||||
unsigned char* GetImage(void);
|
||||
void DrawAbsolutePixel(int x, int y, int colored);
|
||||
void DrawPixel(int x, int y, int colored);
|
||||
void DrawCharAt(int x, int y, char ascii_char, sFONT* font, int colored);
|
||||
void DrawStringAt(int x, int y, const char* text, sFONT* font, int colored);
|
||||
void DrawLine(int x0, int y0, int x1, int y1, int colored);
|
||||
void DrawHorizontalLine(int x, int y, int width, int colored);
|
||||
void DrawVerticalLine(int x, int y, int height, int colored);
|
||||
void DrawRectangle(int x0, int y0, int x1, int y1, int colored);
|
||||
void DrawFilledRectangle(int x0, int y0, int x1, int y1, int colored);
|
||||
void DrawCircle(int x, int y, int radius, int colored);
|
||||
void DrawFilledCircle(int x, int y, int radius, int colored);
|
||||
|
||||
private:
|
||||
unsigned char* image;
|
||||
int width;
|
||||
int height;
|
||||
int rotate;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
/* END OF FILE */
|
||||
|
||||
44
Arduino/epd1in02d/epd1in02d.ino
Normal file
44
Arduino/epd1in02d/epd1in02d.ino
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
#include "GUI_Paint.h"
|
||||
#include "DEV_Config.h"
|
||||
#include "EPD_1in02d.h"
|
||||
#include "fonts.h"
|
||||
#include "imagedata.h"
|
||||
unsigned char image_temp[1280]={0};
|
||||
Paint paith(image_temp, 80, 128);
|
||||
void setup() {
|
||||
Config_Init();
|
||||
if(EPD_Init() != 0) {
|
||||
Serial.print("e-Paper init failed\r\n");
|
||||
}
|
||||
Serial.print("1.02inch e-Paper Module1\r\n");
|
||||
EPD_Clear();
|
||||
DEV_Delay_ms(500);
|
||||
|
||||
|
||||
Serial.print("Drawing:BlackImage\r\n");
|
||||
paith.DrawStringAt(13, 0, "1.02inch", &Font12, 0xff);
|
||||
paith.DrawStringAt(22, 13, "epd", &Font12, 0xff);
|
||||
paith.DrawStringAt(10, 30, "ABC123", &Font16, 0xff);
|
||||
|
||||
paith.DrawLine(10, 50, 60, 100, 0xff );
|
||||
paith.DrawLine(10, 100, 60, 50, 0xff);
|
||||
paith.DrawRectangle(10, 50, 60, 100, 0xff);
|
||||
paith.DrawFilledCircle(35, 75, 20, 0xff);
|
||||
|
||||
Serial.print("EPD_Display\r\n");
|
||||
EPD_Display(image_temp);
|
||||
DEV_Delay_ms(2000);
|
||||
|
||||
|
||||
EPD_Display_Image(IMAGE_DATA);
|
||||
DEV_Delay_ms(500);
|
||||
EPD_Clear();
|
||||
|
||||
EPD_Sleep();
|
||||
Serial.print("Goto Sleep mode...\r\n");
|
||||
DEV_Delay_ms(2000);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
|
||||
}
|
||||
1385
Arduino/epd1in02d/font12.cpp
Normal file
1385
Arduino/epd1in02d/font12.cpp
Normal file
File diff suppressed because it is too large
Load diff
1764
Arduino/epd1in02d/font16.cpp
Normal file
1764
Arduino/epd1in02d/font16.cpp
Normal file
File diff suppressed because it is too large
Load diff
2143
Arduino/epd1in02d/font20.cpp
Normal file
2143
Arduino/epd1in02d/font20.cpp
Normal file
File diff suppressed because it is too large
Load diff
2521
Arduino/epd1in02d/font24.cpp
Normal file
2521
Arduino/epd1in02d/font24.cpp
Normal file
File diff suppressed because it is too large
Load diff
466
Arduino/epd1in02d/font24CN.cpp
Normal file
466
Arduino/epd1in02d/font24CN.cpp
Normal file
|
|
@ -0,0 +1,466 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* @file Font12.c
|
||||
* @author MCD Application Team
|
||||
* @version V1.0.0
|
||||
* @date 18-February-2014
|
||||
* @brief This file provides text Font12 for STM32xx-EVAL's LCD driver.
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <h2><center>© COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of STMicroelectronics nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include "fonts.h"
|
||||
|
||||
|
||||
//
|
||||
// Font data for Courier New 12pt
|
||||
//
|
||||
|
||||
const CH_CN Font24CN_Table[] PROGMEM =
|
||||
{
|
||||
/*-- 文字: 你 --*/
|
||||
/*-- 微软雅黑24; 此字体下对应的点阵为:宽x高=32x41 --*/
|
||||
{"你",
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC1,0xC0,0x00,
|
||||
0x01,0xE3,0xE0,0x00,0x03,0xE3,0xC0,0x00,0x03,0xC7,0x80,0x00,0x03,0xC7,0xFF,0xFF,
|
||||
0x07,0x8F,0xFF,0xFF,0x07,0x8F,0x00,0x0F,0x0F,0x1E,0x00,0x1E,0x0F,0x3C,0x1E,0x1E,
|
||||
0x1F,0x3C,0x1E,0x3E,0x1F,0x18,0x1E,0x3C,0x3F,0x00,0x1E,0x1C,0x7F,0x00,0x1E,0x00,
|
||||
0x7F,0x07,0x9E,0x70,0xFF,0x07,0x9E,0xF0,0xEF,0x0F,0x9E,0x78,0x6F,0x0F,0x1E,0x78,
|
||||
0x0F,0x0F,0x1E,0x3C,0x0F,0x1E,0x1E,0x3C,0x0F,0x1E,0x1E,0x1E,0x0F,0x3C,0x1E,0x1E,
|
||||
0x0F,0x3C,0x1E,0x1F,0x0F,0x7C,0x1E,0x0F,0x0F,0x78,0x1E,0x0E,0x0F,0x00,0x1E,0x00,
|
||||
0x0F,0x00,0x1E,0x00,0x0F,0x00,0x3C,0x00,0x0F,0x07,0xFC,0x00,0x0F,0x07,0xF8,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00},
|
||||
|
||||
/*-- 文字: 好 --*/
|
||||
/*-- 微软雅黑24; 此字体下对应的点阵为:宽x高=32x41 --*/
|
||||
{"好",
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,
|
||||
0x0F,0x07,0xFF,0xFE,0x0F,0x07,0xFF,0xFE,0x0F,0x00,0x00,0x3E,0x1E,0x00,0x00,0xFC,
|
||||
0xFF,0xF8,0x01,0xF0,0xFF,0xF8,0x03,0xE0,0x1E,0x78,0x07,0xC0,0x1E,0x78,0x0F,0x80,
|
||||
0x3C,0x78,0x0F,0x00,0x3C,0x78,0x0F,0x00,0x3C,0x78,0x0F,0x00,0x3C,0x78,0x0F,0x00,
|
||||
0x3C,0x7F,0xFF,0xFF,0x78,0xFF,0xFF,0xFF,0x78,0xF0,0x0F,0x00,0x78,0xF0,0x0F,0x00,
|
||||
0x3D,0xE0,0x0F,0x00,0x1F,0xE0,0x0F,0x00,0x0F,0xE0,0x0F,0x00,0x07,0xC0,0x0F,0x00,
|
||||
0x07,0xE0,0x0F,0x00,0x07,0xF0,0x0F,0x00,0x0F,0xF8,0x0F,0x00,0x1E,0x7C,0x0F,0x00,
|
||||
0x3C,0x38,0x0F,0x00,0x78,0x00,0x0F,0x00,0xF0,0x03,0xFF,0x00,0x60,0x01,0xFE,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00},
|
||||
|
||||
/*-- 文字: 微 --*/
|
||||
/*-- 微软雅黑24; 此字体下对应的点阵为:宽x高=32x41 --*/
|
||||
{"微",
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x07,0x01,0xE0,0x07,0x87,0x01,0xE0,
|
||||
0x07,0x07,0x01,0xC0,0x0F,0xF7,0x79,0xC0,0x1E,0xF7,0x7B,0xC0,0x1E,0xF7,0x7B,0x80,
|
||||
0x3C,0xF7,0x7B,0xFF,0x78,0xF7,0x7B,0xFF,0xF8,0xF7,0x7F,0x9E,0xF7,0xFF,0xFF,0x9E,
|
||||
0x67,0xFF,0xFF,0x9E,0x07,0x00,0x7F,0x9C,0x0F,0x00,0x0F,0x9C,0x1E,0x00,0x1F,0x9C,
|
||||
0x1E,0x7F,0xFF,0xBC,0x3E,0x7F,0xF3,0xFC,0x3E,0x00,0x03,0xFC,0x7E,0x00,0x01,0xF8,
|
||||
0xFE,0x00,0x01,0xF8,0xFE,0x7F,0xE1,0xF8,0xDE,0x7F,0xE1,0xF8,0x1E,0x78,0xE0,0xF0,
|
||||
0x1E,0x78,0xEE,0xF0,0x1E,0x78,0xFF,0xF0,0x1E,0x78,0xFD,0xF8,0x1E,0x79,0xFB,0xFC,
|
||||
0x1E,0xF1,0xF7,0xBC,0x1E,0xF0,0xEF,0x9E,0x1F,0xE0,0x0F,0x0F,0x1E,0xC0,0x1E,0x0F,
|
||||
0x1E,0x00,0x0C,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00},
|
||||
|
||||
/*-- 文字: 软 --*/
|
||||
/*-- 微软雅黑24; 此字体下对应的点阵为:宽x高=32x41 --*/
|
||||
{"软",
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x03,0xC0,0x78,0x00,0x07,0x80,0x78,0x00,0x07,0x80,0x78,0x00,
|
||||
0x07,0x80,0xF0,0x00,0x0F,0x00,0xF0,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0x1E,0x03,0xC0,0x1F,0x1E,0x03,0xC0,0x1E,0x1F,0xE7,0x8F,0x3E,0x3D,0xE7,0x8F,0x3C,
|
||||
0x3D,0xEF,0x0F,0x7C,0x3D,0xE7,0x0F,0x78,0x79,0xE0,0x0F,0x00,0x79,0xE0,0x0E,0x00,
|
||||
0x7F,0xFE,0x0E,0x00,0x7F,0xFE,0x1F,0x00,0x01,0xE0,0x1F,0x00,0x01,0xE0,0x1F,0x00,
|
||||
0x01,0xE0,0x1F,0x80,0x01,0xE0,0x1F,0x80,0x01,0xE0,0x3F,0x80,0x01,0xFF,0x3F,0xC0,
|
||||
0x0F,0xFF,0x7B,0xC0,0xFF,0xF0,0x79,0xE0,0xF9,0xE0,0xF1,0xF0,0x01,0xE1,0xF0,0xF0,
|
||||
0x01,0xE3,0xE0,0xF8,0x01,0xE7,0xC0,0x7C,0x01,0xFF,0x80,0x3F,0x01,0xFF,0x00,0x1F,
|
||||
0x01,0xEC,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00},
|
||||
|
||||
/*-- 文字: 雅 --*/
|
||||
/*-- 微软雅黑24; 此字体下对应的点阵为:宽x高=32x41 --*/
|
||||
{"雅",
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x77,0x00,0x00,0x00,0xFF,0x00,
|
||||
0x7F,0xFC,0xF7,0x80,0x7F,0xFD,0xE3,0xC0,0x01,0xC1,0xE3,0xC0,0x01,0xC3,0xC1,0x80,
|
||||
0x3D,0xC7,0xFF,0xFF,0x39,0xC7,0xFF,0xFF,0x39,0xCF,0x83,0x80,0x79,0xDF,0x83,0x80,
|
||||
0x79,0xFF,0x83,0x80,0x79,0xDF,0x83,0x80,0x71,0xC3,0x83,0x80,0x7F,0xFF,0xFF,0xFE,
|
||||
0x7F,0xFF,0xFF,0xFE,0x03,0xC3,0x83,0x80,0x07,0xC3,0x83,0x80,0x07,0xC3,0x83,0x80,
|
||||
0x0F,0xC3,0x83,0x80,0x0F,0xC3,0x83,0x80,0x1F,0xC3,0xFF,0xFE,0x1D,0xC3,0xFF,0xFE,
|
||||
0x3D,0xC3,0x83,0x80,0x79,0xC3,0x83,0x80,0xF1,0xC3,0x83,0x80,0xF1,0xC3,0x83,0x80,
|
||||
0x61,0xC3,0x83,0x80,0x01,0xC3,0xFF,0xFF,0x03,0xC3,0xFF,0xFF,0x1F,0xC3,0x80,0x00,
|
||||
0x1F,0x83,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00},
|
||||
|
||||
/*-- 文字: 黑 --*/
|
||||
/*-- 微软雅黑24; 此字体下对应的点阵为:宽x高=32x41 --*/
|
||||
{"黑",
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x1F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFC,0x1E,0x03,0xC0,0x3C,0x1E,0xC3,0xC7,0x3C,
|
||||
0x1F,0xE3,0xC7,0xBC,0x1E,0xF3,0xCF,0x3C,0x1E,0xFB,0xDF,0x3C,0x1E,0x7B,0xDE,0x3C,
|
||||
0x1E,0x33,0xDC,0x3C,0x1E,0x03,0xC0,0x3C,0x1F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFC,
|
||||
0x1E,0x03,0xC0,0x3C,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x3F,0xFF,0xFF,0xFC,
|
||||
0x3F,0xFF,0xFF,0xFC,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x1C,0x38,0x70,0x70,
|
||||
0x3E,0x78,0xF8,0xF8,0x3C,0x7C,0x78,0x7C,0x7C,0x3C,0x3C,0x3E,0xF8,0x3E,0x3C,0x1F,
|
||||
0xF0,0x1C,0x18,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00},
|
||||
|
||||
/*-- 文字: 此 --*/
|
||||
/*-- 微软雅黑24; 此字体下对应的点阵为:宽x高=32x41 --*/
|
||||
{"此",
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x3C,0x00,
|
||||
0x00,0x78,0x3C,0x00,0x00,0x78,0x3C,0x00,0x00,0x78,0x3C,0x00,0x00,0x78,0x3C,0x00,
|
||||
0x00,0x78,0x3C,0x0C,0x3C,0x78,0x3C,0x1E,0x3C,0x78,0x3C,0x3F,0x3C,0x78,0x3C,0xF8,
|
||||
0x3C,0x7F,0xFD,0xF0,0x3C,0x7F,0xFF,0xE0,0x3C,0x78,0x3F,0x80,0x3C,0x78,0x3E,0x00,
|
||||
0x3C,0x78,0x3C,0x00,0x3C,0x78,0x3C,0x00,0x3C,0x78,0x3C,0x00,0x3C,0x78,0x3C,0x00,
|
||||
0x3C,0x78,0x3C,0x00,0x3C,0x78,0x3C,0x00,0x3C,0x78,0x3C,0x0E,0x3C,0x78,0x3C,0x0F,
|
||||
0x3C,0x78,0x3C,0x0F,0x3C,0x79,0xFC,0x0F,0x3C,0x7F,0xFC,0x0F,0x3F,0xFF,0x3C,0x0F,
|
||||
0x3F,0xF0,0x3E,0x1E,0xFF,0x00,0x1F,0xFE,0xF0,0x00,0x0F,0xFC,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00},
|
||||
|
||||
/*-- 文字: 字 --*/
|
||||
/*-- 微软雅黑24; 此字体下对应的点阵为:宽x高=32x41 --*/
|
||||
{"字",
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x07,0x80,0x00,0x00,0x03,0xC0,0x00,
|
||||
0x00,0x03,0xE0,0x00,0x00,0x01,0xE0,0x00,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,
|
||||
0x78,0x00,0x00,0x1E,0x78,0x00,0x00,0x1E,0x78,0x00,0x00,0x1E,0x78,0x00,0x00,0x1E,
|
||||
0x7B,0xFF,0xFF,0xDE,0x03,0xFF,0xFF,0xC0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,
|
||||
0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xE0,0x00,0x00,0x01,0xE0,0x00,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x01,0xE0,0x00,0x00,0x01,0xE0,0x00,
|
||||
0x00,0x01,0xE0,0x00,0x00,0x01,0xE0,0x00,0x00,0x01,0xE0,0x00,0x00,0x01,0xE0,0x00,
|
||||
0x00,0x03,0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,0xFF,0xC0,0x00,0x00,0xFF,0x80,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00},
|
||||
|
||||
/*-- 文字: 体 --*/
|
||||
/*-- 微软雅黑24; 此字体下对应的点阵为:宽x高=32x41 --*/
|
||||
{"体",
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x3C,0x00,
|
||||
0x03,0xC0,0x3C,0x00,0x03,0xC0,0x3C,0x00,0x07,0x80,0x3C,0x00,0x07,0x80,0x3C,0x00,
|
||||
0x07,0x80,0x3C,0x00,0x0F,0xFF,0xFF,0xFF,0x0F,0xFF,0xFF,0xFF,0x1F,0x01,0xFE,0x00,
|
||||
0x1F,0x01,0xFF,0x00,0x3F,0x01,0xFF,0x00,0x3F,0x03,0xFF,0x00,0x7F,0x03,0xFF,0x80,
|
||||
0x7F,0x07,0xBF,0x80,0xFF,0x07,0xBF,0xC0,0xEF,0x0F,0x3D,0xC0,0xCF,0x0F,0x3D,0xE0,
|
||||
0x0F,0x1E,0x3D,0xE0,0x0F,0x1E,0x3C,0xF0,0x0F,0x3C,0x3C,0x78,0x0F,0x7C,0x3C,0x7C,
|
||||
0x0F,0xF8,0x3C,0x3E,0x0F,0xF7,0xFF,0xDF,0x0F,0xE7,0xFF,0xCF,0x0F,0xC0,0x3C,0x06,
|
||||
0x0F,0x00,0x3C,0x00,0x0F,0x00,0x3C,0x00,0x0F,0x00,0x3C,0x00,0x0F,0x00,0x3C,0x00,
|
||||
0x0F,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00},
|
||||
|
||||
/*-- 文字: 下 --*/
|
||||
/*-- 微软雅黑24; 此字体下对应的点阵为:宽x高=32x41 --*/
|
||||
{"下",
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x0F,0x80,0x00,0x00,0x0F,0x80,0x00,
|
||||
0x00,0x0F,0x80,0x00,0x00,0x0F,0x80,0x00,0x00,0x0F,0x80,0x00,0x00,0x0F,0x80,0x00,
|
||||
0x00,0x0F,0xE0,0x00,0x00,0x0F,0xF8,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xBF,0x00,
|
||||
0x00,0x0F,0x9F,0x80,0x00,0x0F,0x87,0xE0,0x00,0x0F,0x83,0xF0,0x00,0x0F,0x80,0xF8,
|
||||
0x00,0x0F,0x80,0x7C,0x00,0x0F,0x80,0x38,0x00,0x0F,0x80,0x00,0x00,0x0F,0x80,0x00,
|
||||
0x00,0x0F,0x80,0x00,0x00,0x0F,0x80,0x00,0x00,0x0F,0x80,0x00,0x00,0x0F,0x80,0x00,
|
||||
0x00,0x0F,0x80,0x00,0x00,0x0F,0x80,0x00,0x00,0x0F,0x80,0x00,0x00,0x0F,0x80,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00},
|
||||
|
||||
/*-- 文字: 对 --*/
|
||||
/*-- 微软雅黑24; 此字体下对应的点阵为:宽x高=32x41 --*/
|
||||
{"对",
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,
|
||||
0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x78,0x7F,0xFC,0x00,0x78,0x7F,0xFC,0x00,0x78,
|
||||
0x00,0x3C,0x00,0x78,0x00,0x3F,0xFF,0xFF,0x30,0x3F,0xFF,0xFF,0x78,0x3C,0x00,0x78,
|
||||
0x3C,0x38,0x00,0x78,0x3E,0x78,0x00,0x78,0x1E,0x78,0xC0,0x78,0x0F,0x79,0xE0,0x78,
|
||||
0x0F,0xF0,0xF0,0x78,0x07,0xF0,0xF8,0x78,0x03,0xF0,0x78,0x78,0x01,0xE0,0x3C,0x78,
|
||||
0x03,0xF0,0x3E,0x78,0x03,0xF0,0x18,0x78,0x07,0xF8,0x00,0x78,0x07,0xFC,0x00,0x78,
|
||||
0x0F,0x3E,0x00,0x78,0x1F,0x1E,0x00,0x78,0x3E,0x1F,0x00,0x78,0x7C,0x0E,0x00,0xF8,
|
||||
0xF8,0x00,0x00,0xF0,0xF0,0x00,0x3F,0xF0,0x60,0x00,0x3F,0xE0,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00},
|
||||
|
||||
/*-- 文字: 应 --*/
|
||||
/*-- 微软雅黑24; 此字体下对应的点阵为:宽x高=32x41 --*/
|
||||
{"应",
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x03,0xE0,0x00,0x00,0x01,0xE0,0x00,
|
||||
0x00,0x01,0xF0,0x00,0x00,0x00,0xF0,0x00,0x1F,0xFF,0xFF,0xFF,0x1F,0xFF,0xFF,0xFF,
|
||||
0x1E,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x1E,0x01,0xE0,0x78,0x1E,0x01,0xE0,0x78,
|
||||
0x1E,0xE1,0xE0,0x78,0x1F,0xF1,0xF0,0xF8,0x1E,0xF0,0xF0,0xF0,0x1E,0xF0,0xF0,0xF0,
|
||||
0x1E,0xF8,0xF0,0xF0,0x1E,0x78,0xF1,0xF0,0x1E,0x78,0xF9,0xE0,0x1E,0x78,0x79,0xE0,
|
||||
0x1E,0x7C,0x7B,0xE0,0x1E,0x3C,0x7B,0xC0,0x1E,0x3C,0x7B,0xC0,0x1E,0x3C,0x7B,0xC0,
|
||||
0x3C,0x3E,0x07,0x80,0x3C,0x1C,0x07,0x80,0x3C,0x00,0x07,0x80,0x3C,0x00,0x0F,0x00,
|
||||
0x78,0x00,0x0F,0x00,0x7B,0xFF,0xFF,0xFF,0xF3,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,
|
||||
0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00},
|
||||
|
||||
/*-- 文字: 的 --*/
|
||||
/*-- 微软雅黑24; 此字体下对应的点阵为:宽x高=32x41 --*/
|
||||
{"的",
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x3C,0x00,0x07,0xC0,0x3E,0x00,
|
||||
0x07,0x80,0x3C,0x00,0x07,0x80,0x7C,0x00,0x0F,0x00,0x78,0x00,0x7F,0xFE,0x7F,0xFE,
|
||||
0x7F,0xFE,0xFF,0xFE,0x78,0x1E,0xF0,0x1E,0x78,0x1F,0xE0,0x1E,0x78,0x1F,0xE0,0x1E,
|
||||
0x78,0x1F,0xC0,0x1E,0x78,0x1F,0xC0,0x1E,0x78,0x1F,0xF0,0x1E,0x78,0x1E,0xF8,0x1E,
|
||||
0x78,0x1E,0x7C,0x1E,0x7F,0xFE,0x3C,0x1E,0x7F,0xFE,0x1E,0x1E,0x78,0x1E,0x1F,0x1E,
|
||||
0x78,0x1E,0x0F,0x9E,0x78,0x1E,0x07,0x9E,0x78,0x1E,0x07,0x1E,0x78,0x1E,0x00,0x1E,
|
||||
0x78,0x1E,0x00,0x1E,0x78,0x1E,0x00,0x3E,0x78,0x1E,0x00,0x3C,0x78,0x1E,0x00,0x3C,
|
||||
0x7F,0xFE,0x00,0x3C,0x7F,0xFE,0x00,0x7C,0x78,0x1E,0x3F,0xF8,0x78,0x1E,0x3F,0xF0,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00},
|
||||
|
||||
/*-- 文字: 点 --*/
|
||||
/*-- 微软雅黑24; 此字体下对应的点阵为:宽x高=32x41 --*/
|
||||
{"点",
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
|
||||
0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xFF,0xFF,0x00,0x03,0xFF,0xFF,
|
||||
0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
|
||||
0x0F,0xFF,0xFF,0xF8,0x0F,0xFF,0xFF,0xF8,0x0F,0x00,0x00,0x78,0x0F,0x00,0x00,0x78,
|
||||
0x0F,0x00,0x00,0x78,0x0F,0x00,0x00,0x78,0x0F,0x00,0x00,0x78,0x0F,0x00,0x00,0x78,
|
||||
0x0F,0xFF,0xFF,0xF8,0x0F,0xFF,0xFF,0xF8,0x0F,0x00,0x00,0x78,0x00,0x00,0x00,0x00,
|
||||
0x0C,0x38,0x38,0x30,0x1E,0x7C,0x78,0x78,0x3E,0x3C,0x78,0x78,0x3C,0x3C,0x3C,0x3C,
|
||||
0x7C,0x3E,0x3C,0x3E,0xF8,0x1E,0x3C,0x1E,0xF0,0x1E,0x1E,0x1F,0x70,0x1E,0x1C,0x0E,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00},
|
||||
|
||||
/*-- 文字: 阵 --*/
|
||||
/*-- 微软雅黑24; 此字体下对应的点阵为:宽x高=32x41 --*/
|
||||
{"阵",
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x78,0x00,
|
||||
0x7F,0xF0,0x78,0x00,0x7F,0xF0,0x78,0x00,0x79,0xFF,0xFF,0xFF,0x79,0xFF,0xFF,0xFF,
|
||||
0x79,0xE1,0xE0,0x00,0x79,0xE1,0xE0,0x00,0x7B,0xC1,0xEF,0x80,0x7B,0xC3,0xCF,0x80,
|
||||
0x7B,0xC3,0xCF,0x80,0x7F,0x87,0xCF,0x80,0x7F,0x87,0x8F,0x80,0x7F,0x87,0x8F,0x80,
|
||||
0x7B,0xCF,0x0F,0x80,0x7B,0xCF,0xFF,0xFE,0x79,0xEF,0xFF,0xFE,0x79,0xE0,0x0F,0x80,
|
||||
0x78,0xE0,0x0F,0x80,0x78,0xF0,0x0F,0x80,0x78,0xF0,0x0F,0x80,0x78,0xF0,0x0F,0x80,
|
||||
0x78,0xFF,0xFF,0xFF,0x79,0xFF,0xFF,0xFF,0x7F,0xE0,0x0F,0x80,0x7F,0xC0,0x0F,0x80,
|
||||
0x78,0x00,0x0F,0x80,0x78,0x00,0x0F,0x80,0x78,0x00,0x0F,0x80,0x78,0x00,0x0F,0x80,
|
||||
0x78,0x00,0x0F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00},
|
||||
|
||||
/*-- 文字: 为 --*/
|
||||
/*-- 微软雅黑24; 此字体下对应的点阵为:宽x高=32x41 --*/
|
||||
{"为",
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x00,
|
||||
0x0E,0x07,0x80,0x00,0x1F,0x07,0x80,0x00,0x0F,0x87,0x80,0x00,0x07,0xC7,0x80,0x00,
|
||||
0x01,0xE7,0x80,0x00,0x00,0xC7,0x80,0x00,0x00,0x07,0x80,0x00,0x7F,0xFF,0xFF,0xFC,
|
||||
0x7F,0xFF,0xFF,0xFC,0x00,0x07,0x80,0x3C,0x00,0x0F,0x80,0x3C,0x00,0x0F,0x00,0x3C,
|
||||
0x00,0x0F,0x00,0x3C,0x00,0x0F,0x60,0x3C,0x00,0x1F,0xF0,0x3C,0x00,0x1E,0x78,0x3C,
|
||||
0x00,0x3E,0x3C,0x3C,0x00,0x3C,0x3E,0x3C,0x00,0x7C,0x1F,0x3C,0x00,0x78,0x0F,0x3C,
|
||||
0x00,0xF8,0x06,0x3C,0x01,0xF0,0x00,0x3C,0x03,0xE0,0x00,0x7C,0x07,0xC0,0x00,0x7C,
|
||||
0x0F,0x80,0x00,0x78,0x1F,0x00,0x00,0xF8,0x3E,0x00,0xFF,0xF0,0x7C,0x00,0xFF,0xE0,
|
||||
0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00},
|
||||
|
||||
/*-- 文字: 树 --*/
|
||||
/*-- 微软雅黑24; 此字体下对应的点阵为:宽x高=32x41 --*/
|
||||
{"树",
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x38,
|
||||
0x0F,0x00,0x00,0x38,0x0F,0x00,0x00,0x38,0x0F,0x3F,0xF8,0x38,0x0F,0x3F,0xF8,0x38,
|
||||
0x0F,0x00,0x78,0x38,0xFF,0xE0,0x7F,0xFF,0xFF,0xE0,0x7F,0xFF,0x0F,0x00,0x70,0x38,
|
||||
0x0F,0x18,0xF0,0x38,0x1F,0x3C,0xF0,0x38,0x1F,0x1C,0xFE,0x38,0x1F,0xDE,0xFE,0x38,
|
||||
0x3F,0xEF,0xEF,0x38,0x3F,0xFF,0xEF,0x38,0x3F,0xF7,0xE7,0xB8,0x7F,0x67,0xC7,0xB8,
|
||||
0x7F,0x03,0xC3,0xB8,0xFF,0x07,0xE0,0x38,0xEF,0x07,0xE0,0x38,0xEF,0x0F,0xF0,0x38,
|
||||
0xCF,0x1F,0xF0,0x38,0x0F,0x1E,0x78,0x38,0x0F,0x3C,0x7C,0x38,0x0F,0x78,0x3C,0x38,
|
||||
0x0F,0xF8,0x38,0x38,0x0F,0x60,0x00,0x78,0x0F,0x00,0x0F,0xF8,0x0F,0x00,0x07,0xF0,
|
||||
0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00},
|
||||
|
||||
/*-- 文字: 莓 --*/
|
||||
/*-- 微软雅黑24; 此字体下对应的点阵为:宽x高=32x41 --*/
|
||||
{"莓",
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x1E,0x00,0x00,0x3C,0x1E,0x00,
|
||||
0x00,0x3C,0x1E,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x3C,0x1E,0x00,
|
||||
0x07,0xBC,0x1E,0x00,0x07,0x80,0x00,0x00,0x0F,0xFF,0xFF,0xFC,0x0F,0xFF,0xFF,0xFC,
|
||||
0x1E,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xF0,
|
||||
0xF7,0xFF,0xFF,0xF0,0x37,0x83,0x80,0xF0,0x07,0x87,0xC0,0xF0,0x07,0x83,0xF0,0xF0,
|
||||
0x07,0x00,0xE0,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x0F,0x00,0xE0,
|
||||
0x0F,0x0F,0x81,0xE0,0x0E,0x03,0xE1,0xE0,0x1E,0x01,0xC1,0xE0,0x1F,0xFF,0xFF,0xFE,
|
||||
0x1F,0xFF,0xFF,0xFE,0x00,0x00,0x01,0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,0xFF,0xC0,
|
||||
0x00,0x00,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00},
|
||||
|
||||
/*-- 文字: 派 --*/
|
||||
/*-- 微软雅黑24; 此字体下对应的点阵为:宽x高=32x41 --*/
|
||||
{"派",
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x3E,
|
||||
0x7C,0x00,0x3F,0xFE,0x3F,0x3F,0xFF,0xF0,0x1F,0xBF,0xE0,0x00,0x07,0xBC,0x00,0x00,
|
||||
0x03,0x3C,0x00,0x00,0x00,0x3C,0x00,0x3C,0x00,0x3C,0x0F,0xFE,0x70,0x3D,0xFF,0xF8,
|
||||
0xF8,0x3D,0xFF,0x00,0x7C,0x3D,0xE7,0x80,0x3F,0x3D,0xE7,0x80,0x1F,0x3D,0xE7,0x8E,
|
||||
0x0E,0x3D,0xE7,0x9F,0x00,0x3D,0xE7,0xFE,0x00,0x39,0xE7,0xF8,0x00,0x39,0xE3,0xF0,
|
||||
0x1C,0x39,0xE3,0xC0,0x1E,0x79,0xE3,0xC0,0x1E,0x79,0xE1,0xE0,0x1E,0x79,0xE1,0xE0,
|
||||
0x3C,0x79,0xE0,0xF0,0x3C,0x79,0xE0,0xF8,0x3C,0xF1,0xE0,0x7C,0x3C,0xF1,0xE3,0x7C,
|
||||
0x7D,0xF1,0xEF,0x3F,0x79,0xE1,0xFE,0x1F,0x7B,0xE1,0xF8,0x0E,0x7B,0xC3,0xE0,0x00,
|
||||
0x79,0x81,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00},
|
||||
|
||||
/*-- 文字: A --*/
|
||||
/*-- 微软雅黑24; 此字体下对应的点阵为:宽x高=32x41 --*/
|
||||
{
|
||||
"A",
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x7C,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,
|
||||
0x01,0xFF,0x00,0x00,0x01,0xFF,0x00,0x00,0x01,0xEF,0x00,0x00,0x03,0xEF,0x80,0x00,
|
||||
0x03,0xCF,0x80,0x00,0x07,0xC7,0x80,0x00,0x07,0xC7,0xC0,0x00,0x07,0x87,0xC0,0x00,
|
||||
0x0F,0x83,0xE0,0x00,0x0F,0x83,0xE0,0x00,0x0F,0x01,0xE0,0x00,0x1F,0xFF,0xF0,0x00,
|
||||
0x1F,0xFF,0xF0,0x00,0x3F,0xFF,0xF8,0x00,0x3E,0x00,0xF8,0x00,0x3C,0x00,0xF8,0x00,
|
||||
0x7C,0x00,0x7C,0x00,0x7C,0x00,0x7C,0x00,0x78,0x00,0x3C,0x00,0xF8,0x00,0x3E,0x00,
|
||||
0xF8,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00},
|
||||
|
||||
/*-- 文字: a --*/
|
||||
/*-- 微软雅黑24; 此字体下对应的点阵为:宽x高=32x41 --*/
|
||||
{"a",
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,
|
||||
0x1F,0xFE,0x00,0x00,0x3F,0xFE,0x00,0x00,0x3E,0x3F,0x00,0x00,0x38,0x1F,0x00,0x00,
|
||||
0x00,0x0F,0x00,0x00,0x00,0x0F,0x00,0x00,0x03,0xFF,0x00,0x00,0x1F,0xFF,0x00,0x00,
|
||||
0x3F,0x8F,0x00,0x00,0x7C,0x0F,0x00,0x00,0x7C,0x0F,0x00,0x00,0x78,0x1F,0x00,0x00,
|
||||
0x7C,0x1F,0x00,0x00,0x7E,0x7F,0x00,0x00,0x7F,0xFF,0x00,0x00,0x3F,0xFF,0x00,0x00,
|
||||
0x0F,0xCF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00},
|
||||
|
||||
/*-- 文字: b --*/
|
||||
/*-- 微软雅黑24; 此字体下对应的点阵为:宽x高=32x41 --*/
|
||||
{"b",
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,
|
||||
0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,
|
||||
0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x3C,0xFE,0x00,0x00,
|
||||
0x3D,0xFF,0x80,0x00,0x3F,0xFF,0xC0,0x00,0x3F,0x8F,0xC0,0x00,0x3F,0x07,0xE0,0x00,
|
||||
0x3E,0x03,0xE0,0x00,0x3E,0x03,0xE0,0x00,0x3C,0x01,0xE0,0x00,0x3C,0x01,0xE0,0x00,
|
||||
0x3C,0x01,0xE0,0x00,0x3C,0x03,0xE0,0x00,0x3E,0x03,0xE0,0x00,0x3E,0x03,0xE0,0x00,
|
||||
0x3F,0x07,0xC0,0x00,0x3F,0x8F,0xC0,0x00,0x3F,0xFF,0x80,0x00,0x3F,0xFF,0x00,0x00,
|
||||
0x3C,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00},
|
||||
|
||||
/*-- 文字: c --*/
|
||||
/*-- 微软雅黑24; 此字体下对应的点阵为:宽x高=32x41 --*/
|
||||
{"c",
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFC,0x00,0x00,
|
||||
0x07,0xFE,0x00,0x00,0x1F,0xFE,0x00,0x00,0x3F,0x86,0x00,0x00,0x3E,0x00,0x00,0x00,
|
||||
0x7C,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x78,0x00,0x00,0x00,
|
||||
0x78,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,
|
||||
0x3E,0x00,0x00,0x00,0x3F,0x86,0x00,0x00,0x1F,0xFE,0x00,0x00,0x0F,0xFE,0x00,0x00,
|
||||
0x03,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00},
|
||||
|
||||
/*-- 文字: 微 --*/
|
||||
/*-- 微软雅黑24; 此字体下对应的点阵为:宽x高=32x41 --*/
|
||||
{"微",
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x07,0x01,0xE0,0x07,0x87,0x01,0xE0,
|
||||
0x07,0x07,0x01,0xC0,0x0F,0xF7,0x79,0xC0,0x1E,0xF7,0x7B,0xC0,0x1E,0xF7,0x7B,0x80,
|
||||
0x3C,0xF7,0x7B,0xFF,0x78,0xF7,0x7B,0xFF,0xF8,0xF7,0x7F,0x9E,0xF7,0xFF,0xFF,0x9E,
|
||||
0x67,0xFF,0xFF,0x9E,0x07,0x00,0x7F,0x9C,0x0F,0x00,0x0F,0x9C,0x1E,0x00,0x1F,0x9C,
|
||||
0x1E,0x7F,0xFF,0xBC,0x3E,0x7F,0xF3,0xFC,0x3E,0x00,0x03,0xFC,0x7E,0x00,0x01,0xF8,
|
||||
0xFE,0x00,0x01,0xF8,0xFE,0x7F,0xE1,0xF8,0xDE,0x7F,0xE1,0xF8,0x1E,0x78,0xE0,0xF0,
|
||||
0x1E,0x78,0xEE,0xF0,0x1E,0x78,0xFF,0xF0,0x1E,0x78,0xFD,0xF8,0x1E,0x79,0xFB,0xFC,
|
||||
0x1E,0xF1,0xF7,0xBC,0x1E,0xF0,0xEF,0x9E,0x1F,0xE0,0x0F,0x0F,0x1E,0xC0,0x1E,0x0F,
|
||||
0x1E,0x00,0x0C,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00},
|
||||
|
||||
/*-- 文字: 雪 --*/
|
||||
/*-- 微软雅黑24; 此字体下对应的点阵为:宽x高=32x41 --*/
|
||||
{"雪",
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF8,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
|
||||
0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x78,0x03,0xC0,0x1E,0x78,0x03,0xC0,0x1E,
|
||||
0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
|
||||
0x07,0xFF,0xFF,0xE0,0x07,0xFF,0xFF,0xE0,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,
|
||||
0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x78,
|
||||
0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x78,
|
||||
0x00,0x00,0x00,0x78,0x3F,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x78,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00},
|
||||
|
||||
/*-- 文字: 电 --*/
|
||||
/*-- 微软雅黑24; 此字体下对应的点阵为:宽x高=32x41 --*/
|
||||
{"电",
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x00,0x00,0x07,0x80,0x00,
|
||||
0x00,0x07,0x80,0x00,0x00,0x07,0x80,0x00,0x7F,0xFF,0xFF,0xF8,0x7F,0xFF,0xFF,0xF8,
|
||||
0x78,0x07,0x80,0xF8,0x78,0x07,0x80,0xF8,0x78,0x07,0x80,0xF8,0x78,0x07,0x80,0xF8,
|
||||
0x78,0x07,0x80,0xF8,0x78,0x07,0x80,0xF8,0x7F,0xFF,0xFF,0xF8,0x7F,0xFF,0xFF,0xF8,
|
||||
0x78,0x07,0x80,0xF8,0x78,0x07,0x80,0xF8,0x78,0x07,0x80,0xF8,0x78,0x07,0x80,0xF8,
|
||||
0x78,0x07,0x80,0xF8,0x78,0x07,0x80,0xF8,0x7F,0xFF,0xFF,0xF8,0x7F,0xFF,0xFF,0xF8,
|
||||
0x78,0x07,0x80,0x0E,0x78,0x07,0x80,0x0F,0x00,0x07,0x80,0x0F,0x00,0x07,0x80,0x0F,
|
||||
0x00,0x07,0x80,0x1F,0x00,0x07,0x80,0x1E,0x00,0x03,0xFF,0xFE,0x00,0x01,0xFF,0xFC,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00},
|
||||
|
||||
/*-- 文字: 子 --*/
|
||||
/*-- 微软雅黑24; 此字体下对应的点阵为:宽x高=32x41 --*/
|
||||
{"子",
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,
|
||||
0x00,0x00,0x0F,0xC0,0x00,0x00,0x1F,0x80,0x00,0x00,0x3E,0x00,0x00,0x00,0xFC,0x00,
|
||||
0x00,0x01,0xF8,0x00,0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,
|
||||
0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,
|
||||
0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,
|
||||
0x00,0x03,0xE0,0x00,0x00,0x03,0xC0,0x00,0x01,0xFF,0xC0,0x00,0x00,0xFF,0x80,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00},
|
||||
|
||||
|
||||
};
|
||||
|
||||
cFONT Font24CN = {
|
||||
Font24CN_Table,
|
||||
sizeof(Font24CN_Table)/sizeof(CH_CN), /*size of table*/
|
||||
24, /* ASCII Width */
|
||||
32, /* Width */
|
||||
41, /* Height */
|
||||
};
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
|
||||
1005
Arduino/epd1in02d/font8.cpp
Normal file
1005
Arduino/epd1in02d/font8.cpp
Normal file
File diff suppressed because it is too large
Load diff
101
Arduino/epd1in02d/fonts.h
Normal file
101
Arduino/epd1in02d/fonts.h
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* @file fonts.h
|
||||
* @author MCD Application Team
|
||||
* @version V1.0.0
|
||||
* @date 18-February-2014
|
||||
* @brief Header for fonts.c file
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <h2><center>© COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of STMicroelectronics nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef __FONTS_H
|
||||
#define __FONTS_H
|
||||
|
||||
|
||||
/*最大字体微软雅黑24 (32x41) */
|
||||
#define MAX_HEIGHT_FONT 41
|
||||
#define MAX_WIDTH_FONT 32
|
||||
#define OFFSET_BITMAP
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include <stdint.h>
|
||||
#include <avr/pgmspace.h>
|
||||
//ASCII
|
||||
typedef struct _tFont
|
||||
{
|
||||
const uint8_t *table;
|
||||
uint16_t Width;
|
||||
uint16_t Height;
|
||||
|
||||
} sFONT;
|
||||
|
||||
|
||||
//GB2312
|
||||
typedef struct // 汉字字模数据结构
|
||||
{
|
||||
unsigned char index[3]; // 汉字内码索引
|
||||
const char matrix[MAX_HEIGHT_FONT*MAX_WIDTH_FONT/8]; // 点阵码数据
|
||||
}CH_CN;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
const CH_CN *table;
|
||||
uint16_t size;
|
||||
uint16_t ASCII_Width;
|
||||
uint16_t Width;
|
||||
uint16_t Height;
|
||||
|
||||
}cFONT;
|
||||
|
||||
extern sFONT Font24;
|
||||
extern sFONT Font20;
|
||||
extern sFONT Font16;
|
||||
extern sFONT Font12;
|
||||
extern sFONT Font8;
|
||||
|
||||
extern cFONT Font12CN;
|
||||
extern cFONT Font24CN;
|
||||
extern const unsigned char Font16_Table[];
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __FONTS_H */
|
||||
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
|
||||
111
Arduino/epd1in02d/imagedata.cpp
Normal file
111
Arduino/epd1in02d/imagedata.cpp
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
/**
|
||||
* @filename : imagedata.cpp
|
||||
* @brief : data file for epd demo
|
||||
*
|
||||
* Copyright (C) Waveshare September 5 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "imagedata.h"
|
||||
#include <avr/pgmspace.h>
|
||||
|
||||
const unsigned char IMAGE_DATA[] PROGMEM = {
|
||||
0X00,0X00,0X00,0X00,0X01,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X80,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X80,0X00,0X00,0X00,0X00,0X01,0X08,
|
||||
0X00,0X00,0X01,0X80,0X00,0X00,0X00,0X00,0X03,0X0C,0X00,0X00,0X01,0X80,0X00,0X00,
|
||||
0X00,0X00,0X06,0X06,0X00,0X00,0X01,0X80,0X00,0X00,0X00,0X00,0X04,0X02,0X00,0X00,
|
||||
0X01,0X80,0XC0,0X00,0X00,0X00,0X04,0X02,0X00,0X00,0X01,0X80,0XF8,0X00,0X00,0X00,
|
||||
0X04,0X02,0X00,0X00,0X01,0X80,0X3F,0X00,0X00,0X00,0X06,0X06,0X00,0X00,0X01,0X80,
|
||||
0X07,0XE0,0X00,0X00,0X03,0XFC,0X00,0X00,0X01,0X80,0X07,0XF0,0X00,0X00,0X01,0XF8,
|
||||
0X00,0X00,0X01,0X80,0X1F,0X10,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X80,0XF8,0X10,
|
||||
0X3F,0XC0,0X00,0X00,0X00,0X00,0X01,0X80,0XE0,0X00,0X7F,0XC0,0X03,0X00,0X00,0X00,
|
||||
0X01,0X80,0X00,0X00,0X40,0X00,0X07,0X80,0X00,0XC0,0X01,0X80,0X7F,0X80,0X40,0X00,
|
||||
0X04,0X80,0X00,0XF8,0X01,0X80,0XFF,0X80,0X60,0X00,0X07,0X80,0X00,0X3F,0X01,0X80,
|
||||
0X91,0X83,0XFF,0XC0,0X03,0X00,0X00,0X07,0XE1,0X80,0X98,0X83,0XFF,0XC0,0X00,0X00,
|
||||
0X00,0X07,0XF1,0X80,0X88,0X80,0X00,0X00,0X00,0X00,0X00,0X1F,0X11,0X80,0XC8,0X80,
|
||||
0X40,0X40,0X03,0XF8,0X00,0XF8,0X11,0X80,0X6F,0X80,0X40,0X40,0X07,0XFC,0X00,0XE0,
|
||||
0X01,0X80,0X27,0X01,0XFF,0XC0,0X04,0X66,0X00,0X00,0X01,0X80,0X00,0X01,0XFF,0XC0,
|
||||
0X04,0X22,0X00,0X7F,0X81,0X80,0X00,0X00,0X40,0X00,0X04,0X22,0X00,0XFF,0X81,0X87,
|
||||
0XFF,0X80,0X00,0X00,0X07,0XE6,0X00,0X91,0X81,0X87,0XFF,0X82,0X00,0X00,0X03,0XC4,
|
||||
0X00,0X98,0X81,0X83,0XC0,0X03,0X80,0X00,0X00,0X00,0X00,0X88,0X81,0X80,0XF0,0X03,
|
||||
0XE0,0X00,0X00,0X00,0X00,0XC8,0X81,0X80,0X3E,0X02,0X7E,0X00,0X03,0XC2,0X00,0X6F,
|
||||
0X81,0X80,0X0F,0X82,0X1F,0XC0,0X07,0XE2,0X00,0X27,0X01,0X80,0X0F,0X82,0X01,0XC0,
|
||||
0X04,0X32,0X00,0X00,0X01,0X80,0X3E,0X02,0X00,0X00,0X04,0X1A,0X00,0X00,0X01,0X80,
|
||||
0XF0,0X02,0X00,0X00,0X04,0X0E,0X07,0XFF,0X81,0X83,0XC0,0X00,0X00,0X00,0X07,0X06,
|
||||
0X07,0XFF,0X81,0X87,0XFF,0X80,0X00,0X00,0X03,0X02,0X00,0XC1,0X81,0X87,0XFF,0X80,
|
||||
0X00,0X00,0X00,0X00,0X00,0X80,0X81,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X80,
|
||||
0X81,0X80,0X00,0X00,0X00,0X00,0X00,0X60,0X00,0XC1,0X81,0X80,0X00,0X00,0X00,0X00,
|
||||
0X00,0X60,0X00,0X7F,0X01,0X80,0X00,0X00,0X00,0X00,0X00,0X20,0X00,0X3E,0X01,0X80,
|
||||
0X00,0X00,0X00,0X00,0X00,0X60,0X00,0X00,0X01,0X80,0X00,0X00,0X00,0X00,0X00,0X60,
|
||||
0X00,0X00,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X40,0X00,0X7F,0X81,0X80,0X00,0X00,
|
||||
0X00,0X00,0X00,0X60,0X00,0XFF,0X81,0X80,0X00,0X00,0X00,0X00,0X00,0X20,0X00,0X80,
|
||||
0X01,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X80,0X01,0X80,0X00,0X00,0X00,0X00,
|
||||
0X03,0XBC,0X00,0XC0,0X01,0X80,0X00,0X00,0X00,0X00,0X07,0XFE,0X00,0XFF,0X81,0X80,
|
||||
0X00,0X00,0X00,0X00,0X04,0X42,0X00,0XFF,0X81,0X80,0X00,0X00,0X00,0X00,0X04,0X42,
|
||||
0X00,0X00,0X01,0X80,0X00,0X00,0X00,0X00,0X04,0X42,0X00,0X00,0X01,0X80,0X00,0X00,
|
||||
0X00,0X00,0X07,0X0E,0X00,0XFF,0X81,0X80,0X00,0X00,0X00,0X00,0X03,0X0C,0X00,0XFF,
|
||||
0X81,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X81,0X80,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X81,0X80,0X00,0X00,0X00,0X00,0X03,0XC2,0X00,0X00,0X81,0X80,
|
||||
0X00,0X00,0X00,0X00,0X07,0XE2,0X00,0XFF,0X81,0X80,0X00,0X00,0X00,0X00,0X04,0X32,
|
||||
0X00,0XFF,0X01,0X80,0X00,0X00,0X00,0X00,0X04,0X1A,0X00,0X00,0X01,0X80,0X00,0X00,
|
||||
0X00,0X00,0X04,0X0E,0X00,0X00,0X01,0X80,0X00,0X00,0X00,0X00,0X07,0X06,0X01,0X0E,
|
||||
0X01,0X80,0X00,0X00,0X00,0X00,0X03,0X02,0X03,0X1F,0X01,0X80,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X06,0X11,0X81,0X80,0X00,0X02,0X00,0X00,0X00,0X00,0X04,0X10,0X81,0X80,
|
||||
0X03,0XFF,0XC0,0X00,0X00,0X00,0X04,0X30,0X81,0X80,0X03,0XFF,0XC0,0X00,0X00,0X00,
|
||||
0X04,0X20,0X81,0X80,0X01,0X82,0X00,0X00,0X00,0X20,0X04,0X20,0X81,0X80,0X00,0XE2,
|
||||
0X00,0X00,0X00,0X20,0X06,0X61,0X81,0X80,0X00,0X72,0X00,0X00,0X0C,0X01,0X83,0XC3,
|
||||
0X01,0X80,0X00,0X1A,0X00,0X00,0X00,0X00,0X01,0X82,0X01,0X80,0X00,0X0E,0X00,0X00,
|
||||
0X01,0XFC,0X00,0X00,0X01,0X80,0X00,0X06,0X00,0X00,0X03,0XFE,0X00,0X00,0X01,0X80,
|
||||
0X00,0X00,0X00,0X00,0X03,0XFE,0X00,0X00,0X01,0X80,0X00,0X07,0X00,0X00,0X07,0XFF,
|
||||
0X00,0X00,0X01,0X80,0X01,0XEF,0X80,0X00,0X37,0XFF,0X60,0X00,0X01,0X80,0X03,0XF8,
|
||||
0XC0,0X00,0X07,0XFF,0X00,0X00,0X01,0X80,0X02,0X30,0X40,0X00,0X03,0XFE,0X00,0X00,
|
||||
0X01,0X80,0X02,0X10,0X40,0X00,0X03,0XFE,0X00,0X00,0X01,0X80,0X03,0X10,0XC0,0X00,
|
||||
0X01,0XFC,0X00,0X00,0X01,0X80,0X01,0X81,0X80,0X00,0X0C,0X01,0X80,0X00,0X01,0X80,
|
||||
0X00,0X81,0X80,0X00,0X00,0X20,0X00,0X00,0X01,0X80,0X00,0X00,0X00,0X00,0X00,0X20,
|
||||
0X00,0X00,0X01,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X80,0X00,0X00,
|
||||
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X01,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X80,0X01,0X81,0X80,0X00,
|
||||
0X00,0X00,0X00,0X00,0X01,0X80,0X01,0X81,0X80,0X00,0X00,0X00,0X00,0X00,0X01,0X80,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X80,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X01,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X80,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X80,0X00,0X00,0X00,0X00,0X00,0X01,0XFF,0XFF,
|
||||
0XC1,0X80,0X00,0XE0,0X40,0X00,0X00,0X07,0XFF,0XFF,0XC1,0X80,0X03,0XF8,0X40,0X00,
|
||||
0X00,0X1F,0XE0,0XFF,0XC1,0X80,0X03,0X1C,0X40,0X00,0X00,0X3F,0X80,0X1F,0XC1,0X80,
|
||||
0X02,0X06,0X40,0X00,0X00,0X3F,0X00,0X0F,0XC1,0X80,0X02,0X03,0X40,0X00,0X00,0XFC,
|
||||
0X0F,0X07,0XC1,0X80,0X03,0X01,0XC0,0X00,0X00,0XFC,0X07,0X83,0XC1,0X80,0X01,0X80,
|
||||
0XC0,0X00,0X00,0XFE,0X03,0XFF,0XC1,0X80,0X00,0X80,0X40,0X00,0X01,0XFF,0XC0,0X7F,
|
||||
0XC1,0X80,0X00,0X00,0X00,0X00,0X01,0XC1,0XF0,0X7F,0XC1,0X80,0X00,0X00,0X00,0X00,
|
||||
0X01,0XC1,0XF0,0X7F,0XC1,0X80,0X00,0X00,0X00,0X00,0X01,0XC0,0XF8,0X7F,0XC1,0X80,
|
||||
0X00,0X00,0X00,0X00,0X01,0XE0,0X13,0XFF,0XC1,0X80,0X03,0XFF,0XC0,0X00,0X01,0XF0,
|
||||
0X0F,0XFF,0XC1,0X80,0X03,0XFF,0XC0,0X00,0X01,0XFF,0X01,0XFF,0XC1,0X80,0X01,0X80,
|
||||
0X00,0X00,0X01,0XFF,0XC0,0X7F,0XC1,0X80,0X00,0XC0,0X00,0X00,0X01,0XFF,0XC0,0X7F,
|
||||
0X81,0X80,0X00,0X40,0X00,0X00,0X01,0XFE,0X01,0XFF,0X81,0X80,0X00,0X00,0X00,0X00,
|
||||
0X01,0XFC,0X1F,0XFF,0X81,0X80,0X00,0X00,0X00,0X00,0X01,0XFC,0X0F,0XFF,0X81,0X80,
|
||||
0X00,0X00,0X00,0X00,0X01,0XFF,0X00,0XFF,0X01,0X80,0X00,0X00,0X00,0X00,0X01,0XFF,
|
||||
0XC0,0X7E,0X01,0X80,0X00,0X00,0X00,0X00,0X01,0XFF,0X00,0X7E,0X01,0X80,0X00,0X00,
|
||||
0X00,0X00,0X01,0XFC,0X03,0XFC,0X01,0X80,0X00,0X00,0X00,0X00,0X01,0XFC,0X1F,0XF8,
|
||||
0X01,0X80,0X00,0X00,0X00,0X00,0X01,0XFC,0X7F,0XF0,0X01,0X80,0X00,0X00,0X00,0X00,
|
||||
0X01,0XFC,0X7F,0XF0,0X01,0X80,0X00,0X00,0X00,0X00,0X01,0XFF,0XFF,0XC0,0X01,0X80,
|
||||
0X00,0X00,0X00,0X00,0X01,0XFF,0XFF,0X00,0X01,0X80,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X01,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X80,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X01,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X80,0X00,0X00,0X00,0X00,
|
||||
};
|
||||
|
||||
30
Arduino/epd1in02d/imagedata.h
Normal file
30
Arduino/epd1in02d/imagedata.h
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
/**
|
||||
* @filename : imagedata.h
|
||||
* @brief : head file for imagedata.cpp
|
||||
*
|
||||
* Copyright (C) Waveshare September 5 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
extern const unsigned char IMAGE_DATA[];
|
||||
|
||||
/* FILE END */
|
||||
|
||||
|
||||
281
Arduino/epd1in54/epd1in54.cpp
Normal file
281
Arduino/epd1in54/epd1in54.cpp
Normal file
|
|
@ -0,0 +1,281 @@
|
|||
/**
|
||||
* @filename : epd1in54.cpp
|
||||
* @brief : Implements for e-paper library
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare September 5 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include "epd1in54.h"
|
||||
|
||||
Epd::~Epd() {
|
||||
};
|
||||
|
||||
Epd::Epd() {
|
||||
reset_pin = RST_PIN;
|
||||
dc_pin = DC_PIN;
|
||||
cs_pin = CS_PIN;
|
||||
busy_pin = BUSY_PIN;
|
||||
width = EPD_WIDTH;
|
||||
height = EPD_HEIGHT;
|
||||
};
|
||||
|
||||
int Epd::Init(const unsigned char* lut) {
|
||||
/* this calls the peripheral hardware interface, see epdif */
|
||||
if (IfInit() != 0) {
|
||||
return -1;
|
||||
}
|
||||
/* EPD hardware init start */
|
||||
this->lut = lut;
|
||||
Reset();
|
||||
SendCommand(DRIVER_OUTPUT_CONTROL);
|
||||
SendData((EPD_HEIGHT - 1) & 0xFF);
|
||||
SendData(((EPD_HEIGHT - 1) >> 8) & 0xFF);
|
||||
SendData(0x00); // GD = 0; SM = 0; TB = 0;
|
||||
SendCommand(BOOSTER_SOFT_START_CONTROL);
|
||||
SendData(0xD7);
|
||||
SendData(0xD6);
|
||||
SendData(0x9D);
|
||||
SendCommand(WRITE_VCOM_REGISTER);
|
||||
SendData(0xA8); // VCOM 7C
|
||||
SendCommand(SET_DUMMY_LINE_PERIOD);
|
||||
SendData(0x1A); // 4 dummy lines per gate
|
||||
SendCommand(SET_GATE_TIME);
|
||||
SendData(0x08); // 2us per line
|
||||
SendCommand(DATA_ENTRY_MODE_SETTING);
|
||||
SendData(0x03); // X increment; Y increment
|
||||
SetLut(this->lut);
|
||||
/* EPD hardware init end */
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: basic function for sending commands
|
||||
*/
|
||||
void Epd::SendCommand(unsigned char command) {
|
||||
DigitalWrite(dc_pin, LOW);
|
||||
SpiTransfer(command);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: basic function for sending data
|
||||
*/
|
||||
void Epd::SendData(unsigned char data) {
|
||||
DigitalWrite(dc_pin, HIGH);
|
||||
SpiTransfer(data);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: Wait until the busy_pin goes LOW
|
||||
*/
|
||||
void Epd::WaitUntilIdle(void) {
|
||||
while(DigitalRead(busy_pin) == HIGH) { //LOW: idle, HIGH: busy
|
||||
DelayMs(100);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: module reset.
|
||||
* often used to awaken the module in deep sleep,
|
||||
* see Epd::Sleep();
|
||||
*/
|
||||
void Epd::Reset(void) {
|
||||
DigitalWrite(reset_pin, LOW); //module reset
|
||||
DelayMs(200);
|
||||
DigitalWrite(reset_pin, HIGH);
|
||||
DelayMs(200);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: set the look-up table register
|
||||
*/
|
||||
void Epd::SetLut(const unsigned char* lut) {
|
||||
this->lut = lut;
|
||||
SendCommand(WRITE_LUT_REGISTER);
|
||||
/* the length of look-up table is 30 bytes */
|
||||
for (int i = 0; i < 30; i++) {
|
||||
SendData(this->lut[i]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: put an image buffer to the frame memory.
|
||||
* this won't update the display.
|
||||
*/
|
||||
void Epd::SetFrameMemory(
|
||||
const unsigned char* image_buffer,
|
||||
int x,
|
||||
int y,
|
||||
int image_width,
|
||||
int image_height
|
||||
) {
|
||||
int x_end;
|
||||
int y_end;
|
||||
|
||||
if (
|
||||
image_buffer == NULL ||
|
||||
x < 0 || image_width < 0 ||
|
||||
y < 0 || image_height < 0
|
||||
) {
|
||||
return;
|
||||
}
|
||||
/* x point must be the multiple of 8 or the last 3 bits will be ignored */
|
||||
x &= 0xF8;
|
||||
image_width &= 0xF8;
|
||||
if (x + image_width >= this->width) {
|
||||
x_end = this->width - 1;
|
||||
} else {
|
||||
x_end = x + image_width - 1;
|
||||
}
|
||||
if (y + image_height >= this->height) {
|
||||
y_end = this->height - 1;
|
||||
} else {
|
||||
y_end = y + image_height - 1;
|
||||
}
|
||||
SetMemoryArea(x, y, x_end, y_end);
|
||||
SetMemoryPointer(x, y);
|
||||
SendCommand(WRITE_RAM);
|
||||
/* send the image data */
|
||||
for (int j = 0; j < y_end - y + 1; j++) {
|
||||
for (int i = 0; i < (x_end - x + 1) / 8; i++) {
|
||||
SendData(image_buffer[i + j * (image_width / 8)]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: put an image buffer to the frame memory.
|
||||
* this won't update the display.
|
||||
*
|
||||
* Question: When do you use this function instead of
|
||||
* void SetFrameMemory(
|
||||
* const unsigned char* image_buffer,
|
||||
* int x,
|
||||
* int y,
|
||||
* int image_width,
|
||||
* int image_height
|
||||
* );
|
||||
* Answer: SetFrameMemory with parameters only reads image data
|
||||
* from the RAM but not from the flash in AVR chips (for AVR chips,
|
||||
* you have to use the function pgm_read_byte to read buffers
|
||||
* from the flash).
|
||||
*/
|
||||
void Epd::SetFrameMemory(const unsigned char* image_buffer) {
|
||||
SetMemoryArea(0, 0, this->width - 1, this->height - 1);
|
||||
SetMemoryPointer(0, 0);
|
||||
SendCommand(WRITE_RAM);
|
||||
/* send the image data */
|
||||
for (int i = 0; i < this->width / 8 * this->height; i++) {
|
||||
SendData(pgm_read_byte(&image_buffer[i]));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: clear the frame memory with the specified color.
|
||||
* this won't update the display.
|
||||
*/
|
||||
void Epd::ClearFrameMemory(unsigned char color) {
|
||||
SetMemoryArea(0, 0, this->width - 1, this->height - 1);
|
||||
SetMemoryPointer(0, 0);
|
||||
SendCommand(WRITE_RAM);
|
||||
/* send the color data */
|
||||
for (int i = 0; i < this->width / 8 * this->height; i++) {
|
||||
SendData(color);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: update the display
|
||||
* there are 2 memory areas embedded in the e-paper display
|
||||
* but once this function is called,
|
||||
* the the next action of SetFrameMemory or ClearFrame will
|
||||
* set the other memory area.
|
||||
*/
|
||||
void Epd::DisplayFrame(void) {
|
||||
SendCommand(DISPLAY_UPDATE_CONTROL_2);
|
||||
SendData(0xC4);
|
||||
SendCommand(MASTER_ACTIVATION);
|
||||
SendCommand(TERMINATE_FRAME_READ_WRITE);
|
||||
WaitUntilIdle();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: private function to specify the memory area for data R/W
|
||||
*/
|
||||
void Epd::SetMemoryArea(int x_start, int y_start, int x_end, int y_end) {
|
||||
SendCommand(SET_RAM_X_ADDRESS_START_END_POSITION);
|
||||
/* x point must be the multiple of 8 or the last 3 bits will be ignored */
|
||||
SendData((x_start >> 3) & 0xFF);
|
||||
SendData((x_end >> 3) & 0xFF);
|
||||
SendCommand(SET_RAM_Y_ADDRESS_START_END_POSITION);
|
||||
SendData(y_start & 0xFF);
|
||||
SendData((y_start >> 8) & 0xFF);
|
||||
SendData(y_end & 0xFF);
|
||||
SendData((y_end >> 8) & 0xFF);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: private function to specify the start point for data R/W
|
||||
*/
|
||||
void Epd::SetMemoryPointer(int x, int y) {
|
||||
SendCommand(SET_RAM_X_ADDRESS_COUNTER);
|
||||
/* x point must be the multiple of 8 or the last 3 bits will be ignored */
|
||||
SendData((x >> 3) & 0xFF);
|
||||
SendCommand(SET_RAM_Y_ADDRESS_COUNTER);
|
||||
SendData(y & 0xFF);
|
||||
SendData((y >> 8) & 0xFF);
|
||||
WaitUntilIdle();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: After this command is transmitted, the chip would enter the
|
||||
* deep-sleep mode to save power.
|
||||
* The deep sleep mode would return to standby by hardware reset.
|
||||
* You can use Epd::Init() to awaken
|
||||
*/
|
||||
void Epd::Sleep() {
|
||||
SendCommand(DEEP_SLEEP_MODE);
|
||||
WaitUntilIdle();
|
||||
|
||||
DigitalWrite(reset_pin, LOW);
|
||||
}
|
||||
|
||||
const unsigned char lut_full_update[] =
|
||||
{
|
||||
0x02, 0x02, 0x01, 0x11, 0x12, 0x12, 0x22, 0x22,
|
||||
0x66, 0x69, 0x69, 0x59, 0x58, 0x99, 0x99, 0x88,
|
||||
0x00, 0x00, 0x00, 0x00, 0xF8, 0xB4, 0x13, 0x51,
|
||||
0x35, 0x51, 0x51, 0x19, 0x01, 0x00
|
||||
};
|
||||
|
||||
const unsigned char lut_partial_update[] =
|
||||
{
|
||||
0x10, 0x18, 0x18, 0x08, 0x18, 0x18, 0x08, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x13, 0x14, 0x44, 0x12,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
|
||||
/* END OF FILE */
|
||||
|
||||
|
||||
100
Arduino/epd1in54/epd1in54.h
Normal file
100
Arduino/epd1in54/epd1in54.h
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
/**
|
||||
* @filename : epd1in54.h
|
||||
* @brief : Header file for e-paper display library epd1in54.cpp
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare September 5 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef EPD1IN54_H
|
||||
#define EPD1IN54_H
|
||||
|
||||
#include "epdif.h"
|
||||
|
||||
// Display resolution
|
||||
#define EPD_WIDTH 200
|
||||
#define EPD_HEIGHT 200
|
||||
|
||||
// EPD1IN54 commands
|
||||
#define DRIVER_OUTPUT_CONTROL 0x01
|
||||
#define BOOSTER_SOFT_START_CONTROL 0x0C
|
||||
#define GATE_SCAN_START_POSITION 0x0F
|
||||
#define DEEP_SLEEP_MODE 0x10
|
||||
#define DATA_ENTRY_MODE_SETTING 0x11
|
||||
#define SW_RESET 0x12
|
||||
#define TEMPERATURE_SENSOR_CONTROL 0x1A
|
||||
#define MASTER_ACTIVATION 0x20
|
||||
#define DISPLAY_UPDATE_CONTROL_1 0x21
|
||||
#define DISPLAY_UPDATE_CONTROL_2 0x22
|
||||
#define WRITE_RAM 0x24
|
||||
#define WRITE_VCOM_REGISTER 0x2C
|
||||
#define WRITE_LUT_REGISTER 0x32
|
||||
#define SET_DUMMY_LINE_PERIOD 0x3A
|
||||
#define SET_GATE_TIME 0x3B
|
||||
#define BORDER_WAVEFORM_CONTROL 0x3C
|
||||
#define SET_RAM_X_ADDRESS_START_END_POSITION 0x44
|
||||
#define SET_RAM_Y_ADDRESS_START_END_POSITION 0x45
|
||||
#define SET_RAM_X_ADDRESS_COUNTER 0x4E
|
||||
#define SET_RAM_Y_ADDRESS_COUNTER 0x4F
|
||||
#define TERMINATE_FRAME_READ_WRITE 0xFF
|
||||
|
||||
extern const unsigned char lut_full_update[];
|
||||
extern const unsigned char lut_partial_update[];
|
||||
|
||||
class Epd : EpdIf {
|
||||
public:
|
||||
unsigned long width;
|
||||
unsigned long height;
|
||||
|
||||
Epd();
|
||||
~Epd();
|
||||
int Init(const unsigned char* lut);
|
||||
void SendCommand(unsigned char command);
|
||||
void SendData(unsigned char data);
|
||||
void WaitUntilIdle(void);
|
||||
void Reset(void);
|
||||
void SetFrameMemory(
|
||||
const unsigned char* image_buffer,
|
||||
int x,
|
||||
int y,
|
||||
int image_width,
|
||||
int image_height
|
||||
);
|
||||
void SetFrameMemory(const unsigned char* image_buffer);
|
||||
void ClearFrameMemory(unsigned char color);
|
||||
void DisplayFrame(void);
|
||||
void Sleep(void);
|
||||
|
||||
private:
|
||||
unsigned int reset_pin;
|
||||
unsigned int dc_pin;
|
||||
unsigned int cs_pin;
|
||||
unsigned int busy_pin;
|
||||
const unsigned char* lut;
|
||||
|
||||
void SetLut(const unsigned char* lut);
|
||||
void SetMemoryArea(int x_start, int y_start, int x_end, int y_end);
|
||||
void SetMemoryPointer(int x, int y);
|
||||
};
|
||||
|
||||
#endif /* EPD1IN54_H */
|
||||
|
||||
/* END OF FILE */
|
||||
146
Arduino/epd1in54/epd1in54.ino
Normal file
146
Arduino/epd1in54/epd1in54.ino
Normal file
|
|
@ -0,0 +1,146 @@
|
|||
/**
|
||||
* @filename : epd1in54-demo.ino
|
||||
* @brief : 1.54inch e-paper display demo
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare September 5 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <SPI.h>
|
||||
#include "epd1in54.h"
|
||||
#include "epdpaint.h"
|
||||
#include "imagedata.h"
|
||||
|
||||
#define COLORED 0
|
||||
#define UNCOLORED 1
|
||||
|
||||
/**
|
||||
* Due to RAM not enough in Arduino UNO, a frame buffer is not allowed.
|
||||
* In this case, a smaller image buffer is allocated and you have to
|
||||
* update a partial display several times.
|
||||
* 1 byte = 8 pixels, therefore you have to set 8*N pixels at a time.
|
||||
*/
|
||||
unsigned char image[1024];
|
||||
Paint paint(image, 0, 0); // width should be the multiple of 8
|
||||
Epd epd;
|
||||
unsigned long time_start_ms;
|
||||
unsigned long time_now_s;
|
||||
|
||||
void setup() {
|
||||
// put your setup code here, to run once:
|
||||
Serial.begin(9600);
|
||||
if (epd.Init(lut_full_update) != 0) {
|
||||
Serial.print("e-Paper init failed");
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* there are 2 memory areas embedded in the e-paper display
|
||||
* and once the display is refreshed, the memory area will be auto-toggled,
|
||||
* i.e. the next action of SetFrameMemory will set the other memory area
|
||||
* therefore you have to clear the frame memory twice.
|
||||
*/
|
||||
epd.ClearFrameMemory(0xFF); // bit set = white, bit reset = black
|
||||
epd.DisplayFrame();
|
||||
epd.ClearFrameMemory(0xFF); // bit set = white, bit reset = black
|
||||
epd.DisplayFrame();
|
||||
|
||||
paint.SetRotate(ROTATE_0);
|
||||
paint.SetWidth(200);
|
||||
paint.SetHeight(24);
|
||||
|
||||
/* For simplicity, the arguments are explicit numerical coordinates */
|
||||
paint.Clear(COLORED);
|
||||
paint.DrawStringAt(30, 4, "Hello world!", &Font16, UNCOLORED);
|
||||
epd.SetFrameMemory(paint.GetImage(), 0, 10, paint.GetWidth(), paint.GetHeight());
|
||||
|
||||
paint.Clear(UNCOLORED);
|
||||
paint.DrawStringAt(30, 4, "e-Paper Demo", &Font16, COLORED);
|
||||
epd.SetFrameMemory(paint.GetImage(), 0, 30, paint.GetWidth(), paint.GetHeight());
|
||||
|
||||
paint.SetWidth(64);
|
||||
paint.SetHeight(64);
|
||||
|
||||
paint.Clear(UNCOLORED);
|
||||
paint.DrawRectangle(0, 0, 40, 50, COLORED);
|
||||
paint.DrawLine(0, 0, 40, 50, COLORED);
|
||||
paint.DrawLine(40, 0, 0, 50, COLORED);
|
||||
epd.SetFrameMemory(paint.GetImage(), 16, 60, paint.GetWidth(), paint.GetHeight());
|
||||
|
||||
paint.Clear(UNCOLORED);
|
||||
paint.DrawCircle(32, 32, 30, COLORED);
|
||||
epd.SetFrameMemory(paint.GetImage(), 120, 60, paint.GetWidth(), paint.GetHeight());
|
||||
|
||||
paint.Clear(UNCOLORED);
|
||||
paint.DrawFilledRectangle(0, 0, 40, 50, COLORED);
|
||||
epd.SetFrameMemory(paint.GetImage(), 16, 130, paint.GetWidth(), paint.GetHeight());
|
||||
|
||||
paint.Clear(UNCOLORED);
|
||||
paint.DrawFilledCircle(32, 32, 30, COLORED);
|
||||
epd.SetFrameMemory(paint.GetImage(), 120, 130, paint.GetWidth(), paint.GetHeight());
|
||||
epd.DisplayFrame();
|
||||
|
||||
delay(2000);
|
||||
|
||||
|
||||
/*
|
||||
if (epd.Init(lut_partial_update) != 0) {
|
||||
Serial.print("e-Paper init failed");
|
||||
return;
|
||||
}
|
||||
*/
|
||||
/**
|
||||
* there are 2 memory areas embedded in the e-paper display
|
||||
* and once the display is refreshed, the memory area will be auto-toggled,
|
||||
* i.e. the next action of SetFrameMemory will set the other memory area
|
||||
* therefore you have to set the frame memory and refresh the display twice.
|
||||
*/
|
||||
epd.SetFrameMemory(IMAGE_DATA);
|
||||
epd.DisplayFrame();
|
||||
epd.SetFrameMemory(IMAGE_DATA);
|
||||
epd.DisplayFrame();
|
||||
|
||||
// time_start_ms = millis();
|
||||
epd.Sleep();
|
||||
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// put your main code here, to run repeatedly:
|
||||
/* time_now_s = (millis() - time_start_ms) / 1000;
|
||||
char time_string[] = {'0', '0', ':', '0', '0', '\0'};
|
||||
time_string[0] = time_now_s / 60 / 10 + '0';
|
||||
time_string[1] = time_now_s / 60 % 10 + '0';
|
||||
time_string[3] = time_now_s % 60 / 10 + '0';
|
||||
time_string[4] = time_now_s % 60 % 10 + '0';
|
||||
|
||||
paint.SetWidth(32);
|
||||
paint.SetHeight(96);
|
||||
paint.SetRotate(ROTATE_270);
|
||||
|
||||
paint.Clear(UNCOLORED);
|
||||
paint.DrawStringAt(0, 4, time_string, &Font24, COLORED);
|
||||
epd.SetFrameMemory(paint.GetImage(), 80, 72, paint.GetWidth(), paint.GetHeight());
|
||||
epd.DisplayFrame();
|
||||
|
||||
delay(500);*/
|
||||
}
|
||||
|
||||
64
Arduino/epd1in54/epdif.cpp
Normal file
64
Arduino/epd1in54/epdif.cpp
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
/**
|
||||
* @filename : epdif.cpp
|
||||
* @brief : Implements EPD interface functions
|
||||
* Users have to implement all the functions in epdif.cpp
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare August 10 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "epdif.h"
|
||||
#include <spi.h>
|
||||
|
||||
EpdIf::EpdIf() {
|
||||
};
|
||||
|
||||
EpdIf::~EpdIf() {
|
||||
};
|
||||
|
||||
void EpdIf::DigitalWrite(int pin, int value) {
|
||||
digitalWrite(pin, value);
|
||||
}
|
||||
|
||||
int EpdIf::DigitalRead(int pin) {
|
||||
return digitalRead(pin);
|
||||
}
|
||||
|
||||
void EpdIf::DelayMs(unsigned int delaytime) {
|
||||
delay(delaytime);
|
||||
}
|
||||
|
||||
void EpdIf::SpiTransfer(unsigned char data) {
|
||||
digitalWrite(CS_PIN, LOW);
|
||||
SPI.transfer(data);
|
||||
digitalWrite(CS_PIN, HIGH);
|
||||
}
|
||||
|
||||
int EpdIf::IfInit(void) {
|
||||
pinMode(CS_PIN, OUTPUT);
|
||||
pinMode(RST_PIN, OUTPUT);
|
||||
pinMode(DC_PIN, OUTPUT);
|
||||
pinMode(BUSY_PIN, INPUT);
|
||||
|
||||
SPI.begin();
|
||||
SPI.beginTransaction(SPISettings(2000000, MSBFIRST, SPI_MODE0));
|
||||
return 0;
|
||||
}
|
||||
51
Arduino/epd1in54/epdif.h
Normal file
51
Arduino/epd1in54/epdif.h
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
/**
|
||||
* @filename : epdif.h
|
||||
* @brief : Header file of epdif.cpp providing EPD interface functions
|
||||
* Users have to implement all the functions in epdif.cpp
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare August 10 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef EPDIF_H
|
||||
#define EPDIF_H
|
||||
|
||||
#include <arduino.h>
|
||||
|
||||
// Pin definition
|
||||
#define RST_PIN 8
|
||||
#define DC_PIN 9
|
||||
#define CS_PIN 10
|
||||
#define BUSY_PIN 7
|
||||
|
||||
class EpdIf {
|
||||
public:
|
||||
EpdIf(void);
|
||||
~EpdIf(void);
|
||||
|
||||
static int IfInit(void);
|
||||
static void DigitalWrite(int pin, int value);
|
||||
static int DigitalRead(int pin);
|
||||
static void DelayMs(unsigned int delaytime);
|
||||
static void SpiTransfer(unsigned char data);
|
||||
};
|
||||
|
||||
#endif
|
||||
342
Arduino/epd1in54/epdpaint.cpp
Normal file
342
Arduino/epd1in54/epdpaint.cpp
Normal file
|
|
@ -0,0 +1,342 @@
|
|||
/**
|
||||
* @filename : epdpaint.cpp
|
||||
* @brief : Paint tools
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare September 9 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <avr/pgmspace.h>
|
||||
#include "epdpaint.h"
|
||||
|
||||
Paint::Paint(unsigned char* image, int width, int height) {
|
||||
this->rotate = ROTATE_0;
|
||||
this->image = image;
|
||||
/* 1 byte = 8 pixels, so the width should be the multiple of 8 */
|
||||
this->width = width % 8 ? width + 8 - (width % 8) : width;
|
||||
this->height = height;
|
||||
}
|
||||
|
||||
Paint::~Paint() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: clear the image
|
||||
*/
|
||||
void Paint::Clear(int colored) {
|
||||
for (int x = 0; x < this->width; x++) {
|
||||
for (int y = 0; y < this->height; y++) {
|
||||
DrawAbsolutePixel(x, y, colored);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a pixel by absolute coordinates.
|
||||
* this function won't be affected by the rotate parameter.
|
||||
*/
|
||||
void Paint::DrawAbsolutePixel(int x, int y, int colored) {
|
||||
if (x < 0 || x >= this->width || y < 0 || y >= this->height) {
|
||||
return;
|
||||
}
|
||||
if (IF_INVERT_COLOR) {
|
||||
if (colored) {
|
||||
image[(x + y * this->width) / 8] |= 0x80 >> (x % 8);
|
||||
} else {
|
||||
image[(x + y * this->width) / 8] &= ~(0x80 >> (x % 8));
|
||||
}
|
||||
} else {
|
||||
if (colored) {
|
||||
image[(x + y * this->width) / 8] &= ~(0x80 >> (x % 8));
|
||||
} else {
|
||||
image[(x + y * this->width) / 8] |= 0x80 >> (x % 8);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: Getters and Setters
|
||||
*/
|
||||
unsigned char* Paint::GetImage(void) {
|
||||
return this->image;
|
||||
}
|
||||
|
||||
int Paint::GetWidth(void) {
|
||||
return this->width;
|
||||
}
|
||||
|
||||
void Paint::SetWidth(int width) {
|
||||
this->width = width % 8 ? width + 8 - (width % 8) : width;
|
||||
}
|
||||
|
||||
int Paint::GetHeight(void) {
|
||||
return this->height;
|
||||
}
|
||||
|
||||
void Paint::SetHeight(int height) {
|
||||
this->height = height;
|
||||
}
|
||||
|
||||
int Paint::GetRotate(void) {
|
||||
return this->rotate;
|
||||
}
|
||||
|
||||
void Paint::SetRotate(int rotate){
|
||||
this->rotate = rotate;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a pixel by the coordinates
|
||||
*/
|
||||
void Paint::DrawPixel(int x, int y, int colored) {
|
||||
int point_temp;
|
||||
if (this->rotate == ROTATE_0) {
|
||||
if(x < 0 || x >= this->width || y < 0 || y >= this->height) {
|
||||
return;
|
||||
}
|
||||
DrawAbsolutePixel(x, y, colored);
|
||||
} else if (this->rotate == ROTATE_90) {
|
||||
if(x < 0 || x >= this->height || y < 0 || y >= this->width) {
|
||||
return;
|
||||
}
|
||||
point_temp = x;
|
||||
x = this->width - y;
|
||||
y = point_temp;
|
||||
DrawAbsolutePixel(x, y, colored);
|
||||
} else if (this->rotate == ROTATE_180) {
|
||||
if(x < 0 || x >= this->width || y < 0 || y >= this->height) {
|
||||
return;
|
||||
}
|
||||
x = this->width - x;
|
||||
y = this->height - y;
|
||||
DrawAbsolutePixel(x, y, colored);
|
||||
} else if (this->rotate == ROTATE_270) {
|
||||
if(x < 0 || x >= this->height || y < 0 || y >= this->width) {
|
||||
return;
|
||||
}
|
||||
point_temp = x;
|
||||
x = y;
|
||||
y = this->height - point_temp;
|
||||
DrawAbsolutePixel(x, y, colored);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a charactor on the frame buffer but not refresh
|
||||
*/
|
||||
void Paint::DrawCharAt(int x, int y, char ascii_char, sFONT* font, int colored) {
|
||||
int i, j;
|
||||
unsigned int char_offset = (ascii_char - ' ') * font->Height * (font->Width / 8 + (font->Width % 8 ? 1 : 0));
|
||||
const unsigned char* ptr = &font->table[char_offset];
|
||||
|
||||
for (j = 0; j < font->Height; j++) {
|
||||
for (i = 0; i < font->Width; i++) {
|
||||
if (pgm_read_byte(ptr) & (0x80 >> (i % 8))) {
|
||||
DrawPixel(x + i, y + j, colored);
|
||||
}
|
||||
if (i % 8 == 7) {
|
||||
ptr++;
|
||||
}
|
||||
}
|
||||
if (font->Width % 8 != 0) {
|
||||
ptr++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this displays a string on the frame buffer but not refresh
|
||||
*/
|
||||
void Paint::DrawStringAt(int x, int y, const char* text, sFONT* font, int colored) {
|
||||
const char* p_text = text;
|
||||
unsigned int counter = 0;
|
||||
int refcolumn = x;
|
||||
|
||||
/* Send the string character by character on EPD */
|
||||
while (*p_text != 0) {
|
||||
/* Display one character on EPD */
|
||||
DrawCharAt(refcolumn, y, *p_text, font, colored);
|
||||
/* Decrement the column position by 16 */
|
||||
refcolumn += font->Width;
|
||||
/* Point on the next character */
|
||||
p_text++;
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a line on the frame buffer
|
||||
*/
|
||||
void Paint::DrawLine(int x0, int y0, int x1, int y1, int colored) {
|
||||
/* Bresenham algorithm */
|
||||
int dx = x1 - x0 >= 0 ? x1 - x0 : x0 - x1;
|
||||
int sx = x0 < x1 ? 1 : -1;
|
||||
int dy = y1 - y0 <= 0 ? y1 - y0 : y0 - y1;
|
||||
int sy = y0 < y1 ? 1 : -1;
|
||||
int err = dx + dy;
|
||||
|
||||
while((x0 != x1) && (y0 != y1)) {
|
||||
DrawPixel(x0, y0 , colored);
|
||||
if (2 * err >= dy) {
|
||||
err += dy;
|
||||
x0 += sx;
|
||||
}
|
||||
if (2 * err <= dx) {
|
||||
err += dx;
|
||||
y0 += sy;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a horizontal line on the frame buffer
|
||||
*/
|
||||
void Paint::DrawHorizontalLine(int x, int y, int line_width, int colored) {
|
||||
int i;
|
||||
for (i = x; i < x + line_width; i++) {
|
||||
DrawPixel(i, y, colored);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a vertical line on the frame buffer
|
||||
*/
|
||||
void Paint::DrawVerticalLine(int x, int y, int line_height, int colored) {
|
||||
int i;
|
||||
for (i = y; i < y + line_height; i++) {
|
||||
DrawPixel(x, i, colored);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a rectangle
|
||||
*/
|
||||
void Paint::DrawRectangle(int x0, int y0, int x1, int y1, int colored) {
|
||||
int min_x, min_y, max_x, max_y;
|
||||
min_x = x1 > x0 ? x0 : x1;
|
||||
max_x = x1 > x0 ? x1 : x0;
|
||||
min_y = y1 > y0 ? y0 : y1;
|
||||
max_y = y1 > y0 ? y1 : y0;
|
||||
|
||||
DrawHorizontalLine(min_x, min_y, max_x - min_x + 1, colored);
|
||||
DrawHorizontalLine(min_x, max_y, max_x - min_x + 1, colored);
|
||||
DrawVerticalLine(min_x, min_y, max_y - min_y + 1, colored);
|
||||
DrawVerticalLine(max_x, min_y, max_y - min_y + 1, colored);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a filled rectangle
|
||||
*/
|
||||
void Paint::DrawFilledRectangle(int x0, int y0, int x1, int y1, int colored) {
|
||||
int min_x, min_y, max_x, max_y;
|
||||
int i;
|
||||
min_x = x1 > x0 ? x0 : x1;
|
||||
max_x = x1 > x0 ? x1 : x0;
|
||||
min_y = y1 > y0 ? y0 : y1;
|
||||
max_y = y1 > y0 ? y1 : y0;
|
||||
|
||||
for (i = min_x; i <= max_x; i++) {
|
||||
DrawVerticalLine(i, min_y, max_y - min_y + 1, colored);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a circle
|
||||
*/
|
||||
void Paint::DrawCircle(int x, int y, int radius, int colored) {
|
||||
/* Bresenham algorithm */
|
||||
int x_pos = -radius;
|
||||
int y_pos = 0;
|
||||
int err = 2 - 2 * radius;
|
||||
int e2;
|
||||
|
||||
do {
|
||||
DrawPixel(x - x_pos, y + y_pos, colored);
|
||||
DrawPixel(x + x_pos, y + y_pos, colored);
|
||||
DrawPixel(x + x_pos, y - y_pos, colored);
|
||||
DrawPixel(x - x_pos, y - y_pos, colored);
|
||||
e2 = err;
|
||||
if (e2 <= y_pos) {
|
||||
err += ++y_pos * 2 + 1;
|
||||
if(-x_pos == y_pos && e2 <= x_pos) {
|
||||
e2 = 0;
|
||||
}
|
||||
}
|
||||
if (e2 > x_pos) {
|
||||
err += ++x_pos * 2 + 1;
|
||||
}
|
||||
} while (x_pos <= 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a filled circle
|
||||
*/
|
||||
void Paint::DrawFilledCircle(int x, int y, int radius, int colored) {
|
||||
/* Bresenham algorithm */
|
||||
int x_pos = -radius;
|
||||
int y_pos = 0;
|
||||
int err = 2 - 2 * radius;
|
||||
int e2;
|
||||
|
||||
do {
|
||||
DrawPixel(x - x_pos, y + y_pos, colored);
|
||||
DrawPixel(x + x_pos, y + y_pos, colored);
|
||||
DrawPixel(x + x_pos, y - y_pos, colored);
|
||||
DrawPixel(x - x_pos, y - y_pos, colored);
|
||||
DrawHorizontalLine(x + x_pos, y + y_pos, 2 * (-x_pos) + 1, colored);
|
||||
DrawHorizontalLine(x + x_pos, y - y_pos, 2 * (-x_pos) + 1, colored);
|
||||
e2 = err;
|
||||
if (e2 <= y_pos) {
|
||||
err += ++y_pos * 2 + 1;
|
||||
if(-x_pos == y_pos && e2 <= x_pos) {
|
||||
e2 = 0;
|
||||
}
|
||||
}
|
||||
if(e2 > x_pos) {
|
||||
err += ++x_pos * 2 + 1;
|
||||
}
|
||||
} while(x_pos <= 0);
|
||||
}
|
||||
|
||||
/* END OF FILE */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
75
Arduino/epd1in54/epdpaint.h
Normal file
75
Arduino/epd1in54/epdpaint.h
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
/**
|
||||
* @filename : epdpaint.h
|
||||
* @brief : Header file for epdpaint.cpp
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare July 28 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef EPDPAINT_H
|
||||
#define EPDPAINT_H
|
||||
|
||||
// Display orientation
|
||||
#define ROTATE_0 0
|
||||
#define ROTATE_90 1
|
||||
#define ROTATE_180 2
|
||||
#define ROTATE_270 3
|
||||
|
||||
// Color inverse. 1 or 0 = set or reset a bit if set a colored pixel
|
||||
#define IF_INVERT_COLOR 1
|
||||
|
||||
#include "fonts.h"
|
||||
|
||||
class Paint {
|
||||
public:
|
||||
Paint(unsigned char* image, int width, int height);
|
||||
~Paint();
|
||||
void Clear(int colored);
|
||||
int GetWidth(void);
|
||||
void SetWidth(int width);
|
||||
int GetHeight(void);
|
||||
void SetHeight(int height);
|
||||
int GetRotate(void);
|
||||
void SetRotate(int rotate);
|
||||
unsigned char* GetImage(void);
|
||||
void DrawAbsolutePixel(int x, int y, int colored);
|
||||
void DrawPixel(int x, int y, int colored);
|
||||
void DrawCharAt(int x, int y, char ascii_char, sFONT* font, int colored);
|
||||
void DrawStringAt(int x, int y, const char* text, sFONT* font, int colored);
|
||||
void DrawLine(int x0, int y0, int x1, int y1, int colored);
|
||||
void DrawHorizontalLine(int x, int y, int width, int colored);
|
||||
void DrawVerticalLine(int x, int y, int height, int colored);
|
||||
void DrawRectangle(int x0, int y0, int x1, int y1, int colored);
|
||||
void DrawFilledRectangle(int x0, int y0, int x1, int y1, int colored);
|
||||
void DrawCircle(int x, int y, int radius, int colored);
|
||||
void DrawFilledCircle(int x, int y, int radius, int colored);
|
||||
|
||||
private:
|
||||
unsigned char* image;
|
||||
int width;
|
||||
int height;
|
||||
int rotate;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
/* END OF FILE */
|
||||
|
||||
1385
Arduino/epd1in54/font12.c
Normal file
1385
Arduino/epd1in54/font12.c
Normal file
File diff suppressed because it is too large
Load diff
1765
Arduino/epd1in54/font16.c
Normal file
1765
Arduino/epd1in54/font16.c
Normal file
File diff suppressed because it is too large
Load diff
2143
Arduino/epd1in54/font20.c
Normal file
2143
Arduino/epd1in54/font20.c
Normal file
File diff suppressed because it is too large
Load diff
2521
Arduino/epd1in54/font24.c
Normal file
2521
Arduino/epd1in54/font24.c
Normal file
File diff suppressed because it is too large
Load diff
1005
Arduino/epd1in54/font8.c
Normal file
1005
Arduino/epd1in54/font8.c
Normal file
File diff suppressed because it is too large
Load diff
75
Arduino/epd1in54/fonts.h
Normal file
75
Arduino/epd1in54/fonts.h
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* @file fonts.h
|
||||
* @author MCD Application Team
|
||||
* @version V1.0.0
|
||||
* @date 18-February-2014
|
||||
* @brief Header for fonts.c file
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <h2><center>© COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of STMicroelectronics nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef __FONTS_H
|
||||
#define __FONTS_H
|
||||
|
||||
/* Max size of bitmap will based on a font24 (17x24) */
|
||||
#define MAX_HEIGHT_FONT 24
|
||||
#define MAX_WIDTH_FONT 17
|
||||
#define OFFSET_BITMAP 54
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include <stdint.h>
|
||||
|
||||
typedef struct _tFont
|
||||
{
|
||||
const uint8_t *table;
|
||||
uint16_t Width;
|
||||
uint16_t Height;
|
||||
|
||||
} sFONT;
|
||||
|
||||
extern sFONT Font24;
|
||||
extern sFONT Font20;
|
||||
extern sFONT Font16;
|
||||
extern sFONT Font12;
|
||||
extern sFONT Font8;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __FONTS_H */
|
||||
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
344
Arduino/epd1in54/imagedata.cpp
Normal file
344
Arduino/epd1in54/imagedata.cpp
Normal file
|
|
@ -0,0 +1,344 @@
|
|||
/**
|
||||
* @filename : imagedata.cpp
|
||||
* @brief : data file for epd demo
|
||||
*
|
||||
* Copyright (C) Waveshare September 5 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "imagedata.h"
|
||||
#include <avr/pgmspace.h>
|
||||
|
||||
const unsigned char IMAGE_DATA[] PROGMEM = {
|
||||
/* 0X00,0X01,0XC8,0X00,0XC8,0X00, */
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFE,0X01,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF1,0XF8,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0XFF,
|
||||
0X3F,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XF0,0X00,
|
||||
0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XF0,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XE3,0XFF,0X1F,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,
|
||||
0XE0,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE3,0XFF,0X9F,0XFF,0XFF,0XFF,0XFF,
|
||||
0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XE1,0XE3,0X00,0X00,0X00,0X00,0X01,
|
||||
0XFF,0XFF,0XE7,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF1,0XC3,0XF3,0X0F,0XFF,0XFF,0XFF,0XFC,0XFF,0XFF,0XE3,0XFF,0X8F,0XFF,0XFF,
|
||||
0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XC3,0X3B,0X0F,0XFF,0XFF,
|
||||
0XFF,0XFE,0XFF,0XFF,0XE3,0XFF,0X1F,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF1,0XC3,0X0F,0X0F,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XE1,0XFE,0X1F,
|
||||
0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XC3,0X0F,0X0F,
|
||||
0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XF0,0XFC,0X1F,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XE3,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XC3,0X87,0X0F,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XF0,
|
||||
0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XE0,0X7F,0XFF,0XFF,0XFF,0XFF,0XF1,0XC1,
|
||||
0X03,0X0F,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XF8,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0X8F,
|
||||
0XFF,0XE0,0X0F,0XFF,0XFF,0XFF,0XFF,0XF1,0XE0,0X00,0X1F,0XFF,0XFF,0XFF,0XFE,0XFF,
|
||||
0XFF,0XFE,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XE0,0X00,0X1F,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0X8F,0XFF,0XFF,0X80,0X7F,0XFF,0XFF,0XFF,0XF1,0XF0,0X00,0X3F,0XFF,0XFF,0XFF,
|
||||
0X7E,0XFF,0XFF,0XFB,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XF0,0X1F,0XFF,
|
||||
0XFF,0XFF,0XF1,0XF8,0X00,0X7F,0XFF,0XFF,0XFC,0X3E,0XFF,0XFF,0XE0,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0X00,0X1F,0XFF,0XFF,0XFF,0XF1,0XFE,0X00,0XFF,0XFF,
|
||||
0XFF,0XF0,0X3E,0XFF,0XFF,0XC6,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XF8,0X07,
|
||||
0X8F,0XFF,0XFF,0XFF,0XF1,0XFE,0X87,0XFF,0XFF,0XFF,0XE0,0XCE,0XFF,0XFF,0XCE,0X7F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XE0,0X1F,0X8F,0XC0,0X07,0XFF,0XF1,0XFE,0XFF,
|
||||
0XFF,0XFF,0XFF,0X81,0X86,0XFF,0XFF,0XCE,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,
|
||||
0XE0,0XFF,0XCF,0X80,0X07,0XFF,0XF1,0XFE,0XFF,0XFF,0XFF,0XFF,0X02,0X06,0XFF,0XFF,
|
||||
0XC6,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XE3,0XFF,0XEF,0X00,0X07,0XFF,0XF1,
|
||||
0XFE,0XFF,0XFF,0XFF,0XFE,0X0C,0X02,0XFF,0XFF,0XE0,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X8F,0XFF,0XFF,0XFF,0XFF,0X1F,0XFF,0XFF,0XF1,0XFE,0XFF,0XFF,0XFF,0XFE,0X18,0X02,
|
||||
0XFF,0XFF,0XFB,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0X1F,0XFF,
|
||||
0XFF,0XF1,0XFE,0XFF,0XFF,0XFF,0XFE,0X20,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0X8F,0XFF,0XFE,0X01,0XFF,0X1F,0XFF,0XFF,0XF1,0XFE,0XFF,0XFF,0XFF,0XFE,
|
||||
0XC0,0X02,0XFF,0XFF,0XFF,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XF0,0X01,0XFF,
|
||||
0X9F,0XFF,0XFF,0XF1,0XFE,0XFF,0XFF,0XFF,0XFF,0X00,0X02,0XFF,0XFF,0XF8,0X00,0X7F,
|
||||
0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XE0,0X01,0XE0,0X80,0X0F,0XFF,0XF1,0XFE,0XFF,0XFF,
|
||||
0XFF,0XFF,0X00,0X02,0XFF,0XFF,0XF0,0X00,0X3F,0XFF,0XE7,0XFF,0XFF,0X8F,0XFF,0XE0,
|
||||
0X03,0XE0,0X00,0X07,0XFF,0XF1,0XFE,0XFF,0XFF,0XFF,0XFF,0X80,0X06,0XFF,0XFF,0XE0,
|
||||
0XCC,0X1F,0XFF,0XE0,0XFF,0XFF,0X8F,0XFF,0XE2,0X71,0XE0,0X00,0X07,0XFF,0XF1,0XFE,
|
||||
0XFF,0XFF,0XFF,0XFF,0XC0,0X0E,0XFF,0XFF,0XE3,0XC7,0X1F,0XFF,0XE0,0X3F,0XFF,0X8F,
|
||||
0XFF,0XE7,0X39,0XE0,0X00,0X0F,0XFF,0XF1,0XFE,0XFF,0XFF,0XFF,0XFF,0XC0,0X0E,0XFF,
|
||||
0XFF,0XE7,0XE7,0X8F,0XFF,0XF0,0X07,0XFF,0X8F,0XFF,0XE7,0X38,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XFE,0XFF,0XFF,0XFF,0XFF,0X00,0X1E,0XFF,0XFF,0XE7,0XE7,0X8F,0XFF,0XFE,0X01,
|
||||
0XFF,0X8F,0XFF,0XE3,0X10,0XFF,0XFF,0XFF,0XFF,0XF1,0XFE,0XFF,0XFF,0XFF,0XFC,0X00,
|
||||
0X3E,0XFF,0XFF,0XE3,0XC7,0X8F,0XFF,0XFF,0XC0,0X7F,0X8F,0XFF,0XE3,0X01,0XFF,0X1F,
|
||||
0XC7,0XFF,0XF1,0XFE,0XFF,0X83,0XFF,0XF0,0X00,0X7E,0XFF,0XFF,0XE0,0X07,0X1F,0XFF,
|
||||
0XFF,0XF8,0X3F,0X8F,0XFF,0XF3,0X81,0XFF,0X1F,0XC7,0XFF,0XF1,0XFE,0XFC,0X01,0XFF,
|
||||
0XE0,0X00,0XFE,0XFF,0XFF,0XF0,0X0F,0X1F,0XFF,0XFF,0XC0,0X1F,0X8F,0XFF,0XFF,0XC7,
|
||||
0XFF,0X1F,0XC7,0XFF,0XF1,0XFE,0XF0,0X07,0XFF,0X80,0X01,0XFE,0XFF,0XFF,0XF8,0X1F,
|
||||
0XBF,0XFF,0XFE,0X00,0X0F,0X8F,0XFF,0XFF,0XFF,0XF8,0X00,0X07,0XFF,0XF1,0XFE,0XC0,
|
||||
0X18,0XFE,0X00,0X03,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X07,0X87,0X8F,0XFF,
|
||||
0XFF,0XFF,0XF8,0X00,0X0F,0XFF,0XF1,0XFE,0XC0,0XE0,0XF8,0X00,0X0F,0XFE,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XE0,0X1F,0XC7,0X8F,0XFF,0XFF,0XFF,0XF8,0X00,0X0F,0XFF,0XF1,
|
||||
0XFE,0XC7,0X00,0XE0,0X00,0X1F,0XFE,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XE0,0XFF,0XC7,
|
||||
0X8F,0XFE,0X00,0X01,0XFF,0X1E,0XFF,0XFF,0XF1,0XFE,0XDC,0X00,0XC0,0X00,0X3F,0XFE,
|
||||
0XFF,0XFF,0XF8,0X3F,0X1F,0XFF,0XE3,0XFF,0XC7,0X8F,0XFE,0X00,0X01,0XFF,0X1F,0XFF,
|
||||
0XFF,0XF1,0XFE,0XE0,0X00,0X00,0X00,0XFF,0XFE,0XFF,0XFF,0XF0,0X0F,0X1F,0XFF,0XFF,
|
||||
0XFF,0XC7,0X8F,0XFE,0X00,0X01,0XFF,0XFF,0XFF,0XFF,0XF1,0XFE,0XC0,0X00,0X00,0X03,
|
||||
0XFF,0XFE,0XFF,0XFF,0XE0,0X03,0X1F,0XFF,0XFF,0XFF,0XFF,0X8F,0XFE,0X03,0XFF,0XF8,
|
||||
0X7F,0XFF,0XFF,0XF1,0XFE,0XE0,0X00,0X00,0X07,0XFF,0XFE,0XFF,0XFF,0XE3,0XC1,0X9F,
|
||||
0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XC0,0X7F,0XF8,0X1F,0XFF,0XFF,0XF1,0XFE,0XE0,0X00,
|
||||
0X00,0X1F,0XFF,0XFE,0XFF,0XFF,0XE7,0XE0,0X9F,0XFF,0XF8,0X00,0XFF,0X8F,0XFF,0XF8,
|
||||
0X1F,0XF8,0X07,0XFF,0XFF,0XF1,0XFE,0XF0,0X00,0X00,0XFF,0XFF,0XFE,0XFF,0XFF,0XE7,
|
||||
0XF8,0X1F,0XFF,0XF0,0X00,0XFF,0X8F,0XFF,0XFE,0X03,0XF8,0X01,0XFF,0XFF,0XF1,0XFE,
|
||||
0XF8,0X00,0X03,0XFF,0XFF,0XFE,0XFF,0XFF,0XE7,0XFC,0X1F,0XFF,0XE0,0X00,0XFF,0X8F,
|
||||
0XFF,0XFF,0X83,0XF8,0XC0,0X7F,0XFF,0XF1,0XFE,0XFC,0X00,0X3F,0XFF,0XFF,0XFE,0XFF,
|
||||
0XFF,0XE3,0XFE,0X1F,0XFF,0XE0,0X00,0XFF,0X8F,0XFF,0XFC,0X07,0XF8,0XF0,0X1F,0XFF,
|
||||
0XF1,0XFE,0XFF,0XB7,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XF1,0XFF,0X1F,0XFF,0XE3,0X31,
|
||||
0XFF,0X8F,0XFF,0XE0,0X3F,0XF8,0XFC,0X07,0XFF,0XF1,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFE,0XFF,0XFF,0XF3,0XFF,0X9F,0XFF,0XE3,0X38,0XFF,0X8F,0XFF,0X00,0XFF,0XF8,0XFF,
|
||||
0X03,0XFF,0XF1,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XE3,0X38,0XFF,0X8F,0XFE,0X07,0XFF,0XF8,0XFF,0XC3,0XFF,0XF1,0XFE,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE3,0X18,0XFF,0X8F,0XFE,0X00,0X01,
|
||||
0XF8,0XFF,0XF3,0XFF,0XF1,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XDF,
|
||||
0XFF,0XFF,0XE3,0X00,0XFF,0X8F,0XFE,0X00,0X01,0XF8,0XFF,0XFF,0XFF,0XF1,0XFE,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XE3,0X80,0XFF,0X8F,0XFE,
|
||||
0X00,0X01,0XF8,0XFF,0XFF,0XFF,0XF1,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,
|
||||
0XFF,0X87,0XFF,0XFF,0XF1,0X81,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,
|
||||
0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XC3,0XFF,0XFF,0XFF,0XC3,0XFF,
|
||||
0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,
|
||||
0XFF,0XFF,0XFF,0XE3,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF1,0XFE,0X7F,0XFF,0XFF,0XFF,0XFF,0XFC,0XFF,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0XFF,0XFF,0XFF,0XE3,0XFF,0XFC,0X00,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE3,0XFF,
|
||||
0XFC,0X00,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC3,0XFF,0XFC,0X00,0X00,0XFF,0X8F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X87,0XFF,0XFC,0X00,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XE3,0XF1,0XFF,0X8F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0X1F,0XFF,0XFF,0XE3,0XF9,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X1F,0XFF,0XFF,0XE3,0XF8,
|
||||
0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XE3,0XF8,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X3F,0XFF,0XFF,
|
||||
0XE1,0XF0,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X1F,0XFF,0XFF,0XF0,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X1F,
|
||||
0XFF,0XFF,0XF0,0X01,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X0F,0XFF,0XFF,0XF8,0X01,0XFF,0X8F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0X87,0XFF,0XFF,0XFE,0X07,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XCF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,
|
||||
0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0XFF,0XFF,0XF0,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X70,0X3F,
|
||||
0XFF,0XE0,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFA,0XFF,0XFF,0XFF,0XFF,0XF0,0X20,0X1F,0XFF,0XE0,0X00,0XFF,0X8F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XC0,0X1F,0XFF,0XFF,0XFF,0XE0,
|
||||
0X02,0X1F,0XFF,0XE3,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,
|
||||
0XFF,0XFF,0XFF,0X00,0X0F,0XFF,0XFF,0XFF,0XE3,0X87,0X1F,0XFF,0XE3,0XFF,0XFF,0X8F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFE,0X00,0X07,0XFF,0XFF,
|
||||
0XFF,0XE7,0X8F,0X8F,0XFF,0XE3,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XFF,0XFF,0XFF,0XFE,0X00,0X02,0X7F,0XFF,0XFF,0XE7,0XCF,0X8F,0XFF,0XF0,0XFF,
|
||||
0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFC,0X00,0X00,
|
||||
0X7F,0XFF,0XFF,0XE7,0XCF,0X9F,0XFF,0XE0,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0XFF,0XFF,0XFF,0XE3,0XFF,0X1F,0XFF,
|
||||
0XE0,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XF8,
|
||||
0X30,0X00,0XFF,0XFF,0XFF,0XF3,0XFE,0X1F,0XFF,0XE0,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XF8,0X30,0X00,0XFF,0XFF,0XFF,0XF7,0XFF,
|
||||
0X3F,0XFF,0XE0,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,
|
||||
0XFF,0XF0,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,
|
||||
0XFF,0XFF,0XFF,0X90,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0X1F,0XFF,0XFF,0XFF,0XFF,
|
||||
0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0X10,0X00,0X00,0XFF,
|
||||
0XFF,0XFF,0XF8,0X1F,0X1F,0XFF,0XE0,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF1,0XFF,0XFF,0XFC,0X10,0X00,0X00,0XFF,0XFF,0XFF,0XF0,0X0F,0X1F,0XFF,0XE0,
|
||||
0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XF8,0X18,0X30,
|
||||
0X00,0XFF,0XFF,0XFF,0XE0,0X03,0X1F,0XFF,0XE0,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XF8,0X08,0X38,0X00,0XFF,0XFF,0XFF,0XE3,0XC1,0X9F,
|
||||
0XFF,0XE0,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XF0,
|
||||
0X08,0X30,0X01,0XFF,0XFF,0XFF,0XE7,0XF0,0X9F,0XFF,0XFF,0XE1,0XFF,0X8F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XE0,0X08,0X00,0X01,0XFF,0XFF,0XFF,0XE7,
|
||||
0XF8,0X1F,0XFF,0XFF,0XF9,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,
|
||||
0XFF,0XE0,0XE4,0X00,0X01,0XFF,0XFF,0XFF,0XE7,0XFC,0X1F,0XFF,0XFF,0XF8,0XFF,0X8F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XE0,0XE2,0X00,0X03,0XFF,0XFF,
|
||||
0XFF,0XE3,0XFE,0X1F,0XFF,0XFF,0XF8,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XFF,0XFF,0XC0,0XE2,0X00,0X07,0XFF,0XFF,0XFF,0XF1,0XFF,0X1F,0XFF,0XE0,0X00,
|
||||
0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XC0,0X41,0X00,0X0F,
|
||||
0XFF,0XFF,0XFF,0XF3,0XFF,0X9F,0XFF,0XE0,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XF1,0XFF,0XFF,0XC0,0X00,0XC0,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XE0,0X01,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XC0,0X00,
|
||||
0X30,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X03,0XFF,0X8F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XC0,0X00,0X07,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,
|
||||
0XC0,0X00,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XC0,0X00,0X00,0X7F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,
|
||||
0XFF,0XFF,0XC0,0X40,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XBF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XC0,0XE0,0X00,0X7F,0XFF,
|
||||
0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,0X87,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF1,0XFF,0XFF,0XE0,0XE0,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0X1E,
|
||||
0X03,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XE0,0XE0,0X00,
|
||||
0X7F,0XFF,0XFF,0XFE,0XFF,0XBF,0XCF,0XFE,0X3E,0X01,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XE0,0X00,0X00,0X3F,0XFF,0XFF,0XFE,0X3F,0XFF,0X8F,
|
||||
0XFE,0X3C,0X01,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XF0,
|
||||
0X00,0X00,0X3F,0XFF,0XFF,0XFF,0X3C,0X0F,0X9F,0XFE,0X3C,0X30,0XFF,0X8F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XF8,0X00,0X01,0X1F,0XFF,0XFF,0XFF,0XF0,
|
||||
0X03,0XFF,0XFE,0X3C,0X78,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,
|
||||
0XFF,0XF8,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0XFF,0XFE,0X38,0X78,0XFF,0X8F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFC,0X00,0X07,0XFF,0XFF,0XFF,
|
||||
0XFF,0XC0,0X00,0XFF,0XFE,0X18,0X78,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XFF,0XFF,0XFF,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X7F,0XFE,0X00,0XF8,
|
||||
0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0X80,0X3F,0XFF,
|
||||
0XFF,0XFF,0XFF,0X80,0X00,0X3F,0XFF,0X00,0XF8,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X3F,0XFF,
|
||||
0X01,0XF0,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X3F,0XFF,0XC3,0XF1,0XFF,0X8F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0X00,0X00,
|
||||
0X31,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0X00,0X00,0X31,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X80,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,
|
||||
0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0X80,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X7F,0XFF,0XFF,
|
||||
0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X01,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X78,0X03,0XDF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X3F,
|
||||
0X1F,0X8F,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X7F,0XFF,0XCF,0XFF,0XFF,0XFF,0XFF,0X8F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFE,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0X00,0X00,
|
||||
0X00,0X01,0X7F,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFD,0X80,0X00,0X00,0X03,0X1F,0XFF,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF8,
|
||||
0X80,0X00,0X00,0X02,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X40,0X00,0X00,0X04,0X0F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,
|
||||
0XFF,0XF0,0X60,0X00,0X00,0X0C,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X20,0X00,0X00,0X08,0X07,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF1,0XFF,0XF0,0X30,0X00,0X00,0X10,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X10,0X00,0X00,
|
||||
0X30,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X18,0X00,0X00,0X20,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X08,
|
||||
0X00,0X00,0X60,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X04,0X00,0X00,0X40,0X07,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,
|
||||
0XF0,0X06,0X00,0X00,0X80,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X02,0X00,0X01,0X80,0X07,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XFF,0XF0,0X03,0X00,0X01,0X00,0X07,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X00,
|
||||
0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X01,0X00,0X02,0X00,
|
||||
0X07,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XF1,0XFF,0XF0,0X01,0X80,0X06,0X00,0X07,0XFF,0XFF,0XFF,0XFC,0X00,0X00,
|
||||
0X00,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X00,0X80,
|
||||
0X04,0X00,0X07,0XFF,0XFF,0XFF,0XF0,0X00,0X38,0X00,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X00,0X40,0X08,0X00,0X07,0XFF,0XFF,0XFF,0XE0,
|
||||
0X00,0XFE,0X00,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,
|
||||
0X00,0X40,0X08,0X00,0X07,0XFF,0XFF,0XFF,0XC0,0X03,0XFF,0X80,0X00,0XFF,0X8F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X00,0X20,0X10,0X00,0X07,0XFF,0XFF,
|
||||
0XFF,0X80,0X0F,0XFF,0XF8,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,
|
||||
0XFF,0XF0,0X00,0X30,0X30,0X00,0X07,0XFF,0XFF,0XFF,0X00,0X3F,0XFF,0XFC,0X00,0XFF,
|
||||
0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X00,0X10,0X20,0X00,0X07,
|
||||
0XFF,0XFF,0XFE,0X00,0XFF,0XE7,0XFE,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF1,0XFF,0XF0,0X00,0X18,0X40,0X00,0X07,0XFF,0XFF,0XFC,0X01,0XFF,0X81,0XFF,
|
||||
0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X00,0X08,0XC0,
|
||||
0X00,0X07,0XFF,0XFF,0XFC,0X01,0XFF,0X00,0X7F,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X00,0X04,0X80,0X00,0X07,0XFF,0XFF,0XF8,0X01,0XFF,
|
||||
0XC0,0X7F,0X80,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X00,
|
||||
0X05,0X00,0X00,0X07,0XFF,0XFF,0XF8,0X00,0XFF,0XF8,0X00,0X00,0XFF,0X8F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X00,0X03,0X00,0X00,0X07,0XFF,0XFF,0XF0,
|
||||
0X00,0X1F,0XFE,0X00,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,
|
||||
0XF0,0X00,0X03,0X00,0X00,0X07,0XFF,0XFF,0XF0,0X00,0X07,0XFF,0X80,0X00,0XFF,0X8F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X00,0X01,0X00,0X00,0X07,0XFF,
|
||||
0XFF,0XF1,0XFF,0X81,0XFF,0X80,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XFF,0XF0,0X00,0X01,0X80,0X00,0X07,0XFF,0XFF,0XE0,0XFF,0X00,0X7F,0X80,0X00,
|
||||
0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X47,0X80,0X80,0X00,
|
||||
0X07,0XFF,0XFF,0XE0,0X7F,0XC1,0X3F,0X80,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XF1,0XFF,0XF0,0X4F,0XC0,0X40,0X00,0X07,0XFF,0XFF,0XE0,0X3F,0XF9,0X4F,
|
||||
0X00,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X4C,0X40,
|
||||
0X40,0X00,0X07,0XFF,0XFF,0XE0,0X1F,0XFE,0X78,0X00,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X64,0XC0,0X40,0X00,0X07,0XFF,0XFF,0XE0,0X0F,
|
||||
0XFF,0X80,0X00,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,
|
||||
0X7F,0XC0,0X40,0X00,0X07,0XFF,0XFF,0XE0,0X05,0XFF,0XF0,0X00,0X00,0XFF,0X8F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X1F,0X00,0XC0,0X00,0X07,0XFF,0XFF,
|
||||
0XE0,0X00,0X3F,0XFC,0X00,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,
|
||||
0XFF,0XF0,0X00,0X00,0X80,0X00,0X07,0XFF,0XFF,0XE0,0X00,0X0F,0XFF,0X00,0X00,0XFF,
|
||||
0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X00,0X01,0X00,0X00,0X07,
|
||||
0XFF,0XFF,0XE0,0X00,0X03,0XFF,0X80,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF1,0XFF,0XF0,0X00,0X01,0X00,0X00,0X07,0XFF,0XFF,0XE0,0X00,0X07,0XFF,0X80,
|
||||
0X01,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X00,0X02,0X00,
|
||||
0X00,0X07,0XFF,0XFF,0XE0,0X00,0X3F,0XFF,0X00,0X01,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X00,0X06,0X00,0X00,0X07,0XFF,0XFF,0XE0,0X00,0XFF,
|
||||
0XFC,0X00,0X01,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X00,
|
||||
0X05,0X00,0X00,0X07,0XFF,0XFF,0XE0,0X01,0XFF,0XE0,0X00,0X01,0XFF,0X8F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X00,0X0D,0X80,0X00,0X07,0XFF,0XFF,0XE0,
|
||||
0X01,0XFF,0X00,0X00,0X03,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,
|
||||
0XF0,0X00,0X08,0X80,0X00,0X07,0XFF,0XFF,0XE0,0X01,0XFF,0X80,0X00,0X03,0XFF,0X8F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X00,0X10,0X40,0X00,0X07,0XFF,
|
||||
0XFF,0XE0,0X00,0XFF,0XF0,0X00,0X03,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XFF,0XF0,0X00,0X10,0X40,0X00,0X07,0XFF,0XFF,0XE0,0X00,0X1F,0XFE,0X00,0X07,
|
||||
0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X00,0X20,0X20,0X00,
|
||||
0X07,0XFF,0XFF,0XE0,0X00,0X03,0XFF,0X80,0X07,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XF1,0XFF,0XF0,0X00,0X60,0X30,0X00,0X07,0XFF,0XFF,0XE0,0X00,0X07,0XFF,
|
||||
0X80,0X0F,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X00,0X40,
|
||||
0X10,0X00,0X07,0XFF,0XFF,0XE0,0X00,0X3F,0XFF,0X80,0X1F,0XFF,0X8F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X00,0XC0,0X08,0X00,0X07,0XFF,0XFF,0XE0,0X01,
|
||||
0XFF,0XFF,0X00,0X1F,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,
|
||||
0X00,0X80,0X0C,0X00,0X07,0XFF,0XFF,0XE0,0X01,0XFF,0XF8,0X00,0X3F,0XFF,0X8F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X01,0X80,0X04,0X00,0X07,0XFF,0XFF,
|
||||
0XE0,0X01,0XFF,0XE0,0X00,0X7F,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,
|
||||
0XFF,0XF0,0X01,0X00,0X02,0X00,0X07,0XFF,0XFF,0XE0,0X01,0XFE,0X00,0X00,0XFF,0XFF,
|
||||
0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X02,0X00,0X03,0X00,0X07,
|
||||
0XFF,0XFF,0XE0,0X01,0XF0,0X00,0X03,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF1,0XFF,0XF0,0X06,0X00,0X01,0X00,0X07,0XFF,0XFF,0XE0,0X01,0X80,0X00,0X07,
|
||||
0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X04,0X00,0X01,
|
||||
0X80,0X07,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X1F,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X0C,0X00,0X00,0X80,0X07,0XFF,0XFF,0XE0,0X00,0X00,
|
||||
0X00,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X08,
|
||||
0X00,0X00,0X40,0X07,0XFF,0XFF,0XE0,0X00,0X00,0X0F,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X18,0X00,0X00,0X60,0X07,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,
|
||||
0XF0,0X10,0X00,0X00,0X20,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X20,0X00,0X00,0X10,0X07,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XFF,0XF0,0X60,0X00,0X00,0X18,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X40,0X00,0X00,0X08,
|
||||
0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XF1,0XFF,0XF8,0XC0,0X00,0X00,0X04,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF8,0X80,0X00,
|
||||
0X00,0X04,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0X00,0X00,0X00,0X02,0X3F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
};
|
||||
30
Arduino/epd1in54/imagedata.h
Normal file
30
Arduino/epd1in54/imagedata.h
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
/**
|
||||
* @filename : imagedata.h
|
||||
* @brief : head file for imagedata.cpp
|
||||
*
|
||||
* Copyright (C) Waveshare September 5 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
extern const unsigned char IMAGE_DATA[];
|
||||
|
||||
/* FILE END */
|
||||
|
||||
|
||||
251
Arduino/epd1in54_V2/epd1in54_V2.cpp
Normal file
251
Arduino/epd1in54_V2/epd1in54_V2.cpp
Normal file
|
|
@ -0,0 +1,251 @@
|
|||
/*****************************************************************************
|
||||
* | File : epd1in54_V2.cpp
|
||||
* | Author : Waveshare team
|
||||
* | Function : 1.54inch e-paper V2
|
||||
* | Info :
|
||||
*----------------
|
||||
* | This version: V1.0
|
||||
* | Date : 2019-06-24
|
||||
* | Info :
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documnetation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
#
|
||||
******************************************************************************/
|
||||
#include <stdlib.h>
|
||||
#include "epd1in54_V2.h"
|
||||
|
||||
Epd::~Epd()
|
||||
{
|
||||
};
|
||||
|
||||
Epd::Epd()
|
||||
{
|
||||
reset_pin = RST_PIN;
|
||||
dc_pin = DC_PIN;
|
||||
cs_pin = CS_PIN;
|
||||
busy_pin = BUSY_PIN;
|
||||
width = EPD_WIDTH;
|
||||
height = EPD_HEIGHT;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief: basic function for sending commands
|
||||
*/
|
||||
void Epd::SendCommand(unsigned char command)
|
||||
{
|
||||
DigitalWrite(dc_pin, LOW);
|
||||
SpiTransfer(command);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: basic function for sending data
|
||||
*/
|
||||
void Epd::SendData(unsigned char data)
|
||||
{
|
||||
DigitalWrite(dc_pin, HIGH);
|
||||
SpiTransfer(data);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: Wait until the busy_pin goes HIGH
|
||||
*/
|
||||
void Epd::WaitUntilIdle(void)
|
||||
{
|
||||
while(DigitalRead(busy_pin) == 1) { //LOW: idle, HIGH: busy
|
||||
DelayMs(100);
|
||||
}
|
||||
DelayMs(200);
|
||||
}
|
||||
|
||||
int Epd::Init(void)
|
||||
{
|
||||
/* this calls the peripheral hardware interface, see epdif */
|
||||
if (IfInit() != 0) {
|
||||
return -1;
|
||||
}
|
||||
/* EPD hardware init start */
|
||||
Reset();
|
||||
|
||||
WaitUntilIdle();
|
||||
SendCommand(0x12); //SWRESET
|
||||
WaitUntilIdle();
|
||||
|
||||
SendCommand(0x01); //Driver output control
|
||||
SendData(0xC7);
|
||||
SendData(0x00);
|
||||
SendData(0x01);
|
||||
|
||||
SendCommand(0x11); //data entry mode
|
||||
SendData(0x01);
|
||||
|
||||
SendCommand(0x44); //set Ram-X address start/end position
|
||||
SendData(0x00);
|
||||
SendData(0x18); //0x0C-->(18+1)*8=200
|
||||
|
||||
SendCommand(0x45); //set Ram-Y address start/end position
|
||||
SendData(0xC7); //0xC7-->(199+1)=200
|
||||
SendData(0x00);
|
||||
SendData(0x00);
|
||||
SendData(0x00);
|
||||
|
||||
SendCommand(0x3C); //BorderWavefrom
|
||||
SendData(0x01);
|
||||
|
||||
SendCommand(0x18);
|
||||
SendData(0x80);
|
||||
|
||||
SendCommand(0x22); // //Load Temperature and waveform setting.
|
||||
SendData(0XB1);
|
||||
SendCommand(0x20);
|
||||
|
||||
SendCommand(0x4E); // set RAM x address count to 0;
|
||||
SendData(0x00);
|
||||
SendCommand(0x4F); // set RAM y address count to 0X199;
|
||||
SendData(0xC7);
|
||||
SendData(0x00);
|
||||
WaitUntilIdle();
|
||||
/* EPD hardware init end */
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: module reset.
|
||||
* often used to awaken the module in deep sleep,
|
||||
* see Epd::Sleep();
|
||||
*/
|
||||
void Epd::Reset(void)
|
||||
{
|
||||
DigitalWrite(reset_pin, HIGH);
|
||||
DelayMs(200);
|
||||
DigitalWrite(reset_pin, LOW); //module reset
|
||||
DelayMs(10);
|
||||
DigitalWrite(reset_pin, HIGH);
|
||||
DelayMs(200);
|
||||
}
|
||||
|
||||
void Epd::Clear(void)
|
||||
{
|
||||
int w, h;
|
||||
w = (EPD_WIDTH % 8 == 0)? (EPD_WIDTH / 8 ): (EPD_WIDTH / 8 + 1);
|
||||
h = EPD_HEIGHT;
|
||||
SendCommand(0x24);
|
||||
for (int j = 0; j < h; j++) {
|
||||
for (int i = 0; i < w; i++) {
|
||||
SendData(0xff);
|
||||
}
|
||||
}
|
||||
|
||||
//DISPLAY REFRESH
|
||||
SendCommand(0x22);
|
||||
SendData(0xF7);
|
||||
SendCommand(0x20);
|
||||
WaitUntilIdle();
|
||||
}
|
||||
|
||||
void Epd::Display(const unsigned char* frame_buffer)
|
||||
{
|
||||
int w = (EPD_WIDTH % 8 == 0)? (EPD_WIDTH / 8 ): (EPD_WIDTH / 8 + 1);
|
||||
int h = EPD_HEIGHT;
|
||||
|
||||
if (frame_buffer != NULL) {
|
||||
SendCommand(0x24);
|
||||
for (int j = 0; j < h; j++) {
|
||||
for (int i = 0; i < w; i++) {
|
||||
SendData(pgm_read_byte(&frame_buffer[i + j * w]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//DISPLAY REFRESH
|
||||
SendCommand(0x22);
|
||||
SendData(0xF7);
|
||||
SendCommand(0x20);
|
||||
WaitUntilIdle();
|
||||
}
|
||||
|
||||
void Epd::DisplayPartBaseImage(const unsigned char* frame_buffer)
|
||||
{
|
||||
int w = (EPD_WIDTH % 8 == 0)? (EPD_WIDTH / 8 ): (EPD_WIDTH / 8 + 1);
|
||||
int h = EPD_HEIGHT;
|
||||
|
||||
if (frame_buffer != NULL) {
|
||||
SendCommand(0x24);
|
||||
for (int j = 0; j < h; j++) {
|
||||
for (int i = 0; i < w; i++) {
|
||||
SendData(frame_buffer[i + j * w]);
|
||||
}
|
||||
}
|
||||
|
||||
SendCommand(0x26);
|
||||
for (int j = 0; j < h; j++) {
|
||||
for (int i = 0; i < w; i++) {
|
||||
SendData(frame_buffer[i + j * w]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//DISPLAY REFRESH
|
||||
SendCommand(0x22);
|
||||
SendData(0xFF);
|
||||
SendCommand(0x20);
|
||||
WaitUntilIdle();
|
||||
}
|
||||
|
||||
void Epd::DisplayPart(const unsigned char* frame_buffer)
|
||||
{
|
||||
int w = (EPD_WIDTH % 8 == 0)? (EPD_WIDTH / 8 ): (EPD_WIDTH / 8 + 1);
|
||||
int h = EPD_HEIGHT;
|
||||
|
||||
if (frame_buffer != NULL) {
|
||||
SendCommand(0x24);
|
||||
for (int j = 0; j < h; j++) {
|
||||
for (int i = 0; i < w; i++) {
|
||||
SendData(frame_buffer[i + j * w]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//DISPLAY REFRESH
|
||||
SendCommand(0x22);
|
||||
SendData(0xFF);
|
||||
SendCommand(0x20);
|
||||
WaitUntilIdle();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: After this command is transmitted, the chip would enter the
|
||||
* deep-sleep mode to save power.
|
||||
* The deep sleep mode would return to standby by hardware reset.
|
||||
* The only one parameter is a check code, the command would be
|
||||
* executed if check code = 0xA5.
|
||||
* You can use Epd::Init() to awaken
|
||||
*/
|
||||
void Epd::Sleep()
|
||||
{
|
||||
SendCommand(0x10); //enter deep sleep
|
||||
SendData(0x01);
|
||||
DelayMs(200);
|
||||
|
||||
DigitalWrite(reset_pin, LOW);
|
||||
}
|
||||
|
||||
/* END OF FILE */
|
||||
|
||||
|
||||
67
Arduino/epd1in54_V2/epd1in54_V2.h
Normal file
67
Arduino/epd1in54_V2/epd1in54_V2.h
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
/*****************************************************************************
|
||||
* | File : epd1in54_V2.h
|
||||
* | Author : Waveshare team
|
||||
* | Function : 1.54inch e-paper V2
|
||||
* | Info :
|
||||
*----------------
|
||||
* | This version: V1.0
|
||||
* | Date : 2019-06-24
|
||||
* | Info :
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documnetation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
#
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef epd1in54_V2_H
|
||||
#define epd1in54_V2_H
|
||||
|
||||
#include "epdif.h"
|
||||
|
||||
// Display resolution
|
||||
#define EPD_WIDTH 200
|
||||
#define EPD_HEIGHT 200
|
||||
|
||||
class Epd : EpdIf {
|
||||
public:
|
||||
unsigned long width;
|
||||
unsigned long height;
|
||||
|
||||
Epd();
|
||||
~Epd();
|
||||
int Init(void);
|
||||
void SendCommand(unsigned char command);
|
||||
void SendData(unsigned char data);
|
||||
void WaitUntilIdle(void);
|
||||
void Reset(void);
|
||||
void Clear(void);
|
||||
void Display(const unsigned char* frame_buffer);
|
||||
void DisplayPartBaseImage(const unsigned char* frame_buffer);
|
||||
void DisplayPart(const unsigned char* frame_buffer);
|
||||
|
||||
void Sleep(void);
|
||||
private:
|
||||
unsigned int reset_pin;
|
||||
unsigned int dc_pin;
|
||||
unsigned int cs_pin;
|
||||
unsigned int busy_pin;
|
||||
};
|
||||
|
||||
#endif /* EPD1IN54B_H */
|
||||
|
||||
/* END OF FILE */
|
||||
32
Arduino/epd1in54_V2/epd1in54_V2.ino
Normal file
32
Arduino/epd1in54_V2/epd1in54_V2.ino
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
#include <SPI.h>
|
||||
#include "epd1in54_V2.h"
|
||||
#include "imagedata.h"
|
||||
|
||||
Epd epd;
|
||||
|
||||
void setup()
|
||||
{
|
||||
// put your setup code here, to run once:
|
||||
Serial.begin(9600);
|
||||
if (epd.Init() != 0) {
|
||||
Serial.println("e-Paper init failed");
|
||||
return;
|
||||
}
|
||||
|
||||
Serial.println("e-Paper clear");
|
||||
epd.Clear();
|
||||
|
||||
Serial.println("e-Paper show pic");
|
||||
epd.Display(IMAGE_DATA);
|
||||
|
||||
Serial.println("e-Paper clear and sleep");
|
||||
epd.Clear();
|
||||
epd.Sleep();
|
||||
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
65
Arduino/epd1in54_V2/epdif.cpp
Normal file
65
Arduino/epd1in54_V2/epdif.cpp
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
/**
|
||||
* @filename : epdif.cpp
|
||||
* @brief : Implements EPD interface functions
|
||||
* Users have to implement all the functions in epdif.cpp
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare August 10 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "epdif.h"
|
||||
#include <spi.h>
|
||||
|
||||
EpdIf::EpdIf() {
|
||||
};
|
||||
|
||||
EpdIf::~EpdIf() {
|
||||
};
|
||||
|
||||
void EpdIf::DigitalWrite(int pin, int value) {
|
||||
digitalWrite(pin, value);
|
||||
}
|
||||
|
||||
int EpdIf::DigitalRead(int pin) {
|
||||
return digitalRead(pin);
|
||||
}
|
||||
|
||||
void EpdIf::DelayMs(unsigned int delaytime) {
|
||||
delay(delaytime);
|
||||
}
|
||||
|
||||
void EpdIf::SpiTransfer(unsigned char data) {
|
||||
digitalWrite(CS_PIN, LOW);
|
||||
SPI.transfer(data);
|
||||
digitalWrite(CS_PIN, HIGH);
|
||||
}
|
||||
|
||||
int EpdIf::IfInit(void) {
|
||||
pinMode(CS_PIN, OUTPUT);
|
||||
pinMode(RST_PIN, OUTPUT);
|
||||
pinMode(DC_PIN, OUTPUT);
|
||||
pinMode(BUSY_PIN, INPUT);
|
||||
|
||||
SPI.begin();
|
||||
SPI.beginTransaction(SPISettings(2000000, MSBFIRST, SPI_MODE0));
|
||||
return 0;
|
||||
}
|
||||
|
||||
51
Arduino/epd1in54_V2/epdif.h
Normal file
51
Arduino/epd1in54_V2/epdif.h
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
/**
|
||||
* @filename : epdif.h
|
||||
* @brief : Header file of epdif.cpp providing EPD interface functions
|
||||
* Users have to implement all the functions in epdif.cpp
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare August 10 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef EPDIF_H
|
||||
#define EPDIF_H
|
||||
|
||||
#include <arduino.h>
|
||||
|
||||
// Pin definition
|
||||
#define RST_PIN 8
|
||||
#define DC_PIN 9
|
||||
#define CS_PIN 10
|
||||
#define BUSY_PIN 7
|
||||
|
||||
class EpdIf {
|
||||
public:
|
||||
EpdIf(void);
|
||||
~EpdIf(void);
|
||||
|
||||
static int IfInit(void);
|
||||
static void DigitalWrite(int pin, int value);
|
||||
static int DigitalRead(int pin);
|
||||
static void DelayMs(unsigned int delaytime);
|
||||
static void SpiTransfer(unsigned char data);
|
||||
};
|
||||
|
||||
#endif
|
||||
342
Arduino/epd1in54_V2/epdpaint.cpp
Normal file
342
Arduino/epd1in54_V2/epdpaint.cpp
Normal file
|
|
@ -0,0 +1,342 @@
|
|||
/**
|
||||
* @filename : epdpaint.cpp
|
||||
* @brief : Paint tools
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare September 9 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <avr/pgmspace.h>
|
||||
#include "epdpaint.h"
|
||||
|
||||
Paint::Paint(unsigned char* image, int width, int height) {
|
||||
this->rotate = ROTATE_0;
|
||||
this->image = image;
|
||||
/* 1 byte = 8 pixels, so the width should be the multiple of 8 */
|
||||
this->width = width % 8 ? width + 8 - (width % 8) : width;
|
||||
this->height = height;
|
||||
}
|
||||
|
||||
Paint::~Paint() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: clear the image
|
||||
*/
|
||||
void Paint::Clear(int colored) {
|
||||
for (int x = 0; x < this->width; x++) {
|
||||
for (int y = 0; y < this->height; y++) {
|
||||
DrawAbsolutePixel(x, y, colored);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a pixel by absolute coordinates.
|
||||
* this function won't be affected by the rotate parameter.
|
||||
*/
|
||||
void Paint::DrawAbsolutePixel(int x, int y, int colored) {
|
||||
if (x < 0 || x >= this->width || y < 0 || y >= this->height) {
|
||||
return;
|
||||
}
|
||||
if (IF_INVERT_COLOR) {
|
||||
if (colored) {
|
||||
image[(x + y * this->width) / 8] |= 0x80 >> (x % 8);
|
||||
} else {
|
||||
image[(x + y * this->width) / 8] &= ~(0x80 >> (x % 8));
|
||||
}
|
||||
} else {
|
||||
if (colored) {
|
||||
image[(x + y * this->width) / 8] &= ~(0x80 >> (x % 8));
|
||||
} else {
|
||||
image[(x + y * this->width) / 8] |= 0x80 >> (x % 8);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: Getters and Setters
|
||||
*/
|
||||
unsigned char* Paint::GetImage(void) {
|
||||
return this->image;
|
||||
}
|
||||
|
||||
int Paint::GetWidth(void) {
|
||||
return this->width;
|
||||
}
|
||||
|
||||
void Paint::SetWidth(int width) {
|
||||
this->width = width % 8 ? width + 8 - (width % 8) : width;
|
||||
}
|
||||
|
||||
int Paint::GetHeight(void) {
|
||||
return this->height;
|
||||
}
|
||||
|
||||
void Paint::SetHeight(int height) {
|
||||
this->height = height;
|
||||
}
|
||||
|
||||
int Paint::GetRotate(void) {
|
||||
return this->rotate;
|
||||
}
|
||||
|
||||
void Paint::SetRotate(int rotate){
|
||||
this->rotate = rotate;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a pixel by the coordinates
|
||||
*/
|
||||
void Paint::DrawPixel(int x, int y, int colored) {
|
||||
int point_temp;
|
||||
if (this->rotate == ROTATE_0) {
|
||||
if(x < 0 || x >= this->width || y < 0 || y >= this->height) {
|
||||
return;
|
||||
}
|
||||
DrawAbsolutePixel(x, y, colored);
|
||||
} else if (this->rotate == ROTATE_90) {
|
||||
if(x < 0 || x >= this->height || y < 0 || y >= this->width) {
|
||||
return;
|
||||
}
|
||||
point_temp = x;
|
||||
x = this->width - y;
|
||||
y = point_temp;
|
||||
DrawAbsolutePixel(x, y, colored);
|
||||
} else if (this->rotate == ROTATE_180) {
|
||||
if(x < 0 || x >= this->width || y < 0 || y >= this->height) {
|
||||
return;
|
||||
}
|
||||
x = this->width - x;
|
||||
y = this->height - y;
|
||||
DrawAbsolutePixel(x, y, colored);
|
||||
} else if (this->rotate == ROTATE_270) {
|
||||
if(x < 0 || x >= this->height || y < 0 || y >= this->width) {
|
||||
return;
|
||||
}
|
||||
point_temp = x;
|
||||
x = y;
|
||||
y = this->height - point_temp;
|
||||
DrawAbsolutePixel(x, y, colored);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a charactor on the frame buffer but not refresh
|
||||
*/
|
||||
void Paint::DrawCharAt(int x, int y, char ascii_char, sFONT* font, int colored) {
|
||||
int i, j;
|
||||
unsigned int char_offset = (ascii_char - ' ') * font->Height * (font->Width / 8 + (font->Width % 8 ? 1 : 0));
|
||||
const unsigned char* ptr = &font->table[char_offset];
|
||||
|
||||
for (j = 0; j < font->Height; j++) {
|
||||
for (i = 0; i < font->Width; i++) {
|
||||
if (pgm_read_byte(ptr) & (0x80 >> (i % 8))) {
|
||||
DrawPixel(x + i, y + j, colored);
|
||||
}
|
||||
if (i % 8 == 7) {
|
||||
ptr++;
|
||||
}
|
||||
}
|
||||
if (font->Width % 8 != 0) {
|
||||
ptr++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this displays a string on the frame buffer but not refresh
|
||||
*/
|
||||
void Paint::DrawStringAt(int x, int y, const char* text, sFONT* font, int colored) {
|
||||
const char* p_text = text;
|
||||
unsigned int counter = 0;
|
||||
int refcolumn = x;
|
||||
|
||||
/* Send the string character by character on EPD */
|
||||
while (*p_text != 0) {
|
||||
/* Display one character on EPD */
|
||||
DrawCharAt(refcolumn, y, *p_text, font, colored);
|
||||
/* Decrement the column position by 16 */
|
||||
refcolumn += font->Width;
|
||||
/* Point on the next character */
|
||||
p_text++;
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a line on the frame buffer
|
||||
*/
|
||||
void Paint::DrawLine(int x0, int y0, int x1, int y1, int colored) {
|
||||
/* Bresenham algorithm */
|
||||
int dx = x1 - x0 >= 0 ? x1 - x0 : x0 - x1;
|
||||
int sx = x0 < x1 ? 1 : -1;
|
||||
int dy = y1 - y0 <= 0 ? y1 - y0 : y0 - y1;
|
||||
int sy = y0 < y1 ? 1 : -1;
|
||||
int err = dx + dy;
|
||||
|
||||
while((x0 != x1) && (y0 != y1)) {
|
||||
DrawPixel(x0, y0 , colored);
|
||||
if (2 * err >= dy) {
|
||||
err += dy;
|
||||
x0 += sx;
|
||||
}
|
||||
if (2 * err <= dx) {
|
||||
err += dx;
|
||||
y0 += sy;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a horizontal line on the frame buffer
|
||||
*/
|
||||
void Paint::DrawHorizontalLine(int x, int y, int line_width, int colored) {
|
||||
int i;
|
||||
for (i = x; i < x + line_width; i++) {
|
||||
DrawPixel(i, y, colored);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a vertical line on the frame buffer
|
||||
*/
|
||||
void Paint::DrawVerticalLine(int x, int y, int line_height, int colored) {
|
||||
int i;
|
||||
for (i = y; i < y + line_height; i++) {
|
||||
DrawPixel(x, i, colored);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a rectangle
|
||||
*/
|
||||
void Paint::DrawRectangle(int x0, int y0, int x1, int y1, int colored) {
|
||||
int min_x, min_y, max_x, max_y;
|
||||
min_x = x1 > x0 ? x0 : x1;
|
||||
max_x = x1 > x0 ? x1 : x0;
|
||||
min_y = y1 > y0 ? y0 : y1;
|
||||
max_y = y1 > y0 ? y1 : y0;
|
||||
|
||||
DrawHorizontalLine(min_x, min_y, max_x - min_x + 1, colored);
|
||||
DrawHorizontalLine(min_x, max_y, max_x - min_x + 1, colored);
|
||||
DrawVerticalLine(min_x, min_y, max_y - min_y + 1, colored);
|
||||
DrawVerticalLine(max_x, min_y, max_y - min_y + 1, colored);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a filled rectangle
|
||||
*/
|
||||
void Paint::DrawFilledRectangle(int x0, int y0, int x1, int y1, int colored) {
|
||||
int min_x, min_y, max_x, max_y;
|
||||
int i;
|
||||
min_x = x1 > x0 ? x0 : x1;
|
||||
max_x = x1 > x0 ? x1 : x0;
|
||||
min_y = y1 > y0 ? y0 : y1;
|
||||
max_y = y1 > y0 ? y1 : y0;
|
||||
|
||||
for (i = min_x; i <= max_x; i++) {
|
||||
DrawVerticalLine(i, min_y, max_y - min_y + 1, colored);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a circle
|
||||
*/
|
||||
void Paint::DrawCircle(int x, int y, int radius, int colored) {
|
||||
/* Bresenham algorithm */
|
||||
int x_pos = -radius;
|
||||
int y_pos = 0;
|
||||
int err = 2 - 2 * radius;
|
||||
int e2;
|
||||
|
||||
do {
|
||||
DrawPixel(x - x_pos, y + y_pos, colored);
|
||||
DrawPixel(x + x_pos, y + y_pos, colored);
|
||||
DrawPixel(x + x_pos, y - y_pos, colored);
|
||||
DrawPixel(x - x_pos, y - y_pos, colored);
|
||||
e2 = err;
|
||||
if (e2 <= y_pos) {
|
||||
err += ++y_pos * 2 + 1;
|
||||
if(-x_pos == y_pos && e2 <= x_pos) {
|
||||
e2 = 0;
|
||||
}
|
||||
}
|
||||
if (e2 > x_pos) {
|
||||
err += ++x_pos * 2 + 1;
|
||||
}
|
||||
} while (x_pos <= 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a filled circle
|
||||
*/
|
||||
void Paint::DrawFilledCircle(int x, int y, int radius, int colored) {
|
||||
/* Bresenham algorithm */
|
||||
int x_pos = -radius;
|
||||
int y_pos = 0;
|
||||
int err = 2 - 2 * radius;
|
||||
int e2;
|
||||
|
||||
do {
|
||||
DrawPixel(x - x_pos, y + y_pos, colored);
|
||||
DrawPixel(x + x_pos, y + y_pos, colored);
|
||||
DrawPixel(x + x_pos, y - y_pos, colored);
|
||||
DrawPixel(x - x_pos, y - y_pos, colored);
|
||||
DrawHorizontalLine(x + x_pos, y + y_pos, 2 * (-x_pos) + 1, colored);
|
||||
DrawHorizontalLine(x + x_pos, y - y_pos, 2 * (-x_pos) + 1, colored);
|
||||
e2 = err;
|
||||
if (e2 <= y_pos) {
|
||||
err += ++y_pos * 2 + 1;
|
||||
if(-x_pos == y_pos && e2 <= x_pos) {
|
||||
e2 = 0;
|
||||
}
|
||||
}
|
||||
if(e2 > x_pos) {
|
||||
err += ++x_pos * 2 + 1;
|
||||
}
|
||||
} while(x_pos <= 0);
|
||||
}
|
||||
|
||||
/* END OF FILE */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
75
Arduino/epd1in54_V2/epdpaint.h
Normal file
75
Arduino/epd1in54_V2/epdpaint.h
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
/**
|
||||
* @filename : epdpaint.h
|
||||
* @brief : Header file for epdpaint.cpp
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare July 28 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef EPDPAINT_H
|
||||
#define EPDPAINT_H
|
||||
|
||||
// Display orientation
|
||||
#define ROTATE_0 0
|
||||
#define ROTATE_90 1
|
||||
#define ROTATE_180 2
|
||||
#define ROTATE_270 3
|
||||
|
||||
// Color inverse. 1 or 0 = set or reset a bit if set a colored pixel
|
||||
#define IF_INVERT_COLOR 1
|
||||
|
||||
#include "fonts.h"
|
||||
|
||||
class Paint {
|
||||
public:
|
||||
Paint(unsigned char* image, int width, int height);
|
||||
~Paint();
|
||||
void Clear(int colored);
|
||||
int GetWidth(void);
|
||||
void SetWidth(int width);
|
||||
int GetHeight(void);
|
||||
void SetHeight(int height);
|
||||
int GetRotate(void);
|
||||
void SetRotate(int rotate);
|
||||
unsigned char* GetImage(void);
|
||||
void DrawAbsolutePixel(int x, int y, int colored);
|
||||
void DrawPixel(int x, int y, int colored);
|
||||
void DrawCharAt(int x, int y, char ascii_char, sFONT* font, int colored);
|
||||
void DrawStringAt(int x, int y, const char* text, sFONT* font, int colored);
|
||||
void DrawLine(int x0, int y0, int x1, int y1, int colored);
|
||||
void DrawHorizontalLine(int x, int y, int width, int colored);
|
||||
void DrawVerticalLine(int x, int y, int height, int colored);
|
||||
void DrawRectangle(int x0, int y0, int x1, int y1, int colored);
|
||||
void DrawFilledRectangle(int x0, int y0, int x1, int y1, int colored);
|
||||
void DrawCircle(int x, int y, int radius, int colored);
|
||||
void DrawFilledCircle(int x, int y, int radius, int colored);
|
||||
|
||||
private:
|
||||
unsigned char* image;
|
||||
int width;
|
||||
int height;
|
||||
int rotate;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
/* END OF FILE */
|
||||
|
||||
1385
Arduino/epd1in54_V2/font12.c
Normal file
1385
Arduino/epd1in54_V2/font12.c
Normal file
File diff suppressed because it is too large
Load diff
1765
Arduino/epd1in54_V2/font16.c
Normal file
1765
Arduino/epd1in54_V2/font16.c
Normal file
File diff suppressed because it is too large
Load diff
2143
Arduino/epd1in54_V2/font20.c
Normal file
2143
Arduino/epd1in54_V2/font20.c
Normal file
File diff suppressed because it is too large
Load diff
2521
Arduino/epd1in54_V2/font24.c
Normal file
2521
Arduino/epd1in54_V2/font24.c
Normal file
File diff suppressed because it is too large
Load diff
1005
Arduino/epd1in54_V2/font8.c
Normal file
1005
Arduino/epd1in54_V2/font8.c
Normal file
File diff suppressed because it is too large
Load diff
75
Arduino/epd1in54_V2/fonts.h
Normal file
75
Arduino/epd1in54_V2/fonts.h
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* @file fonts.h
|
||||
* @author MCD Application Team
|
||||
* @version V1.0.0
|
||||
* @date 18-February-2014
|
||||
* @brief Header for fonts.c file
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <h2><center>© COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of STMicroelectronics nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef __FONTS_H
|
||||
#define __FONTS_H
|
||||
|
||||
/* Max size of bitmap will based on a font24 (17x24) */
|
||||
#define MAX_HEIGHT_FONT 24
|
||||
#define MAX_WIDTH_FONT 17
|
||||
#define OFFSET_BITMAP 54
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include <stdint.h>
|
||||
|
||||
typedef struct _tFont
|
||||
{
|
||||
const uint8_t *table;
|
||||
uint16_t Width;
|
||||
uint16_t Height;
|
||||
|
||||
} sFONT;
|
||||
|
||||
extern sFONT Font24;
|
||||
extern sFONT Font20;
|
||||
extern sFONT Font16;
|
||||
extern sFONT Font12;
|
||||
extern sFONT Font8;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __FONTS_H */
|
||||
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
344
Arduino/epd1in54_V2/imagedata.cpp
Normal file
344
Arduino/epd1in54_V2/imagedata.cpp
Normal file
|
|
@ -0,0 +1,344 @@
|
|||
/**
|
||||
* @filename : imagedata.cpp
|
||||
* @brief : data file for epd demo
|
||||
*
|
||||
* Copyright (C) Waveshare September 5 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "imagedata.h"
|
||||
#include <avr/pgmspace.h>
|
||||
|
||||
const unsigned char IMAGE_DATA[] PROGMEM = {
|
||||
/* 0X00,0X01,0XC8,0X00,0XC8,0X00, */
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFE,0X01,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF1,0XF8,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0XFF,
|
||||
0X3F,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XF0,0X00,
|
||||
0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XF0,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XE3,0XFF,0X1F,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,
|
||||
0XE0,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE3,0XFF,0X9F,0XFF,0XFF,0XFF,0XFF,
|
||||
0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XE1,0XE3,0X00,0X00,0X00,0X00,0X01,
|
||||
0XFF,0XFF,0XE7,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF1,0XC3,0XF3,0X0F,0XFF,0XFF,0XFF,0XFC,0XFF,0XFF,0XE3,0XFF,0X8F,0XFF,0XFF,
|
||||
0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XC3,0X3B,0X0F,0XFF,0XFF,
|
||||
0XFF,0XFE,0XFF,0XFF,0XE3,0XFF,0X1F,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF1,0XC3,0X0F,0X0F,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XE1,0XFE,0X1F,
|
||||
0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XC3,0X0F,0X0F,
|
||||
0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XF0,0XFC,0X1F,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XE3,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XC3,0X87,0X0F,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XF0,
|
||||
0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XE0,0X7F,0XFF,0XFF,0XFF,0XFF,0XF1,0XC1,
|
||||
0X03,0X0F,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XF8,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0X8F,
|
||||
0XFF,0XE0,0X0F,0XFF,0XFF,0XFF,0XFF,0XF1,0XE0,0X00,0X1F,0XFF,0XFF,0XFF,0XFE,0XFF,
|
||||
0XFF,0XFE,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XE0,0X00,0X1F,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0X8F,0XFF,0XFF,0X80,0X7F,0XFF,0XFF,0XFF,0XF1,0XF0,0X00,0X3F,0XFF,0XFF,0XFF,
|
||||
0X7E,0XFF,0XFF,0XFB,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XF0,0X1F,0XFF,
|
||||
0XFF,0XFF,0XF1,0XF8,0X00,0X7F,0XFF,0XFF,0XFC,0X3E,0XFF,0XFF,0XE0,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0X00,0X1F,0XFF,0XFF,0XFF,0XF1,0XFE,0X00,0XFF,0XFF,
|
||||
0XFF,0XF0,0X3E,0XFF,0XFF,0XC6,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XF8,0X07,
|
||||
0X8F,0XFF,0XFF,0XFF,0XF1,0XFE,0X87,0XFF,0XFF,0XFF,0XE0,0XCE,0XFF,0XFF,0XCE,0X7F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XE0,0X1F,0X8F,0XC0,0X07,0XFF,0XF1,0XFE,0XFF,
|
||||
0XFF,0XFF,0XFF,0X81,0X86,0XFF,0XFF,0XCE,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,
|
||||
0XE0,0XFF,0XCF,0X80,0X07,0XFF,0XF1,0XFE,0XFF,0XFF,0XFF,0XFF,0X02,0X06,0XFF,0XFF,
|
||||
0XC6,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XE3,0XFF,0XEF,0X00,0X07,0XFF,0XF1,
|
||||
0XFE,0XFF,0XFF,0XFF,0XFE,0X0C,0X02,0XFF,0XFF,0XE0,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X8F,0XFF,0XFF,0XFF,0XFF,0X1F,0XFF,0XFF,0XF1,0XFE,0XFF,0XFF,0XFF,0XFE,0X18,0X02,
|
||||
0XFF,0XFF,0XFB,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0X1F,0XFF,
|
||||
0XFF,0XF1,0XFE,0XFF,0XFF,0XFF,0XFE,0X20,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0X8F,0XFF,0XFE,0X01,0XFF,0X1F,0XFF,0XFF,0XF1,0XFE,0XFF,0XFF,0XFF,0XFE,
|
||||
0XC0,0X02,0XFF,0XFF,0XFF,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XF0,0X01,0XFF,
|
||||
0X9F,0XFF,0XFF,0XF1,0XFE,0XFF,0XFF,0XFF,0XFF,0X00,0X02,0XFF,0XFF,0XF8,0X00,0X7F,
|
||||
0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XE0,0X01,0XE0,0X80,0X0F,0XFF,0XF1,0XFE,0XFF,0XFF,
|
||||
0XFF,0XFF,0X00,0X02,0XFF,0XFF,0XF0,0X00,0X3F,0XFF,0XE7,0XFF,0XFF,0X8F,0XFF,0XE0,
|
||||
0X03,0XE0,0X00,0X07,0XFF,0XF1,0XFE,0XFF,0XFF,0XFF,0XFF,0X80,0X06,0XFF,0XFF,0XE0,
|
||||
0XCC,0X1F,0XFF,0XE0,0XFF,0XFF,0X8F,0XFF,0XE2,0X71,0XE0,0X00,0X07,0XFF,0XF1,0XFE,
|
||||
0XFF,0XFF,0XFF,0XFF,0XC0,0X0E,0XFF,0XFF,0XE3,0XC7,0X1F,0XFF,0XE0,0X3F,0XFF,0X8F,
|
||||
0XFF,0XE7,0X39,0XE0,0X00,0X0F,0XFF,0XF1,0XFE,0XFF,0XFF,0XFF,0XFF,0XC0,0X0E,0XFF,
|
||||
0XFF,0XE7,0XE7,0X8F,0XFF,0XF0,0X07,0XFF,0X8F,0XFF,0XE7,0X38,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XFE,0XFF,0XFF,0XFF,0XFF,0X00,0X1E,0XFF,0XFF,0XE7,0XE7,0X8F,0XFF,0XFE,0X01,
|
||||
0XFF,0X8F,0XFF,0XE3,0X10,0XFF,0XFF,0XFF,0XFF,0XF1,0XFE,0XFF,0XFF,0XFF,0XFC,0X00,
|
||||
0X3E,0XFF,0XFF,0XE3,0XC7,0X8F,0XFF,0XFF,0XC0,0X7F,0X8F,0XFF,0XE3,0X01,0XFF,0X1F,
|
||||
0XC7,0XFF,0XF1,0XFE,0XFF,0X83,0XFF,0XF0,0X00,0X7E,0XFF,0XFF,0XE0,0X07,0X1F,0XFF,
|
||||
0XFF,0XF8,0X3F,0X8F,0XFF,0XF3,0X81,0XFF,0X1F,0XC7,0XFF,0XF1,0XFE,0XFC,0X01,0XFF,
|
||||
0XE0,0X00,0XFE,0XFF,0XFF,0XF0,0X0F,0X1F,0XFF,0XFF,0XC0,0X1F,0X8F,0XFF,0XFF,0XC7,
|
||||
0XFF,0X1F,0XC7,0XFF,0XF1,0XFE,0XF0,0X07,0XFF,0X80,0X01,0XFE,0XFF,0XFF,0XF8,0X1F,
|
||||
0XBF,0XFF,0XFE,0X00,0X0F,0X8F,0XFF,0XFF,0XFF,0XF8,0X00,0X07,0XFF,0XF1,0XFE,0XC0,
|
||||
0X18,0XFE,0X00,0X03,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X07,0X87,0X8F,0XFF,
|
||||
0XFF,0XFF,0XF8,0X00,0X0F,0XFF,0XF1,0XFE,0XC0,0XE0,0XF8,0X00,0X0F,0XFE,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XE0,0X1F,0XC7,0X8F,0XFF,0XFF,0XFF,0XF8,0X00,0X0F,0XFF,0XF1,
|
||||
0XFE,0XC7,0X00,0XE0,0X00,0X1F,0XFE,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XE0,0XFF,0XC7,
|
||||
0X8F,0XFE,0X00,0X01,0XFF,0X1E,0XFF,0XFF,0XF1,0XFE,0XDC,0X00,0XC0,0X00,0X3F,0XFE,
|
||||
0XFF,0XFF,0XF8,0X3F,0X1F,0XFF,0XE3,0XFF,0XC7,0X8F,0XFE,0X00,0X01,0XFF,0X1F,0XFF,
|
||||
0XFF,0XF1,0XFE,0XE0,0X00,0X00,0X00,0XFF,0XFE,0XFF,0XFF,0XF0,0X0F,0X1F,0XFF,0XFF,
|
||||
0XFF,0XC7,0X8F,0XFE,0X00,0X01,0XFF,0XFF,0XFF,0XFF,0XF1,0XFE,0XC0,0X00,0X00,0X03,
|
||||
0XFF,0XFE,0XFF,0XFF,0XE0,0X03,0X1F,0XFF,0XFF,0XFF,0XFF,0X8F,0XFE,0X03,0XFF,0XF8,
|
||||
0X7F,0XFF,0XFF,0XF1,0XFE,0XE0,0X00,0X00,0X07,0XFF,0XFE,0XFF,0XFF,0XE3,0XC1,0X9F,
|
||||
0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XC0,0X7F,0XF8,0X1F,0XFF,0XFF,0XF1,0XFE,0XE0,0X00,
|
||||
0X00,0X1F,0XFF,0XFE,0XFF,0XFF,0XE7,0XE0,0X9F,0XFF,0XF8,0X00,0XFF,0X8F,0XFF,0XF8,
|
||||
0X1F,0XF8,0X07,0XFF,0XFF,0XF1,0XFE,0XF0,0X00,0X00,0XFF,0XFF,0XFE,0XFF,0XFF,0XE7,
|
||||
0XF8,0X1F,0XFF,0XF0,0X00,0XFF,0X8F,0XFF,0XFE,0X03,0XF8,0X01,0XFF,0XFF,0XF1,0XFE,
|
||||
0XF8,0X00,0X03,0XFF,0XFF,0XFE,0XFF,0XFF,0XE7,0XFC,0X1F,0XFF,0XE0,0X00,0XFF,0X8F,
|
||||
0XFF,0XFF,0X83,0XF8,0XC0,0X7F,0XFF,0XF1,0XFE,0XFC,0X00,0X3F,0XFF,0XFF,0XFE,0XFF,
|
||||
0XFF,0XE3,0XFE,0X1F,0XFF,0XE0,0X00,0XFF,0X8F,0XFF,0XFC,0X07,0XF8,0XF0,0X1F,0XFF,
|
||||
0XF1,0XFE,0XFF,0XB7,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XF1,0XFF,0X1F,0XFF,0XE3,0X31,
|
||||
0XFF,0X8F,0XFF,0XE0,0X3F,0XF8,0XFC,0X07,0XFF,0XF1,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFE,0XFF,0XFF,0XF3,0XFF,0X9F,0XFF,0XE3,0X38,0XFF,0X8F,0XFF,0X00,0XFF,0XF8,0XFF,
|
||||
0X03,0XFF,0XF1,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XE3,0X38,0XFF,0X8F,0XFE,0X07,0XFF,0XF8,0XFF,0XC3,0XFF,0XF1,0XFE,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE3,0X18,0XFF,0X8F,0XFE,0X00,0X01,
|
||||
0XF8,0XFF,0XF3,0XFF,0XF1,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XDF,
|
||||
0XFF,0XFF,0XE3,0X00,0XFF,0X8F,0XFE,0X00,0X01,0XF8,0XFF,0XFF,0XFF,0XF1,0XFE,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XE3,0X80,0XFF,0X8F,0XFE,
|
||||
0X00,0X01,0XF8,0XFF,0XFF,0XFF,0XF1,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,
|
||||
0XFF,0X87,0XFF,0XFF,0XF1,0X81,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,
|
||||
0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XC3,0XFF,0XFF,0XFF,0XC3,0XFF,
|
||||
0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,
|
||||
0XFF,0XFF,0XFF,0XE3,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF1,0XFE,0X7F,0XFF,0XFF,0XFF,0XFF,0XFC,0XFF,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0XFF,0XFF,0XFF,0XE3,0XFF,0XFC,0X00,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE3,0XFF,
|
||||
0XFC,0X00,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC3,0XFF,0XFC,0X00,0X00,0XFF,0X8F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X87,0XFF,0XFC,0X00,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XE3,0XF1,0XFF,0X8F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0X1F,0XFF,0XFF,0XE3,0XF9,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X1F,0XFF,0XFF,0XE3,0XF8,
|
||||
0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XE3,0XF8,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X3F,0XFF,0XFF,
|
||||
0XE1,0XF0,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X1F,0XFF,0XFF,0XF0,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X1F,
|
||||
0XFF,0XFF,0XF0,0X01,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X0F,0XFF,0XFF,0XF8,0X01,0XFF,0X8F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0X87,0XFF,0XFF,0XFE,0X07,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XCF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,
|
||||
0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0XFF,0XFF,0XF0,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X70,0X3F,
|
||||
0XFF,0XE0,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFA,0XFF,0XFF,0XFF,0XFF,0XF0,0X20,0X1F,0XFF,0XE0,0X00,0XFF,0X8F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XC0,0X1F,0XFF,0XFF,0XFF,0XE0,
|
||||
0X02,0X1F,0XFF,0XE3,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,
|
||||
0XFF,0XFF,0XFF,0X00,0X0F,0XFF,0XFF,0XFF,0XE3,0X87,0X1F,0XFF,0XE3,0XFF,0XFF,0X8F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFE,0X00,0X07,0XFF,0XFF,
|
||||
0XFF,0XE7,0X8F,0X8F,0XFF,0XE3,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XFF,0XFF,0XFF,0XFE,0X00,0X02,0X7F,0XFF,0XFF,0XE7,0XCF,0X8F,0XFF,0XF0,0XFF,
|
||||
0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFC,0X00,0X00,
|
||||
0X7F,0XFF,0XFF,0XE7,0XCF,0X9F,0XFF,0XE0,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0XFF,0XFF,0XFF,0XE3,0XFF,0X1F,0XFF,
|
||||
0XE0,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XF8,
|
||||
0X30,0X00,0XFF,0XFF,0XFF,0XF3,0XFE,0X1F,0XFF,0XE0,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XF8,0X30,0X00,0XFF,0XFF,0XFF,0XF7,0XFF,
|
||||
0X3F,0XFF,0XE0,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,
|
||||
0XFF,0XF0,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,
|
||||
0XFF,0XFF,0XFF,0X90,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0X1F,0XFF,0XFF,0XFF,0XFF,
|
||||
0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0X10,0X00,0X00,0XFF,
|
||||
0XFF,0XFF,0XF8,0X1F,0X1F,0XFF,0XE0,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF1,0XFF,0XFF,0XFC,0X10,0X00,0X00,0XFF,0XFF,0XFF,0XF0,0X0F,0X1F,0XFF,0XE0,
|
||||
0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XF8,0X18,0X30,
|
||||
0X00,0XFF,0XFF,0XFF,0XE0,0X03,0X1F,0XFF,0XE0,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XF8,0X08,0X38,0X00,0XFF,0XFF,0XFF,0XE3,0XC1,0X9F,
|
||||
0XFF,0XE0,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XF0,
|
||||
0X08,0X30,0X01,0XFF,0XFF,0XFF,0XE7,0XF0,0X9F,0XFF,0XFF,0XE1,0XFF,0X8F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XE0,0X08,0X00,0X01,0XFF,0XFF,0XFF,0XE7,
|
||||
0XF8,0X1F,0XFF,0XFF,0XF9,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,
|
||||
0XFF,0XE0,0XE4,0X00,0X01,0XFF,0XFF,0XFF,0XE7,0XFC,0X1F,0XFF,0XFF,0XF8,0XFF,0X8F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XE0,0XE2,0X00,0X03,0XFF,0XFF,
|
||||
0XFF,0XE3,0XFE,0X1F,0XFF,0XFF,0XF8,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XFF,0XFF,0XC0,0XE2,0X00,0X07,0XFF,0XFF,0XFF,0XF1,0XFF,0X1F,0XFF,0XE0,0X00,
|
||||
0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XC0,0X41,0X00,0X0F,
|
||||
0XFF,0XFF,0XFF,0XF3,0XFF,0X9F,0XFF,0XE0,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XF1,0XFF,0XFF,0XC0,0X00,0XC0,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XE0,0X01,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XC0,0X00,
|
||||
0X30,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X03,0XFF,0X8F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XC0,0X00,0X07,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,
|
||||
0XC0,0X00,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XC0,0X00,0X00,0X7F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,
|
||||
0XFF,0XFF,0XC0,0X40,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XBF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XC0,0XE0,0X00,0X7F,0XFF,
|
||||
0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,0X87,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF1,0XFF,0XFF,0XE0,0XE0,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0X1E,
|
||||
0X03,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XE0,0XE0,0X00,
|
||||
0X7F,0XFF,0XFF,0XFE,0XFF,0XBF,0XCF,0XFE,0X3E,0X01,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XE0,0X00,0X00,0X3F,0XFF,0XFF,0XFE,0X3F,0XFF,0X8F,
|
||||
0XFE,0X3C,0X01,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XF0,
|
||||
0X00,0X00,0X3F,0XFF,0XFF,0XFF,0X3C,0X0F,0X9F,0XFE,0X3C,0X30,0XFF,0X8F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XF8,0X00,0X01,0X1F,0XFF,0XFF,0XFF,0XF0,
|
||||
0X03,0XFF,0XFE,0X3C,0X78,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,
|
||||
0XFF,0XF8,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0XFF,0XFE,0X38,0X78,0XFF,0X8F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFC,0X00,0X07,0XFF,0XFF,0XFF,
|
||||
0XFF,0XC0,0X00,0XFF,0XFE,0X18,0X78,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XFF,0XFF,0XFF,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X7F,0XFE,0X00,0XF8,
|
||||
0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0X80,0X3F,0XFF,
|
||||
0XFF,0XFF,0XFF,0X80,0X00,0X3F,0XFF,0X00,0XF8,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X3F,0XFF,
|
||||
0X01,0XF0,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X3F,0XFF,0XC3,0XF1,0XFF,0X8F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0X00,0X00,
|
||||
0X31,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0X00,0X00,0X31,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X80,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,
|
||||
0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0X80,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X7F,0XFF,0XFF,
|
||||
0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X01,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X78,0X03,0XDF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X3F,
|
||||
0X1F,0X8F,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X7F,0XFF,0XCF,0XFF,0XFF,0XFF,0XFF,0X8F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFE,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0X00,0X00,
|
||||
0X00,0X01,0X7F,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFD,0X80,0X00,0X00,0X03,0X1F,0XFF,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF8,
|
||||
0X80,0X00,0X00,0X02,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X40,0X00,0X00,0X04,0X0F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,
|
||||
0XFF,0XF0,0X60,0X00,0X00,0X0C,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X20,0X00,0X00,0X08,0X07,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF1,0XFF,0XF0,0X30,0X00,0X00,0X10,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X10,0X00,0X00,
|
||||
0X30,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X18,0X00,0X00,0X20,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X08,
|
||||
0X00,0X00,0X60,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X04,0X00,0X00,0X40,0X07,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,
|
||||
0XF0,0X06,0X00,0X00,0X80,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X02,0X00,0X01,0X80,0X07,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XFF,0XF0,0X03,0X00,0X01,0X00,0X07,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X00,
|
||||
0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X01,0X00,0X02,0X00,
|
||||
0X07,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XF1,0XFF,0XF0,0X01,0X80,0X06,0X00,0X07,0XFF,0XFF,0XFF,0XFC,0X00,0X00,
|
||||
0X00,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X00,0X80,
|
||||
0X04,0X00,0X07,0XFF,0XFF,0XFF,0XF0,0X00,0X38,0X00,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X00,0X40,0X08,0X00,0X07,0XFF,0XFF,0XFF,0XE0,
|
||||
0X00,0XFE,0X00,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,
|
||||
0X00,0X40,0X08,0X00,0X07,0XFF,0XFF,0XFF,0XC0,0X03,0XFF,0X80,0X00,0XFF,0X8F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X00,0X20,0X10,0X00,0X07,0XFF,0XFF,
|
||||
0XFF,0X80,0X0F,0XFF,0XF8,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,
|
||||
0XFF,0XF0,0X00,0X30,0X30,0X00,0X07,0XFF,0XFF,0XFF,0X00,0X3F,0XFF,0XFC,0X00,0XFF,
|
||||
0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X00,0X10,0X20,0X00,0X07,
|
||||
0XFF,0XFF,0XFE,0X00,0XFF,0XE7,0XFE,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF1,0XFF,0XF0,0X00,0X18,0X40,0X00,0X07,0XFF,0XFF,0XFC,0X01,0XFF,0X81,0XFF,
|
||||
0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X00,0X08,0XC0,
|
||||
0X00,0X07,0XFF,0XFF,0XFC,0X01,0XFF,0X00,0X7F,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X00,0X04,0X80,0X00,0X07,0XFF,0XFF,0XF8,0X01,0XFF,
|
||||
0XC0,0X7F,0X80,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X00,
|
||||
0X05,0X00,0X00,0X07,0XFF,0XFF,0XF8,0X00,0XFF,0XF8,0X00,0X00,0XFF,0X8F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X00,0X03,0X00,0X00,0X07,0XFF,0XFF,0XF0,
|
||||
0X00,0X1F,0XFE,0X00,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,
|
||||
0XF0,0X00,0X03,0X00,0X00,0X07,0XFF,0XFF,0XF0,0X00,0X07,0XFF,0X80,0X00,0XFF,0X8F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X00,0X01,0X00,0X00,0X07,0XFF,
|
||||
0XFF,0XF1,0XFF,0X81,0XFF,0X80,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XFF,0XF0,0X00,0X01,0X80,0X00,0X07,0XFF,0XFF,0XE0,0XFF,0X00,0X7F,0X80,0X00,
|
||||
0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X47,0X80,0X80,0X00,
|
||||
0X07,0XFF,0XFF,0XE0,0X7F,0XC1,0X3F,0X80,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XF1,0XFF,0XF0,0X4F,0XC0,0X40,0X00,0X07,0XFF,0XFF,0XE0,0X3F,0XF9,0X4F,
|
||||
0X00,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X4C,0X40,
|
||||
0X40,0X00,0X07,0XFF,0XFF,0XE0,0X1F,0XFE,0X78,0X00,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X64,0XC0,0X40,0X00,0X07,0XFF,0XFF,0XE0,0X0F,
|
||||
0XFF,0X80,0X00,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,
|
||||
0X7F,0XC0,0X40,0X00,0X07,0XFF,0XFF,0XE0,0X05,0XFF,0XF0,0X00,0X00,0XFF,0X8F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X1F,0X00,0XC0,0X00,0X07,0XFF,0XFF,
|
||||
0XE0,0X00,0X3F,0XFC,0X00,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,
|
||||
0XFF,0XF0,0X00,0X00,0X80,0X00,0X07,0XFF,0XFF,0XE0,0X00,0X0F,0XFF,0X00,0X00,0XFF,
|
||||
0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X00,0X01,0X00,0X00,0X07,
|
||||
0XFF,0XFF,0XE0,0X00,0X03,0XFF,0X80,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF1,0XFF,0XF0,0X00,0X01,0X00,0X00,0X07,0XFF,0XFF,0XE0,0X00,0X07,0XFF,0X80,
|
||||
0X01,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X00,0X02,0X00,
|
||||
0X00,0X07,0XFF,0XFF,0XE0,0X00,0X3F,0XFF,0X00,0X01,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X00,0X06,0X00,0X00,0X07,0XFF,0XFF,0XE0,0X00,0XFF,
|
||||
0XFC,0X00,0X01,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X00,
|
||||
0X05,0X00,0X00,0X07,0XFF,0XFF,0XE0,0X01,0XFF,0XE0,0X00,0X01,0XFF,0X8F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X00,0X0D,0X80,0X00,0X07,0XFF,0XFF,0XE0,
|
||||
0X01,0XFF,0X00,0X00,0X03,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,
|
||||
0XF0,0X00,0X08,0X80,0X00,0X07,0XFF,0XFF,0XE0,0X01,0XFF,0X80,0X00,0X03,0XFF,0X8F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X00,0X10,0X40,0X00,0X07,0XFF,
|
||||
0XFF,0XE0,0X00,0XFF,0XF0,0X00,0X03,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XFF,0XF0,0X00,0X10,0X40,0X00,0X07,0XFF,0XFF,0XE0,0X00,0X1F,0XFE,0X00,0X07,
|
||||
0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X00,0X20,0X20,0X00,
|
||||
0X07,0XFF,0XFF,0XE0,0X00,0X03,0XFF,0X80,0X07,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XF1,0XFF,0XF0,0X00,0X60,0X30,0X00,0X07,0XFF,0XFF,0XE0,0X00,0X07,0XFF,
|
||||
0X80,0X0F,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X00,0X40,
|
||||
0X10,0X00,0X07,0XFF,0XFF,0XE0,0X00,0X3F,0XFF,0X80,0X1F,0XFF,0X8F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X00,0XC0,0X08,0X00,0X07,0XFF,0XFF,0XE0,0X01,
|
||||
0XFF,0XFF,0X00,0X1F,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,
|
||||
0X00,0X80,0X0C,0X00,0X07,0XFF,0XFF,0XE0,0X01,0XFF,0XF8,0X00,0X3F,0XFF,0X8F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X01,0X80,0X04,0X00,0X07,0XFF,0XFF,
|
||||
0XE0,0X01,0XFF,0XE0,0X00,0X7F,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,
|
||||
0XFF,0XF0,0X01,0X00,0X02,0X00,0X07,0XFF,0XFF,0XE0,0X01,0XFE,0X00,0X00,0XFF,0XFF,
|
||||
0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X02,0X00,0X03,0X00,0X07,
|
||||
0XFF,0XFF,0XE0,0X01,0XF0,0X00,0X03,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF1,0XFF,0XF0,0X06,0X00,0X01,0X00,0X07,0XFF,0XFF,0XE0,0X01,0X80,0X00,0X07,
|
||||
0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X04,0X00,0X01,
|
||||
0X80,0X07,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X1F,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X0C,0X00,0X00,0X80,0X07,0XFF,0XFF,0XE0,0X00,0X00,
|
||||
0X00,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X08,
|
||||
0X00,0X00,0X40,0X07,0XFF,0XFF,0XE0,0X00,0X00,0X0F,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X18,0X00,0X00,0X60,0X07,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,
|
||||
0XF0,0X10,0X00,0X00,0X20,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X20,0X00,0X00,0X10,0X07,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XFF,0XF0,0X60,0X00,0X00,0X18,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF0,0X40,0X00,0X00,0X08,
|
||||
0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XF1,0XFF,0XF8,0XC0,0X00,0X00,0X04,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XF8,0X80,0X00,
|
||||
0X00,0X04,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0X00,0X00,0X00,0X02,0X3F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
};
|
||||
30
Arduino/epd1in54_V2/imagedata.h
Normal file
30
Arduino/epd1in54_V2/imagedata.h
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
/**
|
||||
* @filename : imagedata.h
|
||||
* @brief : head file for imagedata.cpp
|
||||
*
|
||||
* Copyright (C) Waveshare September 5 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
extern const unsigned char IMAGE_DATA[];
|
||||
|
||||
/* FILE END */
|
||||
|
||||
|
||||
269
Arduino/epd1in54b/epd1in54b.cpp
Normal file
269
Arduino/epd1in54b/epd1in54b.cpp
Normal file
|
|
@ -0,0 +1,269 @@
|
|||
/**
|
||||
* @filename : epd1in54b.cpp
|
||||
* @brief : Implements for e-paper library
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare August 10 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include "epd1in54b.h"
|
||||
|
||||
Epd::~Epd() {
|
||||
};
|
||||
|
||||
Epd::Epd() {
|
||||
reset_pin = RST_PIN;
|
||||
dc_pin = DC_PIN;
|
||||
cs_pin = CS_PIN;
|
||||
busy_pin = BUSY_PIN;
|
||||
width = EPD_WIDTH;
|
||||
height = EPD_HEIGHT;
|
||||
};
|
||||
|
||||
int Epd::Init(void) {
|
||||
/* this calls the peripheral hardware interface, see epdif */
|
||||
if (IfInit() != 0) {
|
||||
return -1;
|
||||
}
|
||||
/* EPD hardware init start */
|
||||
Reset();
|
||||
SendCommand(POWER_SETTING);
|
||||
SendData(0x07);
|
||||
SendData(0x00);
|
||||
SendData(0x08);
|
||||
SendData(0x00);
|
||||
SendCommand(BOOSTER_SOFT_START);
|
||||
SendData(0x07);
|
||||
SendData(0x07);
|
||||
SendData(0x07);
|
||||
SendCommand(POWER_ON);
|
||||
|
||||
WaitUntilIdle();
|
||||
|
||||
SendCommand(PANEL_SETTING);
|
||||
SendData(0xcf);
|
||||
SendCommand(VCOM_AND_DATA_INTERVAL_SETTING);
|
||||
SendData(0x17);
|
||||
SendCommand(PLL_CONTROL);
|
||||
SendData(0x39);
|
||||
SendCommand(TCON_RESOLUTION);
|
||||
SendData(0xC8);
|
||||
SendData(0x00);
|
||||
SendData(0xC8);
|
||||
SendCommand(VCM_DC_SETTING_REGISTER);
|
||||
SendData(0x0E);
|
||||
|
||||
SetLutBw();
|
||||
SetLutRed();
|
||||
/* EPD hardware init end */
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: basic function for sending commands
|
||||
*/
|
||||
void Epd::SendCommand(unsigned char command) {
|
||||
DigitalWrite(dc_pin, LOW);
|
||||
SpiTransfer(command);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: basic function for sending data
|
||||
*/
|
||||
void Epd::SendData(unsigned char data) {
|
||||
DigitalWrite(dc_pin, HIGH);
|
||||
SpiTransfer(data);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: Wait until the busy_pin goes HIGH
|
||||
*/
|
||||
void Epd::WaitUntilIdle(void) {
|
||||
while(DigitalRead(busy_pin) == 0) { //0: busy, 1: idle
|
||||
DelayMs(100);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: module reset.
|
||||
* often used to awaken the module in deep sleep,
|
||||
* see Epd::Sleep();
|
||||
*/
|
||||
void Epd::Reset(void) {
|
||||
DigitalWrite(reset_pin, LOW); //module reset
|
||||
DelayMs(200);
|
||||
DigitalWrite(reset_pin, HIGH);
|
||||
DelayMs(200);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: set the look-up tables
|
||||
*/
|
||||
void Epd::SetLutBw(void) {
|
||||
unsigned int count;
|
||||
SendCommand(0x20); //g vcom
|
||||
for(count = 0; count < 15; count++) {
|
||||
SendData(lut_vcom0[count]);
|
||||
}
|
||||
SendCommand(0x21); //g ww --
|
||||
for(count = 0; count < 15; count++) {
|
||||
SendData(lut_w[count]);
|
||||
}
|
||||
SendCommand(0x22); //g bw r
|
||||
for(count = 0; count < 15; count++) {
|
||||
SendData(lut_b[count]);
|
||||
}
|
||||
SendCommand(0x23); //g wb w
|
||||
for(count = 0; count < 15; count++) {
|
||||
SendData(lut_g1[count]);
|
||||
}
|
||||
SendCommand(0x24); //g bb b
|
||||
for(count = 0; count < 15; count++) {
|
||||
SendData(lut_g2[count]);
|
||||
}
|
||||
}
|
||||
|
||||
void Epd::SetLutRed(void) {
|
||||
unsigned int count;
|
||||
SendCommand(0x25);
|
||||
for(count = 0; count < 15; count++) {
|
||||
SendData(lut_vcom1[count]);
|
||||
}
|
||||
SendCommand(0x26);
|
||||
for(count = 0; count < 15; count++) {
|
||||
SendData(lut_red0[count]);
|
||||
}
|
||||
SendCommand(0x27);
|
||||
for(count = 0; count < 15; count++) {
|
||||
SendData(lut_red1[count]);
|
||||
}
|
||||
}
|
||||
|
||||
void Epd::DisplayFrame(const unsigned char* frame_buffer_black, const unsigned char* frame_buffer_red) {
|
||||
unsigned char temp;
|
||||
if (frame_buffer_black != NULL) {
|
||||
SendCommand(DATA_START_TRANSMISSION_1);
|
||||
DelayMs(2);
|
||||
for (int i = 0; i < this->width * this->height / 8; i++) {
|
||||
temp = 0x00;
|
||||
for (int bit = 0; bit < 4; bit++) {
|
||||
if ((pgm_read_byte(&frame_buffer_black[i]) & (0x80 >> bit)) != 0) {
|
||||
temp |= 0xC0 >> (bit * 2);
|
||||
}
|
||||
}
|
||||
SendData(temp);
|
||||
temp = 0x00;
|
||||
for (int bit = 4; bit < 8; bit++) {
|
||||
if ((pgm_read_byte(&frame_buffer_black[i]) & (0x80 >> bit)) != 0) {
|
||||
temp |= 0xC0 >> ((bit - 4) * 2);
|
||||
}
|
||||
}
|
||||
SendData(temp);
|
||||
}
|
||||
DelayMs(2);
|
||||
}
|
||||
if (frame_buffer_red != NULL) {
|
||||
SendCommand(DATA_START_TRANSMISSION_2);
|
||||
DelayMs(2);
|
||||
for (int i = 0; i < this->width * this->height / 8; i++) {
|
||||
SendData(pgm_read_byte(&frame_buffer_red[i]));
|
||||
}
|
||||
DelayMs(2);
|
||||
}
|
||||
SendCommand(DISPLAY_REFRESH);
|
||||
WaitUntilIdle();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: After this command is transmitted, the chip would enter the
|
||||
* deep-sleep mode to save power.
|
||||
* The deep sleep mode would return to standby by hardware reset.
|
||||
* The only one parameter is a check code, the command would be
|
||||
* executed if check code = 0xA5.
|
||||
* You can use Epd::Init() to awaken
|
||||
*/
|
||||
void Epd::Sleep() {
|
||||
SendCommand(VCOM_AND_DATA_INTERVAL_SETTING);
|
||||
SendData(0x17);
|
||||
SendCommand(VCM_DC_SETTING_REGISTER); //to solve Vcom drop
|
||||
SendData(0x00);
|
||||
SendCommand(POWER_SETTING); //power setting
|
||||
SendData(0x02); //gate switch to external
|
||||
SendData(0x00);
|
||||
SendData(0x00);
|
||||
SendData(0x00);
|
||||
WaitUntilIdle();
|
||||
SendCommand(POWER_OFF); //power off
|
||||
}
|
||||
|
||||
const unsigned char lut_vcom0[] =
|
||||
{
|
||||
0x0E, 0x14, 0x01, 0x0A, 0x06, 0x04, 0x0A, 0x0A,
|
||||
0x0F, 0x03, 0x03, 0x0C, 0x06, 0x0A, 0x00
|
||||
};
|
||||
|
||||
const unsigned char lut_w[] =
|
||||
{
|
||||
0x0E, 0x14, 0x01, 0x0A, 0x46, 0x04, 0x8A, 0x4A,
|
||||
0x0F, 0x83, 0x43, 0x0C, 0x86, 0x0A, 0x04
|
||||
};
|
||||
|
||||
const unsigned char lut_b[] =
|
||||
{
|
||||
0x0E, 0x14, 0x01, 0x8A, 0x06, 0x04, 0x8A, 0x4A,
|
||||
0x0F, 0x83, 0x43, 0x0C, 0x06, 0x4A, 0x04
|
||||
};
|
||||
|
||||
const unsigned char lut_g1[] =
|
||||
{
|
||||
0x8E, 0x94, 0x01, 0x8A, 0x06, 0x04, 0x8A, 0x4A,
|
||||
0x0F, 0x83, 0x43, 0x0C, 0x06, 0x0A, 0x04
|
||||
};
|
||||
|
||||
const unsigned char lut_g2[] =
|
||||
{
|
||||
0x8E, 0x94, 0x01, 0x8A, 0x06, 0x04, 0x8A, 0x4A,
|
||||
0x0F, 0x83, 0x43, 0x0C, 0x06, 0x0A, 0x04
|
||||
};
|
||||
|
||||
const unsigned char lut_vcom1[] =
|
||||
{
|
||||
0x03, 0x1D, 0x01, 0x01, 0x08, 0x23, 0x37, 0x37,
|
||||
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
const unsigned char lut_red0[] =
|
||||
{
|
||||
0x83, 0x5D, 0x01, 0x81, 0x48, 0x23, 0x77, 0x77,
|
||||
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
const unsigned char lut_red1[] =
|
||||
{
|
||||
0x03, 0x1D, 0x01, 0x01, 0x08, 0x23, 0x37, 0x37,
|
||||
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
/* END OF FILE */
|
||||
|
||||
|
||||
101
Arduino/epd1in54b/epd1in54b.h
Normal file
101
Arduino/epd1in54b/epd1in54b.h
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
/**
|
||||
* @filename : epd1in54b.h
|
||||
* @brief : Header file for e-paper display library epd1in54b.cpp
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare August 10 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef EPD1IN54B_H
|
||||
#define EPD1IN54B_H
|
||||
|
||||
#include "epdif.h"
|
||||
|
||||
// Display resolution
|
||||
#define EPD_WIDTH 200
|
||||
#define EPD_HEIGHT 200
|
||||
|
||||
// EPD1IN54B commands
|
||||
#define PANEL_SETTING 0x00
|
||||
#define POWER_SETTING 0x01
|
||||
#define POWER_OFF 0x02
|
||||
#define POWER_OFF_SEQUENCE_SETTING 0x03
|
||||
#define POWER_ON 0x04
|
||||
#define POWER_ON_MEASURE 0x05
|
||||
#define BOOSTER_SOFT_START 0x06
|
||||
#define DEEP_SLEEP 0x07
|
||||
#define DATA_START_TRANSMISSION_1 0x10
|
||||
#define DATA_STOP 0x11
|
||||
#define DISPLAY_REFRESH 0x12
|
||||
#define DATA_START_TRANSMISSION_2 0x13
|
||||
#define PLL_CONTROL 0x30
|
||||
#define TEMPERATURE_SENSOR_COMMAND 0x40
|
||||
#define TEMPERATURE_SENSOR_CALIBRATION 0x41
|
||||
#define TEMPERATURE_SENSOR_WRITE 0x42
|
||||
#define TEMPERATURE_SENSOR_READ 0x43
|
||||
#define VCOM_AND_DATA_INTERVAL_SETTING 0x50
|
||||
#define LOW_POWER_DETECTION 0x51
|
||||
#define TCON_SETTING 0x60
|
||||
#define TCON_RESOLUTION 0x61
|
||||
#define SOURCE_AND_GATE_START_SETTING 0x62
|
||||
#define GET_STATUS 0x71
|
||||
#define AUTO_MEASURE_VCOM 0x80
|
||||
#define VCOM_VALUE 0x81
|
||||
#define VCM_DC_SETTING_REGISTER 0x82
|
||||
#define PROGRAM_MODE 0xA0
|
||||
#define ACTIVE_PROGRAM 0xA1
|
||||
#define READ_OTP_DATA 0xA2
|
||||
|
||||
extern const unsigned char lut_vcom0[];
|
||||
extern const unsigned char lut_vcom1[];
|
||||
extern const unsigned char lut_w[];
|
||||
extern const unsigned char lut_b[];
|
||||
extern const unsigned char lut_g1[];
|
||||
extern const unsigned char lut_g2[];
|
||||
extern const unsigned char lut_red0[];
|
||||
extern const unsigned char lut_red1[];
|
||||
|
||||
class Epd : EpdIf {
|
||||
public:
|
||||
unsigned long width;
|
||||
unsigned long height;
|
||||
|
||||
Epd();
|
||||
~Epd();
|
||||
int Init(void);
|
||||
void SendCommand(unsigned char command);
|
||||
void SendData(unsigned char data);
|
||||
void WaitUntilIdle(void);
|
||||
void Reset(void);
|
||||
void SetLutBw(void);
|
||||
void SetLutRed(void);
|
||||
void DisplayFrame(const unsigned char* frame_buffer_black, const unsigned char* frame_buffer_red);
|
||||
void Sleep(void);
|
||||
private:
|
||||
unsigned int reset_pin;
|
||||
unsigned int dc_pin;
|
||||
unsigned int cs_pin;
|
||||
unsigned int busy_pin;
|
||||
};
|
||||
|
||||
#endif /* EPD1IN54B_H */
|
||||
|
||||
/* END OF FILE */
|
||||
45
Arduino/epd1in54b/epd1in54b.ino
Normal file
45
Arduino/epd1in54b/epd1in54b.ino
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
/**
|
||||
* @filename : epd1in54b-demo.ino
|
||||
* @brief : 1.54inch e-paper display (B) demo
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare August 7 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <SPI.h>
|
||||
#include "epd1in54b.h"
|
||||
#include "imagedata.h"
|
||||
|
||||
void setup() {
|
||||
// put your setup code here, to run once:
|
||||
Serial.begin(9600);
|
||||
Epd epd;
|
||||
if (epd.Init() != 0) {
|
||||
Serial.print("e-Paper init failed");
|
||||
return;
|
||||
}
|
||||
epd.DisplayFrame(IMAGE_BLACK, IMAGE_RED);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// put your main code here, to run repeatedly:
|
||||
|
||||
}
|
||||
64
Arduino/epd1in54b/epdif.cpp
Normal file
64
Arduino/epd1in54b/epdif.cpp
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
/**
|
||||
* @filename : epdif.cpp
|
||||
* @brief : Implements EPD interface functions
|
||||
* Users have to implement all the functions in epdif.cpp
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare August 10 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "epdif.h"
|
||||
#include <SPI.h>
|
||||
|
||||
EpdIf::EpdIf() {
|
||||
};
|
||||
|
||||
EpdIf::~EpdIf() {
|
||||
};
|
||||
|
||||
void EpdIf::DigitalWrite(int pin, int value) {
|
||||
digitalWrite(pin, value);
|
||||
}
|
||||
|
||||
int EpdIf::DigitalRead(int pin) {
|
||||
return digitalRead(pin);
|
||||
}
|
||||
|
||||
void EpdIf::DelayMs(unsigned int delaytime) {
|
||||
delay(delaytime);
|
||||
}
|
||||
|
||||
void EpdIf::SpiTransfer(unsigned char data) {
|
||||
digitalWrite(CS_PIN, LOW);
|
||||
SPI.transfer(data);
|
||||
digitalWrite(CS_PIN, HIGH);
|
||||
}
|
||||
|
||||
int EpdIf::IfInit(void) {
|
||||
pinMode(CS_PIN, OUTPUT);
|
||||
pinMode(RST_PIN, OUTPUT);
|
||||
pinMode(DC_PIN, OUTPUT);
|
||||
pinMode(BUSY_PIN, INPUT);
|
||||
SPI.begin();
|
||||
SPI.beginTransaction(SPISettings(2000000, MSBFIRST, SPI_MODE0));
|
||||
return 0;
|
||||
}
|
||||
|
||||
51
Arduino/epd1in54b/epdif.h
Normal file
51
Arduino/epd1in54b/epdif.h
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
/**
|
||||
* @filename : epdif.h
|
||||
* @brief : Header file of epdif.cpp providing EPD interface functions
|
||||
* Users have to implement all the functions in epdif.cpp
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare August 10 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef EPDIF_H
|
||||
#define EPDIF_H
|
||||
|
||||
#include <Arduino.h>
|
||||
|
||||
// Pin definition
|
||||
#define RST_PIN 8
|
||||
#define DC_PIN 9
|
||||
#define CS_PIN 10
|
||||
#define BUSY_PIN 7
|
||||
|
||||
class EpdIf {
|
||||
public:
|
||||
EpdIf(void);
|
||||
~EpdIf(void);
|
||||
|
||||
static int IfInit(void);
|
||||
static void DigitalWrite(int pin, int value);
|
||||
static int DigitalRead(int pin);
|
||||
static void DelayMs(unsigned int delaytime);
|
||||
static void SpiTransfer(unsigned char data);
|
||||
};
|
||||
|
||||
#endif
|
||||
661
Arduino/epd1in54b/imagedata.cpp
Normal file
661
Arduino/epd1in54b/imagedata.cpp
Normal file
|
|
@ -0,0 +1,661 @@
|
|||
/**
|
||||
* @filename : imagedata.cpp
|
||||
* @brief : data file for epd demo
|
||||
*
|
||||
* Copyright (C) Waveshare August 7 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "imagedata.h"
|
||||
#include <avr/pgmspace.h>
|
||||
|
||||
const unsigned char IMAGE_BLACK[] PROGMEM = {
|
||||
/* 0X00,0X01,0XC8,0X00,0XC8,0X00, */
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0XFF,
|
||||
0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XE3,0XFF,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE3,0XFF,0X9F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X01,
|
||||
0XFF,0XFF,0XE7,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0XFF,0XFF,0XE3,0XFF,0X8F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFE,0XFF,0XFF,0XE3,0XFF,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XE1,0XFE,0X1F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XF0,0XFC,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XF0,
|
||||
0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XF8,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,
|
||||
0XFF,0XFE,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X7E,0XFF,0XFF,0XFB,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X3E,0XFF,0XFF,0XE0,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF0,0X3E,0XFF,0XFF,0XC6,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XFF,0XE0,0XCE,0XFF,0XFF,0XCE,0X7F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,
|
||||
0XFF,0XFF,0XFF,0X81,0X86,0XFF,0XFF,0XCE,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XFF,0X02,0X06,0XFF,0XFF,
|
||||
0XC6,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFE,0XFF,0XFF,0XFF,0XFE,0X0C,0X02,0XFF,0XFF,0XE0,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XFE,0X18,0X02,
|
||||
0XFF,0XFF,0XFB,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XFE,0X20,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XFE,
|
||||
0XC0,0X02,0XFF,0XFF,0XFF,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XFF,0X00,0X02,0XFF,0XFF,0XF8,0X00,0X7F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,
|
||||
0XFF,0XFF,0X00,0X02,0XFF,0XFF,0XF0,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XFF,0X80,0X06,0XFF,0XFF,0XE0,
|
||||
0XCC,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,
|
||||
0XFF,0XFF,0XFF,0XFF,0XC0,0X0E,0XFF,0XFF,0XE3,0XC7,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XFF,0XC0,0X0E,0XFF,
|
||||
0XFF,0XE7,0XE7,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFE,0XFF,0XFF,0XFF,0XFF,0X00,0X1E,0XFF,0XFF,0XE7,0XE7,0X8F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XFC,0X00,
|
||||
0X3E,0XFF,0XFF,0XE3,0XC7,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFE,0XFF,0X83,0XFF,0XF0,0X00,0X7E,0XFF,0XFF,0XE0,0X07,0X1F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFC,0X01,0XFF,
|
||||
0XE0,0X00,0XFE,0XFF,0XFF,0XF0,0X0F,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XF0,0X07,0XFF,0X80,0X01,0XFE,0XFF,0XFF,0XF8,0X1F,
|
||||
0XBF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XC0,
|
||||
0X18,0XFE,0X00,0X03,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XC0,0XE0,0XF8,0X00,0X0F,0XFE,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFE,0XC7,0X00,0XE0,0X00,0X1F,0XFE,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XDC,0X00,0XC0,0X00,0X3F,0XFE,
|
||||
0XFF,0XFF,0XF8,0X3F,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFE,0XE0,0X00,0X00,0X00,0XFF,0XFE,0XFF,0XFF,0XF0,0X0F,0X1F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XC0,0X00,0X00,0X03,
|
||||
0XFF,0XFE,0XFF,0XFF,0XE0,0X03,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFE,0XE0,0X00,0X00,0X07,0XFF,0XFE,0XFF,0XFF,0XE3,0XC1,0X9F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XE0,0X00,
|
||||
0X00,0X1F,0XFF,0XFE,0XFF,0XFF,0XE7,0XE0,0X9F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XF0,0X00,0X00,0XFF,0XFF,0XFE,0XFF,0XFF,0XE7,
|
||||
0XF8,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,
|
||||
0XF8,0X00,0X03,0XFF,0XFF,0XFE,0XFF,0XFF,0XE7,0XFC,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFC,0X00,0X3F,0XFF,0XFF,0XFE,0XFF,
|
||||
0XFF,0XE3,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFE,0XFF,0XB7,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XF1,0XFF,0X1F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFE,0XFF,0XFF,0XF3,0XFF,0X9F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XDF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,
|
||||
0XFF,0X87,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XC3,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,
|
||||
0XFF,0XFF,0XFF,0XE3,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFE,0X7F,0XFF,0XFF,0XFF,0XFF,0XFC,0XFF,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0XFF,0XFF,0XFF,0XE3,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE3,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC3,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X87,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X1F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X3F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X1F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0X87,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XCF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X70,0X3F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFA,0XFF,0XFF,0XFF,0XFF,0XF0,0X20,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XE0,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X1F,0XFF,0XFF,0XFF,0XE0,
|
||||
0X02,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0X00,0X0F,0XFF,0XFF,0XFF,0XE3,0X87,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFC,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0X07,0XFF,0XFF,
|
||||
0XFF,0XE7,0X8F,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X01,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0X02,0X7F,0XFF,0XFF,0XE7,0XCF,0X8F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X00,
|
||||
0X7F,0XFF,0XFF,0XE7,0XCF,0X9F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X00,
|
||||
0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0XFF,0XFF,0XFF,0XE3,0XFF,0X1F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X0F,0XFE,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,
|
||||
0X30,0X00,0XFF,0XFF,0XFF,0XF3,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0XFF,
|
||||
0XFF,0XE0,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X30,0X00,0XFF,0XFF,0XFF,0XF7,0XFF,
|
||||
0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X81,0XFF,0XFF,0XF8,0X1F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF0,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X83,0XFF,0XFF,0XF8,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X83,0XFF,0XFF,0XFC,0X1F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0X90,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0X1F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0X83,0XFF,0XFF,0XFC,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0X10,0X00,0X00,0XFF,
|
||||
0XFF,0XFF,0XF8,0X1F,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X83,0XFF,0XFF,0XFC,0X1F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFC,0X10,0X00,0X00,0XFF,0XFF,0XFF,0XF0,0X0F,0X1F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0X81,0XFF,0XFF,0XF8,0X1F,0XFF,0XFF,0XFF,0XFF,0XF8,0X18,0X30,
|
||||
0X00,0XFF,0XFF,0XFF,0XE0,0X03,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0XFF,0XFF,
|
||||
0XF0,0X3F,0XFF,0XFF,0XFF,0XFF,0XF8,0X08,0X38,0X00,0XFF,0XFF,0XFF,0XE3,0XC1,0X9F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X1F,0XFF,0X80,0X3F,0XFF,0XFF,0XFF,0XFF,0XF0,
|
||||
0X08,0X30,0X01,0XFF,0XFF,0XFF,0XE7,0XF0,0X9F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,
|
||||
0X00,0X00,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XE0,0X08,0X00,0X01,0XFF,0XFF,0XFF,0XE7,
|
||||
0XF8,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X7F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XE0,0XE4,0X00,0X01,0XFF,0XFF,0XFF,0XE7,0XFC,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF0,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0XE2,0X00,0X03,0XFF,0XFF,
|
||||
0XFF,0XE3,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X03,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XC0,0XE2,0X00,0X07,0XFF,0XFF,0XFF,0XF1,0XFF,0X1F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFE,0X00,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X41,0X00,0X0F,
|
||||
0XFF,0XFF,0XFF,0XF3,0XFF,0X9F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X7F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0XC0,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,
|
||||
0X30,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X07,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XC0,0X00,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X7F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X03,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XC0,0X40,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0X80,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0XE0,0X00,0X7F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X00,0X07,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XE0,0XE0,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0XE0,0X00,
|
||||
0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,
|
||||
0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XF0,
|
||||
0X00,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,
|
||||
0X00,0X60,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X01,0X1F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X7F,0XFF,0XC0,0X3F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF8,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0X81,0XFF,0XFF,0XF0,0X1F,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X07,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X83,0XFF,0XFF,0XF8,0X1F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0X83,0XFF,0XFF,0XFC,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X3F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X83,0XFF,0XFF,0XFC,
|
||||
0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0X83,0XFF,0XFF,0XFC,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X83,0XFF,
|
||||
0XFF,0XF8,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X81,0XFF,0XFF,0XF0,0X3F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X80,0X7F,0XFF,0XC0,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X3F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XE0,0X00,0X00,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X00,
|
||||
0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFC,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0XFF,0XF0,0X7F,0XFF,0XFF,0XFF,0XFF,0X00,0X00,
|
||||
0X00,0X01,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,
|
||||
0X7F,0XE0,0X3F,0XFF,0XFF,0XFF,0XFD,0X80,0X00,0X00,0X03,0X1F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X3F,0XE0,0X1F,0XFF,0XFF,0XFF,0XF8,
|
||||
0X80,0X00,0X00,0X02,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0X80,0X3F,0XC0,0X1F,0XFF,0XFF,0XFF,0XF0,0X40,0X00,0X00,0X04,0X0F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X3F,0XC0,0X1F,0XFF,0XFF,
|
||||
0XFF,0XF0,0X60,0X00,0X00,0X0C,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XC0,0X3F,0XE0,0X1F,0XFF,0XFF,0XFF,0XF0,0X20,0X00,0X00,0X08,0X07,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X7F,0XE0,0X3F,
|
||||
0XFF,0XFF,0XFF,0XF0,0X30,0X00,0X00,0X10,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0XFF,0XF8,0X7F,0XFF,0XFF,0XFF,0XF0,0X10,0X00,0X00,
|
||||
0X30,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X18,0X00,0X00,0X20,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X08,
|
||||
0X00,0X00,0X60,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X04,0X00,0X00,0X40,0X07,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF0,0X06,0X00,0X00,0X80,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X02,0X00,0X01,0X80,0X07,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X0F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XF0,0X03,0X00,0X01,0X00,0X07,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X00,
|
||||
0XFF,0XFF,0XFF,0XFF,0X3F,0XF8,0X03,0XFF,0XFF,0XFF,0XFF,0XF0,0X01,0X00,0X02,0X00,
|
||||
0X07,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XF8,0X07,0XF0,0X00,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF0,0X01,0X80,0X06,0X00,0X07,0XFF,0XFF,0XFF,0XFC,0X00,0X00,
|
||||
0X00,0X00,0XFF,0XFF,0XFF,0XF0,0X01,0XE0,0X00,0X7F,0XFF,0XFF,0XFF,0XF0,0X00,0X80,
|
||||
0X04,0X00,0X07,0XFF,0XFF,0XFF,0XF0,0X00,0X38,0X00,0X00,0XFF,0XFF,0XFF,0XE0,0X00,
|
||||
0XC0,0X00,0X7F,0XFF,0XFF,0XFF,0XF0,0X00,0X40,0X08,0X00,0X07,0XFF,0XFF,0XFF,0XE0,
|
||||
0X00,0XFE,0X00,0X00,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X3F,0XFF,0XFF,0XFF,0XF0,
|
||||
0X00,0X40,0X08,0X00,0X07,0XFF,0XFF,0XFF,0XC0,0X03,0XFF,0X80,0X00,0XFF,0XFF,0XFF,
|
||||
0XC0,0X00,0X00,0XE0,0X3F,0XFF,0XFF,0XFF,0XF0,0X00,0X20,0X10,0X00,0X07,0XFF,0XFF,
|
||||
0XFF,0X80,0X0F,0XFF,0XF8,0X00,0XFF,0XFF,0XFF,0X81,0XF8,0X01,0XF8,0X3F,0XFF,0XFF,
|
||||
0XFF,0XF0,0X00,0X30,0X30,0X00,0X07,0XFF,0XFF,0XFF,0X00,0X3F,0XFF,0XFC,0X00,0XFF,
|
||||
0XFF,0XFF,0X83,0XFE,0X03,0XFC,0X1F,0XFF,0XFF,0XFF,0XF0,0X00,0X10,0X20,0X00,0X07,
|
||||
0XFF,0XFF,0XFE,0X00,0XFF,0XE7,0XFE,0X00,0XFF,0XFF,0XFF,0X83,0XFE,0X07,0XFC,0X1F,
|
||||
0XFF,0XFF,0XFF,0XF0,0X00,0X18,0X40,0X00,0X07,0XFF,0XFF,0XFC,0X01,0XFF,0X81,0XFF,
|
||||
0X00,0XFF,0XFF,0XFF,0X87,0XFE,0X07,0XFC,0X1F,0XFF,0XFF,0XFF,0XF0,0X00,0X08,0XC0,
|
||||
0X00,0X07,0XFF,0XFF,0XFC,0X01,0XFF,0X00,0X7F,0X00,0XFF,0XFF,0XFF,0X87,0XFC,0X0F,
|
||||
0XFC,0X1F,0XFF,0XFF,0XFF,0XF0,0X00,0X04,0X80,0X00,0X07,0XFF,0XFF,0XF8,0X01,0XFF,
|
||||
0XC0,0X7F,0X80,0XFF,0XFF,0XFF,0X87,0XFC,0X0F,0XFC,0X1F,0XFF,0XFF,0XFF,0XF0,0X00,
|
||||
0X05,0X00,0X00,0X07,0XFF,0XFF,0XF8,0X00,0XFF,0XF8,0X00,0X00,0XFF,0XFF,0XFF,0X83,
|
||||
0XF8,0X1F,0XFC,0X1F,0XFF,0XFF,0XFF,0XF0,0X00,0X03,0X00,0X00,0X07,0XFF,0XFF,0XF0,
|
||||
0X00,0X1F,0XFE,0X00,0X00,0XFF,0XFF,0XFF,0X81,0XF0,0X0F,0XF8,0X1F,0XFF,0XFF,0XFF,
|
||||
0XF0,0X00,0X03,0X00,0X00,0X07,0XFF,0XFF,0XF0,0X00,0X07,0XFF,0X80,0X00,0XFF,0XFF,
|
||||
0XFF,0X80,0X00,0X07,0XF0,0X3F,0XFF,0XFF,0XFF,0XF0,0X00,0X01,0X00,0X00,0X07,0XFF,
|
||||
0XFF,0XF1,0XFF,0X81,0XFF,0X80,0X00,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0XE0,0X3F,0XFF,
|
||||
0XFF,0XFF,0XF0,0X00,0X01,0X80,0X00,0X07,0XFF,0XFF,0XE0,0XFF,0X00,0X7F,0X80,0X00,
|
||||
0XFF,0XFF,0XFF,0XC0,0X00,0X40,0X00,0X3F,0XFF,0XFF,0XFF,0XF0,0X47,0X80,0X80,0X00,
|
||||
0X07,0XFF,0XFF,0XE0,0X7F,0XC1,0X3F,0X80,0X00,0XFF,0XFF,0XFF,0XE0,0X00,0XE0,0X00,
|
||||
0X7F,0XFF,0XFF,0XFF,0XF0,0X4F,0XC0,0X40,0X00,0X07,0XFF,0XFF,0XE0,0X3F,0XF9,0X4F,
|
||||
0X00,0X00,0XFF,0XFF,0XFF,0XF0,0X03,0XE0,0X00,0XFF,0XFF,0XFF,0XFF,0XF0,0X4C,0X40,
|
||||
0X40,0X00,0X07,0XFF,0XFF,0XE0,0X1F,0XFE,0X78,0X00,0X00,0XFF,0XFF,0XFF,0XFC,0X07,
|
||||
0XF8,0X01,0XFF,0XFF,0XFF,0XFF,0XF0,0X64,0XC0,0X40,0X00,0X07,0XFF,0XFF,0XE0,0X0F,
|
||||
0XFF,0X80,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XF0,
|
||||
0X7F,0XC0,0X40,0X00,0X07,0XFF,0XFF,0XE0,0X05,0XFF,0XF0,0X00,0X00,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X1F,0X00,0XC0,0X00,0X07,0XFF,0XFF,
|
||||
0XE0,0X00,0X3F,0XFC,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF0,0X00,0X00,0X80,0X00,0X07,0XFF,0XFF,0XE0,0X00,0X0F,0XFF,0X00,0X00,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X01,0X00,0X00,0X07,
|
||||
0XFF,0XFF,0XE0,0X00,0X03,0XFF,0X80,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF0,0X00,0X01,0X00,0X00,0X07,0XFF,0XFF,0XE0,0X00,0X07,0XFF,0X80,
|
||||
0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X02,0X00,
|
||||
0X00,0X07,0XFF,0XFF,0XE0,0X00,0X3F,0XFF,0X00,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF8,0X3F,0XFF,0XFF,0XFF,0XF0,0X00,0X06,0X00,0X00,0X07,0XFF,0XFF,0XE0,0X00,0XFF,
|
||||
0XFC,0X00,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XF0,0X00,
|
||||
0X05,0X00,0X00,0X07,0XFF,0XFF,0XE0,0X01,0XFF,0XE0,0X00,0X01,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XF0,0X00,0X0D,0X80,0X00,0X07,0XFF,0XFF,0XE0,
|
||||
0X01,0XFF,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,
|
||||
0XF0,0X00,0X08,0X80,0X00,0X07,0XFF,0XFF,0XE0,0X01,0XFF,0X80,0X00,0X03,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XF0,0X00,0X10,0X40,0X00,0X07,0XFF,
|
||||
0XFF,0XE0,0X00,0XFF,0XF0,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,
|
||||
0XFF,0XFF,0XF0,0X00,0X10,0X40,0X00,0X07,0XFF,0XFF,0XE0,0X00,0X1F,0XFE,0X00,0X07,
|
||||
0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X3F,0XFF,0XFF,0XFF,0XF0,0X00,0X20,0X20,0X00,
|
||||
0X07,0XFF,0XFF,0XE0,0X00,0X03,0XFF,0X80,0X07,0XFF,0XFF,0XFF,0X80,0X00,0X00,0X00,
|
||||
0X3F,0XFF,0XFF,0XFF,0XF0,0X00,0X60,0X30,0X00,0X07,0XFF,0XFF,0XE0,0X00,0X07,0XFF,
|
||||
0X80,0X0F,0XFF,0XFF,0XFF,0X80,0X00,0X00,0X00,0X3F,0XFF,0XFF,0XFF,0XF0,0X00,0X40,
|
||||
0X10,0X00,0X07,0XFF,0XFF,0XE0,0X00,0X3F,0XFF,0X80,0X1F,0XFF,0XFF,0XFF,0X80,0X00,
|
||||
0X00,0X00,0X3F,0XFF,0XFF,0XFF,0XF0,0X00,0XC0,0X08,0X00,0X07,0XFF,0XFF,0XE0,0X01,
|
||||
0XFF,0XFF,0X00,0X1F,0XFF,0XFF,0XFF,0X80,0X00,0X00,0X00,0X3F,0XFF,0XFF,0XFF,0XF0,
|
||||
0X00,0X80,0X0C,0X00,0X07,0XFF,0XFF,0XE0,0X01,0XFF,0XF8,0X00,0X3F,0XFF,0XFF,0XFF,
|
||||
0X80,0X00,0X00,0X00,0X3F,0XFF,0XFF,0XFF,0XF0,0X01,0X80,0X04,0X00,0X07,0XFF,0XFF,
|
||||
0XE0,0X01,0XFF,0XE0,0X00,0X7F,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X3F,0XFF,0XFF,
|
||||
0XFF,0XF0,0X01,0X00,0X02,0X00,0X07,0XFF,0XFF,0XE0,0X01,0XFE,0X00,0X00,0XFF,0XFF,
|
||||
0XFF,0XFF,0XC0,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XF0,0X02,0X00,0X03,0X00,0X07,
|
||||
0XFF,0XFF,0XE0,0X01,0XF0,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XE0,0XFF,0XFF,0XF8,0X3F,
|
||||
0XFF,0XFF,0XFF,0XF0,0X06,0X00,0X01,0X00,0X07,0XFF,0XFF,0XE0,0X01,0X80,0X00,0X07,
|
||||
0XFF,0XFF,0XFF,0XFF,0XE0,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XF0,0X04,0X00,0X01,
|
||||
0X80,0X07,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XE0,0XFF,0XFF,
|
||||
0XF8,0X3F,0XFF,0XFF,0XFF,0XF0,0X0C,0X00,0X00,0X80,0X07,0XFF,0XFF,0XE0,0X00,0X00,
|
||||
0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XF0,0X08,
|
||||
0X00,0X00,0X40,0X07,0XFF,0XFF,0XE0,0X00,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,
|
||||
0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XF0,0X18,0X00,0X00,0X60,0X07,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,
|
||||
0XF0,0X10,0X00,0X00,0X20,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X20,0X00,0X00,0X10,0X07,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XF0,0X60,0X00,0X00,0X18,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X40,0X00,0X00,0X08,
|
||||
0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF8,0XC0,0X00,0X00,0X04,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X80,0X00,
|
||||
0X00,0X04,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X02,0X3F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
};
|
||||
|
||||
const unsigned char IMAGE_RED[] PROGMEM = {
|
||||
/* 0X00,0X01,0XC8,0X00,0XC8,0X00, */
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFE,0X01,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF1,0XF8,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XF0,0X00,
|
||||
0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XF0,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,
|
||||
0XE0,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XE1,0XE3,0X1F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF1,0XC3,0XF3,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XC3,0X3B,0X0F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF1,0XC3,0X0F,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XC3,0X0F,0X0F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XE3,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XC3,0X87,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XE0,0X7F,0XFF,0XFF,0XFF,0XFF,0XF1,0XC1,
|
||||
0X03,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,
|
||||
0XFF,0XE0,0X0F,0XFF,0XFF,0XFF,0XFF,0XF1,0XE0,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XE0,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0X8F,0XFF,0XFF,0X80,0X7F,0XFF,0XFF,0XFF,0XF1,0XF0,0X00,0X3F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XF0,0X1F,0XFF,
|
||||
0XFF,0XFF,0XF1,0XF8,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0X00,0X1F,0XFF,0XFF,0XFF,0XF1,0XFE,0X00,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XF8,0X07,
|
||||
0X8F,0XFF,0XFF,0XFF,0XF1,0XFF,0X87,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XE0,0X1F,0X8F,0XC0,0X07,0XFF,0XF1,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,
|
||||
0XE0,0XFF,0XCF,0X80,0X07,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XE3,0XFF,0XEF,0X00,0X07,0XFF,0XF1,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X8F,0XFF,0XFF,0XFF,0XFF,0X1F,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0X1F,0XFF,
|
||||
0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0X8F,0XFF,0XFE,0X01,0XFF,0X1F,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XF0,0X01,0XFF,
|
||||
0X9F,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XE0,0X01,0XE0,0X80,0X0F,0XFF,0XF1,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE7,0XFF,0XFF,0X8F,0XFF,0XE0,
|
||||
0X03,0XE0,0X00,0X07,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XE0,0XFF,0XFF,0X8F,0XFF,0XE2,0X71,0XE0,0X00,0X07,0XFF,0XF1,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X3F,0XFF,0X8F,
|
||||
0XFF,0XE7,0X39,0XE0,0X00,0X0F,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X07,0XFF,0X8F,0XFF,0XE7,0X38,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X01,
|
||||
0XFF,0X8F,0XFF,0XE3,0X10,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X7F,0X8F,0XFF,0XE3,0X01,0XFF,0X1F,
|
||||
0XC7,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF8,0X3F,0X8F,0XFF,0XF3,0X81,0XFF,0X1F,0XC7,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X1F,0X8F,0XFF,0XFF,0XC7,
|
||||
0XFF,0X1F,0XC7,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFE,0X00,0X0F,0X8F,0XFF,0XFF,0XFF,0XF8,0X00,0X07,0XFF,0XF1,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X07,0X87,0X8F,0XFF,
|
||||
0XFF,0XFF,0XF8,0X00,0X0F,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XE0,0X1F,0XC7,0X8F,0XFF,0XFF,0XFF,0XF8,0X00,0X0F,0XFF,0XF1,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0XFF,0XC7,
|
||||
0X8F,0XFE,0X00,0X01,0XFF,0X1E,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE3,0XFF,0XC7,0X8F,0XFE,0X00,0X01,0XFF,0X1F,0XFF,
|
||||
0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XC7,0X8F,0XFE,0X00,0X01,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFE,0X03,0XFF,0XF8,
|
||||
0X7F,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XC0,0X7F,0XF8,0X1F,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0XFF,0X8F,0XFF,0XF8,
|
||||
0X1F,0XF8,0X07,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF0,0X00,0XFF,0X8F,0XFF,0XFE,0X03,0XF8,0X01,0XFF,0XFF,0XF1,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0XFF,0X8F,
|
||||
0XFF,0XFF,0X83,0XF8,0XC0,0X7F,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0XFF,0X8F,0XFF,0XFC,0X07,0XF8,0XF0,0X1F,0XFF,
|
||||
0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE3,0X31,
|
||||
0XFF,0X8F,0XFF,0XE0,0X3F,0XF8,0XFC,0X07,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE3,0X38,0XFF,0X8F,0XFF,0X00,0XFF,0XF8,0XFF,
|
||||
0X03,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XE3,0X38,0XFF,0X8F,0XFE,0X07,0XFF,0XF8,0XFF,0XC3,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE3,0X18,0XFF,0X8F,0XFE,0X00,0X01,
|
||||
0XF8,0XFF,0XF3,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XE3,0X00,0XFF,0X8F,0XFE,0X00,0X01,0XF8,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE3,0X80,0XFF,0X8F,0XFE,
|
||||
0X00,0X01,0XF8,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF1,0X81,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC3,0XFF,
|
||||
0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFC,0X00,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X00,0XFF,0X8F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFC,0X00,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE3,0XF1,0XFF,0X8F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XE3,0XF9,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE3,0XF8,
|
||||
0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE3,0XF8,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XE1,0XF0,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XF0,0X01,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X01,0XFF,0X8F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFE,0X07,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,
|
||||
0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XE0,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0XFF,0X8F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XE3,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE3,0XFF,0XFF,0X8F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XE3,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0XFF,
|
||||
0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XE0,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XE0,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,
|
||||
0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XE0,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0X8F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF9,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0XFF,0X8F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,
|
||||
0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XE0,0X01,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X03,0XFF,0X8F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XBF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,0X87,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0X1E,
|
||||
0X03,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFE,0XFF,0XBF,0XCF,0XFE,0X3E,0X01,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X3F,0XFF,0X8F,
|
||||
0XFE,0X3C,0X01,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3C,0X0F,0X9F,0XFE,0X3C,0X30,0XFF,0X8F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,
|
||||
0X03,0XFF,0XFE,0X3C,0X78,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0XFF,0XFE,0X38,0X78,0XFF,0X8F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XC0,0X00,0XFF,0XFE,0X18,0X78,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X7F,0XFE,0X00,0XF8,
|
||||
0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0X80,0X00,0X3F,0XFF,0X00,0XF8,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X3F,0XFF,
|
||||
0X01,0XF0,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X3F,0XFF,0XC3,0XF1,0XFF,0X8F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0X00,0X00,
|
||||
0X31,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0X00,0X00,0X31,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X80,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,
|
||||
0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0X80,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X7F,0XFF,0XFF,
|
||||
0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X01,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X78,0X03,0XDF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X3F,
|
||||
0X1F,0X8F,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X7F,0XFF,0XCF,0XFF,0XFF,0XFF,0XFF,0X8F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFE,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
};
|
||||
31
Arduino/epd1in54b/imagedata.h
Normal file
31
Arduino/epd1in54b/imagedata.h
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
/**
|
||||
* @filename : imagedata.h
|
||||
* @brief : head file for imagedata.cpp
|
||||
*
|
||||
* Copyright (C) Waveshare August 7 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
extern const unsigned char IMAGE_BLACK[];
|
||||
extern const unsigned char IMAGE_RED[];
|
||||
|
||||
/* FILE END */
|
||||
|
||||
|
||||
256
Arduino/epd1in54c/epd1in54c.cpp
Normal file
256
Arduino/epd1in54c/epd1in54c.cpp
Normal file
|
|
@ -0,0 +1,256 @@
|
|||
/**
|
||||
* @filename : epd1in54c.cpp
|
||||
* @brief : Implements for e-paper library
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare August 10 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include "epd1in54c.h"
|
||||
|
||||
Epd::~Epd() {
|
||||
};
|
||||
|
||||
Epd::Epd() {
|
||||
reset_pin = RST_PIN;
|
||||
dc_pin = DC_PIN;
|
||||
cs_pin = CS_PIN;
|
||||
busy_pin = BUSY_PIN;
|
||||
width = EPD_WIDTH;
|
||||
height = EPD_HEIGHT;
|
||||
};
|
||||
|
||||
int Epd::Init(void) {
|
||||
/* this calls the peripheral hardware interface, see epdif */
|
||||
if (IfInit() != 0) {
|
||||
return -1;
|
||||
}
|
||||
/* EPD hardware init start */
|
||||
Reset();
|
||||
SendCommand(POWER_SETTING);
|
||||
SendData(0x07);
|
||||
SendData(0x00);
|
||||
SendData(0x08);
|
||||
SendData(0x00);
|
||||
SendCommand(BOOSTER_SOFT_START);
|
||||
SendData(0x17);
|
||||
SendData(0x17);
|
||||
SendData(0x17);
|
||||
SendCommand(POWER_ON);
|
||||
|
||||
WaitUntilIdle();
|
||||
|
||||
SendCommand(PANEL_SETTING);
|
||||
SendData(0x0f);
|
||||
SendData(0x0d);
|
||||
SendCommand(VCOM_AND_DATA_INTERVAL_SETTING);
|
||||
SendData(0xF7);
|
||||
// SendCommand(PLL_CONTROL);
|
||||
// SendData(0x39);
|
||||
SendCommand(TCON_RESOLUTION);
|
||||
SendData(0x98);
|
||||
SendData(0x00);
|
||||
SendData(0x98);
|
||||
SendCommand(VCM_DC_SETTING_REGISTER);
|
||||
SendData(0xf7);
|
||||
|
||||
SetLutBw();
|
||||
SetLutRed();
|
||||
/* EPD hardware init end */
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: basic function for sending commands
|
||||
*/
|
||||
void Epd::SendCommand(unsigned char command) {
|
||||
DigitalWrite(dc_pin, LOW);
|
||||
SpiTransfer(command);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: basic function for sending data
|
||||
*/
|
||||
void Epd::SendData(unsigned char data) {
|
||||
DigitalWrite(dc_pin, HIGH);
|
||||
SpiTransfer(data);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: Wait until the busy_pin goes HIGH
|
||||
*/
|
||||
void Epd::WaitUntilIdle(void) {
|
||||
while(DigitalRead(busy_pin) == 0) { //0: busy, 1: idle
|
||||
DelayMs(100);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: module reset.
|
||||
* often used to awaken the module in deep sleep,
|
||||
* see Epd::Sleep();
|
||||
*/
|
||||
void Epd::Reset(void) {
|
||||
DigitalWrite(reset_pin, LOW); //module reset
|
||||
DelayMs(200);
|
||||
DigitalWrite(reset_pin, HIGH);
|
||||
DelayMs(200);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: set the look-up tables
|
||||
*/
|
||||
void Epd::SetLutBw(void) {
|
||||
unsigned int count;
|
||||
SendCommand(0x20); //g vcom
|
||||
for(count = 0; count < 15; count++) {
|
||||
SendData(lut_vcom0[count]);
|
||||
}
|
||||
SendCommand(0x21); //g ww --
|
||||
for(count = 0; count < 15; count++) {
|
||||
SendData(lut_w[count]);
|
||||
}
|
||||
SendCommand(0x22); //g bw r
|
||||
for(count = 0; count < 15; count++) {
|
||||
SendData(lut_b[count]);
|
||||
}
|
||||
SendCommand(0x23); //g wb w
|
||||
for(count = 0; count < 15; count++) {
|
||||
SendData(lut_g1[count]);
|
||||
}
|
||||
SendCommand(0x24); //g bb b
|
||||
for(count = 0; count < 15; count++) {
|
||||
SendData(lut_g2[count]);
|
||||
}
|
||||
}
|
||||
|
||||
void Epd::SetLutRed(void) {
|
||||
unsigned int count;
|
||||
SendCommand(0x25);
|
||||
for(count = 0; count < 15; count++) {
|
||||
SendData(lut_vcom1[count]);
|
||||
}
|
||||
SendCommand(0x26);
|
||||
for(count = 0; count < 15; count++) {
|
||||
SendData(lut_red0[count]);
|
||||
}
|
||||
SendCommand(0x27);
|
||||
for(count = 0; count < 15; count++) {
|
||||
SendData(lut_red1[count]);
|
||||
}
|
||||
}
|
||||
|
||||
void Epd::DisplayFrame(const unsigned char* frame_buffer_black, const unsigned char* frame_buffer_red) {
|
||||
if (frame_buffer_black != NULL) {
|
||||
SendCommand(DATA_START_TRANSMISSION_1);
|
||||
DelayMs(2);
|
||||
for (int i = 0; i < this->width * this->height / 8; i++) {
|
||||
SendData(pgm_read_byte(&frame_buffer_black[i]));
|
||||
}
|
||||
DelayMs(2);
|
||||
}
|
||||
if (frame_buffer_red != NULL) {
|
||||
SendCommand(DATA_START_TRANSMISSION_2);
|
||||
DelayMs(2);
|
||||
for (int i = 0; i < this->width * this->height / 8; i++) {
|
||||
SendData(pgm_read_byte(&frame_buffer_red[i]));
|
||||
}
|
||||
DelayMs(2);
|
||||
}
|
||||
SendCommand(DISPLAY_REFRESH);
|
||||
WaitUntilIdle();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: After this command is transmitted, the chip would enter the
|
||||
* deep-sleep mode to save power.
|
||||
* The deep sleep mode would return to standby by hardware reset.
|
||||
* The only one parameter is a check code, the command would be
|
||||
* executed if check code = 0xA5.
|
||||
* You can use Epd::Init() to awaken
|
||||
*/
|
||||
void Epd::Sleep() {
|
||||
SendCommand(VCOM_AND_DATA_INTERVAL_SETTING);
|
||||
SendData(0x17);
|
||||
SendCommand(VCM_DC_SETTING_REGISTER); //to solve Vcom drop
|
||||
SendData(0x00);
|
||||
SendCommand(POWER_SETTING); //power setting
|
||||
SendData(0x02); //gate switch to external
|
||||
SendData(0x00);
|
||||
SendData(0x00);
|
||||
SendData(0x00);
|
||||
WaitUntilIdle();
|
||||
SendCommand(POWER_OFF); //power off
|
||||
}
|
||||
|
||||
const unsigned char lut_vcom0[] =
|
||||
{
|
||||
0x0E, 0x14, 0x01, 0x0A, 0x06, 0x04, 0x0A, 0x0A,
|
||||
0x0F, 0x03, 0x03, 0x0C, 0x06, 0x0A, 0x00
|
||||
};
|
||||
|
||||
const unsigned char lut_w[] =
|
||||
{
|
||||
0x0E, 0x14, 0x01, 0x0A, 0x46, 0x04, 0x8A, 0x4A,
|
||||
0x0F, 0x83, 0x43, 0x0C, 0x86, 0x0A, 0x04
|
||||
};
|
||||
|
||||
const unsigned char lut_b[] =
|
||||
{
|
||||
0x0E, 0x14, 0x01, 0x8A, 0x06, 0x04, 0x8A, 0x4A,
|
||||
0x0F, 0x83, 0x43, 0x0C, 0x06, 0x4A, 0x04
|
||||
};
|
||||
|
||||
const unsigned char lut_g1[] =
|
||||
{
|
||||
0x8E, 0x94, 0x01, 0x8A, 0x06, 0x04, 0x8A, 0x4A,
|
||||
0x0F, 0x83, 0x43, 0x0C, 0x06, 0x0A, 0x04
|
||||
};
|
||||
|
||||
const unsigned char lut_g2[] =
|
||||
{
|
||||
0x8E, 0x94, 0x01, 0x8A, 0x06, 0x04, 0x8A, 0x4A,
|
||||
0x0F, 0x83, 0x43, 0x0C, 0x06, 0x0A, 0x04
|
||||
};
|
||||
|
||||
const unsigned char lut_vcom1[] =
|
||||
{
|
||||
0x03, 0x1D, 0x01, 0x01, 0x08, 0x23, 0x37, 0x37,
|
||||
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
const unsigned char lut_red0[] =
|
||||
{
|
||||
0x83, 0x5D, 0x01, 0x81, 0x48, 0x23, 0x77, 0x77,
|
||||
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
const unsigned char lut_red1[] =
|
||||
{
|
||||
0x03, 0x1D, 0x01, 0x01, 0x08, 0x23, 0x37, 0x37,
|
||||
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
/* END OF FILE */
|
||||
|
||||
|
||||
101
Arduino/epd1in54c/epd1in54c.h
Normal file
101
Arduino/epd1in54c/epd1in54c.h
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
/**
|
||||
* @filename : epd1in54c.h
|
||||
* @brief : Header file for e-paper display library epd1in54b.cpp
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare June 1 2018
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef EPD1IN54C_H
|
||||
#define EPD1IN54C_H
|
||||
|
||||
#include "epdif.h"
|
||||
|
||||
// Display resolution
|
||||
#define EPD_WIDTH 152
|
||||
#define EPD_HEIGHT 152
|
||||
|
||||
// EPD1IN54B commands
|
||||
#define PANEL_SETTING 0x00
|
||||
#define POWER_SETTING 0x01
|
||||
#define POWER_OFF 0x02
|
||||
#define POWER_OFF_SEQUENCE_SETTING 0x03
|
||||
#define POWER_ON 0x04
|
||||
#define POWER_ON_MEASURE 0x05
|
||||
#define BOOSTER_SOFT_START 0x06
|
||||
#define DEEP_SLEEP 0x07
|
||||
#define DATA_START_TRANSMISSION_1 0x10
|
||||
#define DATA_STOP 0x11
|
||||
#define DISPLAY_REFRESH 0x12
|
||||
#define DATA_START_TRANSMISSION_2 0x13
|
||||
#define PLL_CONTROL 0x30
|
||||
#define TEMPERATURE_SENSOR_COMMAND 0x40
|
||||
#define TEMPERATURE_SENSOR_CALIBRATION 0x41
|
||||
#define TEMPERATURE_SENSOR_WRITE 0x42
|
||||
#define TEMPERATURE_SENSOR_READ 0x43
|
||||
#define VCOM_AND_DATA_INTERVAL_SETTING 0x50
|
||||
#define LOW_POWER_DETECTION 0x51
|
||||
#define TCON_SETTING 0x60
|
||||
#define TCON_RESOLUTION 0x61
|
||||
#define SOURCE_AND_GATE_START_SETTING 0x62
|
||||
#define GET_STATUS 0x71
|
||||
#define AUTO_MEASURE_VCOM 0x80
|
||||
#define VCOM_VALUE 0x81
|
||||
#define VCM_DC_SETTING_REGISTER 0x82
|
||||
#define PROGRAM_MODE 0xA0
|
||||
#define ACTIVE_PROGRAM 0xA1
|
||||
#define READ_OTP_DATA 0xA2
|
||||
|
||||
extern const unsigned char lut_vcom0[];
|
||||
extern const unsigned char lut_vcom1[];
|
||||
extern const unsigned char lut_w[];
|
||||
extern const unsigned char lut_b[];
|
||||
extern const unsigned char lut_g1[];
|
||||
extern const unsigned char lut_g2[];
|
||||
extern const unsigned char lut_red0[];
|
||||
extern const unsigned char lut_red1[];
|
||||
|
||||
class Epd : EpdIf {
|
||||
public:
|
||||
unsigned long width;
|
||||
unsigned long height;
|
||||
|
||||
Epd();
|
||||
~Epd();
|
||||
int Init(void);
|
||||
void SendCommand(unsigned char command);
|
||||
void SendData(unsigned char data);
|
||||
void WaitUntilIdle(void);
|
||||
void Reset(void);
|
||||
void SetLutBw(void);
|
||||
void SetLutRed(void);
|
||||
void DisplayFrame(const unsigned char* frame_buffer_black, const unsigned char* frame_buffer_red);
|
||||
void Sleep(void);
|
||||
private:
|
||||
unsigned int reset_pin;
|
||||
unsigned int dc_pin;
|
||||
unsigned int cs_pin;
|
||||
unsigned int busy_pin;
|
||||
};
|
||||
|
||||
#endif /* EPD1IN54B_H */
|
||||
|
||||
/* END OF FILE */
|
||||
46
Arduino/epd1in54c/epd1in54c.ino
Normal file
46
Arduino/epd1in54c/epd1in54c.ino
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
/**
|
||||
* @filename : epd1in54b-demo.ino
|
||||
* @brief : 1.54inch e-paper display (C) demo
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare June 1 2018
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <SPI.h>
|
||||
#include "epd1in54c.h"
|
||||
#include "imagedata.h"
|
||||
|
||||
void setup() {
|
||||
// put your setup code here, to run once:
|
||||
Serial.begin(9600);
|
||||
Epd epd;
|
||||
if (epd.Init() != 0) {
|
||||
Serial.print("e-Paper init failed");
|
||||
return;
|
||||
}
|
||||
epd.DisplayFrame(IMAGE_BLACK, IMAGE_RED);
|
||||
epd.Sleep();
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// put your main code here, to run repeatedly:
|
||||
|
||||
}
|
||||
64
Arduino/epd1in54c/epdif.cpp
Normal file
64
Arduino/epd1in54c/epdif.cpp
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
/**
|
||||
* @filename : epdif.cpp
|
||||
* @brief : Implements EPD interface functions
|
||||
* Users have to implement all the functions in epdif.cpp
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare August 10 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "epdif.h"
|
||||
#include <SPI.h>
|
||||
|
||||
EpdIf::EpdIf() {
|
||||
};
|
||||
|
||||
EpdIf::~EpdIf() {
|
||||
};
|
||||
|
||||
void EpdIf::DigitalWrite(int pin, int value) {
|
||||
digitalWrite(pin, value);
|
||||
}
|
||||
|
||||
int EpdIf::DigitalRead(int pin) {
|
||||
return digitalRead(pin);
|
||||
}
|
||||
|
||||
void EpdIf::DelayMs(unsigned int delaytime) {
|
||||
delay(delaytime);
|
||||
}
|
||||
|
||||
void EpdIf::SpiTransfer(unsigned char data) {
|
||||
digitalWrite(CS_PIN, LOW);
|
||||
SPI.transfer(data);
|
||||
digitalWrite(CS_PIN, HIGH);
|
||||
}
|
||||
|
||||
int EpdIf::IfInit(void) {
|
||||
pinMode(CS_PIN, OUTPUT);
|
||||
pinMode(RST_PIN, OUTPUT);
|
||||
pinMode(DC_PIN, OUTPUT);
|
||||
pinMode(BUSY_PIN, INPUT);
|
||||
SPI.begin();
|
||||
SPI.beginTransaction(SPISettings(2000000, MSBFIRST, SPI_MODE0));
|
||||
return 0;
|
||||
}
|
||||
|
||||
51
Arduino/epd1in54c/epdif.h
Normal file
51
Arduino/epd1in54c/epdif.h
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
/**
|
||||
* @filename : epdif.h
|
||||
* @brief : Header file of epdif.cpp providing EPD interface functions
|
||||
* Users have to implement all the functions in epdif.cpp
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare August 10 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef EPDIF_H
|
||||
#define EPDIF_H
|
||||
|
||||
#include <Arduino.h>
|
||||
|
||||
// Pin definition
|
||||
#define RST_PIN 8
|
||||
#define DC_PIN 9
|
||||
#define CS_PIN 10
|
||||
#define BUSY_PIN 7
|
||||
|
||||
class EpdIf {
|
||||
public:
|
||||
EpdIf(void);
|
||||
~EpdIf(void);
|
||||
|
||||
static int IfInit(void);
|
||||
static void DigitalWrite(int pin, int value);
|
||||
static int DigitalRead(int pin);
|
||||
static void DelayMs(unsigned int delaytime);
|
||||
static void SpiTransfer(unsigned char data);
|
||||
};
|
||||
|
||||
#endif
|
||||
395
Arduino/epd1in54c/imagedata.cpp
Normal file
395
Arduino/epd1in54c/imagedata.cpp
Normal file
|
|
@ -0,0 +1,395 @@
|
|||
/**
|
||||
* @filename : imagedata.cpp
|
||||
* @brief : data file for epd demo
|
||||
*
|
||||
* Copyright (C) Waveshare August 7 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "imagedata.h"
|
||||
#include <avr/pgmspace.h>
|
||||
|
||||
const unsigned char IMAGE_BLACK[] PROGMEM = {
|
||||
/* 0X00,0X01,0X98,0X00,0X98,0X00, */
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XBF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XBF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XBF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XBF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0X00,0X0F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0X00,
|
||||
0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFE,0X00,0X00,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XEF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFC,0X00,0X00,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XEF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X00,0X07,0XFF,0XFD,0XFF,0XCF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X00,0X03,0XFF,0XF8,0X7F,
|
||||
0X87,0XFF,0XFF,0XFF,0XFF,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X00,0X03,
|
||||
0XFF,0XF8,0XFF,0XC7,0XFF,0XFF,0XFF,0XFF,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,
|
||||
0X00,0X78,0X03,0XFF,0XF8,0XFF,0XE7,0XFF,0XFF,0XFF,0XFF,0XEF,0XFF,0XFF,0XFF,0XF5,
|
||||
0XFF,0XFF,0XFC,0X00,0XFB,0X83,0XFF,0XF9,0XFF,0XE3,0XFF,0XFF,0XFF,0XFF,0XEF,0XFF,
|
||||
0XFF,0XFF,0X80,0X3F,0XFF,0XFC,0X01,0XF9,0XC3,0XFF,0XF8,0XFF,0XE3,0XFF,0XFF,0XFF,
|
||||
0XFF,0XEF,0XFF,0XFF,0XFE,0X00,0X1F,0XFF,0XF8,0X01,0XD9,0XC3,0XFF,0XF8,0XFF,0XC7,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF7,0XFF,0XFF,0XFC,0X00,0X0F,0XFF,0XF8,0X01,0XD9,0XC3,0XFF,
|
||||
0XF8,0X7F,0X87,0XFF,0XFF,0XFF,0XFF,0XF7,0XFF,0XFF,0XFC,0X00,0X04,0XFF,0XF8,0X01,
|
||||
0XD9,0XC3,0XFF,0XFC,0X3F,0X07,0XFF,0XFF,0XFF,0XFF,0XF7,0XFF,0XFF,0XF8,0X00,0X00,
|
||||
0XFF,0XF8,0X01,0XDB,0XC1,0XFF,0XFC,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XF7,0XFF,0XFF,
|
||||
0XF0,0X00,0X01,0XFF,0XF8,0X00,0XFF,0X81,0XFF,0XFE,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF7,0XFF,0XFF,0XF0,0X60,0X01,0XFF,0XF8,0X00,0X7F,0X81,0XFF,0XFF,0X80,0X7F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF7,0XFF,0XFF,0XF0,0X60,0X01,0XFF,0XF8,0X00,0X3E,0X01,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0XFF,0XFF,0XE0,0X00,0X01,0XFF,0XF8,0X00,0X00,
|
||||
0X01,0XFF,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0XFF,0XFF,0XE0,0X00,0X01,0XFF,
|
||||
0XF8,0X01,0XC0,0X01,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0XFF,0XFF,0X20,
|
||||
0X00,0X01,0XFF,0XF8,0X01,0XC0,0X01,0XFF,0XF1,0X9F,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,
|
||||
0XFF,0XFE,0X20,0X00,0X01,0XFF,0XF8,0X01,0XC0,0X01,0XFF,0XF3,0X9F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFB,0XFF,0XF8,0X20,0X00,0X01,0XFF,0XF8,0X00,0XE0,0X01,0XFF,0XF3,0X9F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFB,0XFF,0XF0,0X30,0X60,0X01,0XFF,0XF8,0X01,0XFF,0XC1,
|
||||
0XFF,0XF1,0X9F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFB,0XFF,0XF0,0X10,0X70,0X01,0XFF,0XF8,
|
||||
0X01,0XFF,0XC1,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFB,0XFF,0XE0,0X10,0X60,
|
||||
0X03,0XFF,0XF8,0X01,0XFF,0XC1,0XFF,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFB,0XFF,
|
||||
0XC0,0X10,0X00,0X03,0XFF,0XF8,0X00,0X00,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFB,0XFF,0XC1,0XC8,0X00,0X03,0XFF,0XF8,0X00,0X00,0X01,0XFF,0XFF,0XC0,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFB,0XFF,0XC1,0XC4,0X00,0X07,0XFF,0XF8,0X00,0X00,0X01,0XFF,
|
||||
0XFE,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFB,0XFF,0X81,0XC4,0X00,0X0F,0XFF,0XF8,0X00,
|
||||
0X7F,0XC1,0XFF,0XFC,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFB,0XFF,0X80,0X82,0X00,0X1F,
|
||||
0XFF,0XF8,0X00,0XFF,0XC1,0XFF,0XF8,0X33,0X07,0XFF,0XFF,0XFF,0XFF,0XFB,0XFF,0X80,
|
||||
0X01,0X80,0X3F,0XFF,0XF8,0X01,0XFF,0XC1,0XFF,0XF8,0XF1,0XC7,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFD,0XFF,0X80,0X00,0X61,0XFF,0XFF,0XF8,0X01,0XD9,0X81,0XFF,0XF9,0XF9,0XE3,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFD,0XFF,0X80,0X00,0X0E,0XFF,0XFF,0XF8,0X01,0XD9,0XC1,0XFF,0XF9,
|
||||
0XF9,0XE3,0XFF,0XFF,0XFF,0XFF,0XFD,0XFF,0X80,0X00,0X00,0X7F,0XFF,0XF8,0X01,0XD9,
|
||||
0XC1,0XFF,0XF8,0XF1,0XE3,0XFF,0XFF,0XFF,0XFF,0XFD,0XFF,0X80,0X00,0X00,0XFF,0XFF,
|
||||
0XF8,0X01,0XD9,0XC1,0XFF,0XF8,0X01,0XC7,0XFF,0XFF,0XFF,0XFF,0XFD,0XFF,0X80,0X80,
|
||||
0X00,0XFF,0XFF,0XF8,0X01,0XDF,0XC1,0XFF,0XFC,0X03,0XC7,0XFF,0XFF,0XFF,0XFF,0XFD,
|
||||
0XFF,0X81,0XC0,0X00,0XFF,0XFF,0XF8,0X00,0XCF,0XC1,0XFF,0XFE,0X07,0XEF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFD,0XFF,0XC1,0XC0,0X00,0XFF,0XFF,0XF8,0X00,0X07,0X81,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0XFF,0XC1,0XC0,0X00,0XFF,0XFF,0XF8,0X00,0X00,0X01,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0XFF,0XC0,0X00,0X00,0X7F,0XFF,0XF8,
|
||||
0X00,0X00,0X01,0XFF,0XFF,0XFF,0XE7,0XFF,0XFF,0XFF,0XFF,0XFD,0XFF,0XE0,0X00,0X00,
|
||||
0X7F,0XFF,0XF8,0X00,0X7F,0XC1,0XFF,0XFE,0X0F,0XC7,0XFF,0XFF,0XFF,0XFF,0XFD,0XFF,
|
||||
0XF0,0X00,0X02,0X3F,0XFF,0XF8,0X00,0XFF,0XC1,0XFF,0XFC,0X03,0XC7,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFE,0XFF,0XF0,0X00,0X07,0XFF,0XFF,0XF8,0X01,0XFF,0XC1,0XFF,0XF8,0X00,0XC7,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XF8,0X00,0X0F,0XFF,0XFF,0XF8,0X01,0XE0,0X01,0XFF,
|
||||
0XF8,0XF0,0X67,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFE,0X00,0X1F,0XFF,0XFF,0XF8,0X01,
|
||||
0XC0,0X01,0XFF,0XF9,0XF8,0X27,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0X00,0X7F,0XFF,
|
||||
0XFF,0XF8,0X01,0XC0,0X01,0XFF,0XF9,0XFE,0X07,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0XC0,0X01,0XFF,0XF9,0XFF,0X07,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X60,0X01,0XFF,0XF8,0XFF,0X87,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X7F,0XFF,0XC1,0XFF,0XFC,
|
||||
0X7F,0XC7,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X7F,0XFF,
|
||||
0XC1,0XFF,0XFC,0XFF,0XE7,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF8,0X7F,0XFF,0XC1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X01,0XFF,0XFF,0XF7,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X01,0XFF,0XFF,0XE3,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X01,
|
||||
0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,
|
||||
0X00,0X0F,0X01,0XFF,0XFF,0XF0,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,0XFF,0XFF,0X0F,
|
||||
0XFF,0XFF,0XF8,0X3C,0X3F,0X81,0XFF,0XFF,0XF8,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,
|
||||
0XFF,0XFC,0XF3,0XFF,0XFF,0XF8,0X38,0X3F,0X81,0XFF,0XFF,0XFC,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0X7F,0XFF,0XF3,0XFD,0XFF,0XFF,0XF8,0X38,0X73,0XC1,0XFF,0XFF,0XF8,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,0XFF,0XEF,0XFE,0XFF,0XFF,0XF8,0X38,0X71,0XC1,0XFF,
|
||||
0XFF,0XF8,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,0XFF,0XDF,0XFF,0X7F,0XFF,0XF8,0X38,
|
||||
0XE1,0XC1,0XFF,0XFF,0XF0,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,0XFF,0XBF,0XFF,0XBF,
|
||||
0XFF,0XF8,0X3C,0XE1,0XC1,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XBF,0XFF,
|
||||
0XBF,0XFF,0XBF,0XFF,0XF8,0X1F,0XC1,0XC1,0XFF,0XFF,0XE3,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XBF,0XFF,0X7F,0XFF,0XDF,0XFF,0XF8,0X1F,0XC3,0XC1,0XFF,0XFF,0XC7,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XBF,0XFF,0X7F,0XFF,0XDF,0XFF,0XF8,0X0F,0X87,0X81,0XFF,0XFF,
|
||||
0XC7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XBF,0XFE,0XFF,0XFF,0XEF,0XFF,0XF8,0X00,0X00,
|
||||
0X01,0XFF,0XFF,0XCF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XBF,0XFE,0XFF,0XFF,0XEF,0XFF,
|
||||
0XF8,0X00,0X00,0X01,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XBF,0XFD,0XFF,
|
||||
0X81,0XF7,0XFF,0XF8,0X00,0X78,0X01,0XFF,0XFF,0XC7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XBF,0XFD,0XFF,0X01,0XF7,0XFF,0XF8,0X00,0XFB,0X81,0XFF,0XFF,0XC7,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XBF,0XFB,0XFF,0X3F,0XFB,0XFF,0XF8,0X01,0XF9,0XC1,0XFF,0XFF,0XC3,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XBF,0XFB,0XFF,0XBF,0XFB,0XFF,0XF8,0X01,0XD9,0XC1,
|
||||
0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XBF,0XFB,0XF8,0X01,0XFB,0XFF,0XF8,
|
||||
0X01,0XD9,0XC1,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XF7,0XF8,0X01,
|
||||
0XFB,0XFF,0XF8,0X01,0XD9,0XC1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,
|
||||
0XF7,0XFF,0XFF,0XFD,0XFF,0XF8,0X01,0XDB,0XC1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XDF,0XF7,0XFF,0X31,0XFD,0XFF,0XF8,0X00,0XFF,0X81,0XFF,0XFF,0XFE,0X3F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XF7,0XFF,0X39,0XFD,0XFF,0XF8,0X00,0X7F,0X81,0XFF,
|
||||
0XFE,0X1C,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XF7,0XFF,0X39,0XFD,0XFF,0XF8,0X00,
|
||||
0X3E,0X01,0XFF,0XFC,0X08,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XEF,0XFF,0X19,0XFE,
|
||||
0XFF,0XF8,0X00,0X00,0X01,0XFF,0XF8,0X00,0X87,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XEF,
|
||||
0XFF,0X83,0XFE,0XFF,0XF8,0X01,0X00,0X01,0XFF,0XF8,0XE1,0XC7,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XDF,0XEF,0XFF,0XC7,0XFE,0XFF,0XF8,0X01,0XE0,0X01,0XFF,0XF9,0XE3,0XE3,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XDF,0XEF,0XFF,0XFF,0XFE,0XFF,0XF8,0X01,0XF8,0X01,0XFF,0XF9,
|
||||
0XF3,0XE3,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XEF,0XFF,0XFF,0XFE,0XFF,0XF8,0X01,0XFF,
|
||||
0X01,0XFF,0XF9,0XF3,0XE7,0XFF,0XFF,0XFF,0XFF,0XFF,0XEF,0XEF,0XFF,0X81,0XFE,0XFF,
|
||||
0XF8,0X00,0X1F,0XC1,0XFF,0XF8,0XFF,0XC7,0XFF,0XFF,0XFF,0XFF,0XFF,0XEF,0XDF,0XFF,
|
||||
0X01,0XFE,0XFF,0XF8,0X00,0X03,0XC1,0XFF,0XFC,0XFF,0X87,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XEF,0XDF,0XFF,0X3F,0XFF,0X7F,0XF8,0X00,0X03,0XC1,0XFF,0XFD,0XFF,0XCF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XEF,0XDF,0XFF,0XBF,0XFF,0X7F,0XF8,0X00,0X3F,0XC1,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XEF,0XDF,0XFF,0X01,0XFF,0X7F,0XF8,0X01,0XFF,0X81,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XEF,0XDF,0XFF,0X01,0XFF,0X7F,0XF8,
|
||||
0X01,0XFC,0X01,0XFF,0XFF,0XFF,0XC7,0XFF,0XFF,0XFF,0XFF,0XFF,0XEF,0XDF,0XFF,0XFF,
|
||||
0XFF,0X7F,0XF8,0X01,0XE0,0X01,0XFF,0XFE,0X07,0XC7,0XFF,0XFF,0XFF,0XFF,0XFF,0XEF,
|
||||
0XDF,0XFF,0XFF,0XFF,0X7F,0XF8,0X01,0X00,0X01,0XFF,0XFC,0X03,0XC7,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XEF,0XDF,0XF9,0X01,0XFF,0X7F,0XF8,0X00,0X00,0X01,0XFF,0XF8,0X00,0XC7,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XEF,0XDF,0XF9,0X01,0XFF,0X7F,0XF8,0X00,0X7F,0XC1,0XFF,
|
||||
0XF8,0XF0,0X67,0XFF,0XFF,0XFF,0XFF,0XFF,0XEF,0XDF,0XFF,0XFF,0XFF,0X7F,0XF8,0X00,
|
||||
0XFF,0XC1,0XFF,0XF9,0XFC,0X27,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0XDF,0XFF,0XEF,0XFF,
|
||||
0X7F,0XF8,0X01,0XFF,0XC1,0XFF,0XF9,0XFE,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0XDF,
|
||||
0XF8,0X01,0XFF,0X7F,0XF8,0X01,0XD9,0X81,0XFF,0XF9,0XFF,0X07,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF7,0XDF,0XF8,0X01,0XFF,0X7F,0XF8,0X01,0XD9,0XC1,0XFF,0XF8,0XFF,0X87,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF7,0XDF,0XFC,0XEF,0XFF,0X7F,0XF8,0X01,0XD9,0XC1,0XFF,0XFC,
|
||||
0X7F,0XC7,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0XDF,0XFE,0X6F,0XFF,0X7F,0XF8,0X01,0XD9,
|
||||
0XC1,0XFF,0XFC,0XFF,0XE7,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0XDF,0XFF,0X2F,0XFF,0X7F,
|
||||
0XF8,0X01,0XDF,0XC1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0XDF,0XFF,
|
||||
0XCF,0XFF,0X7F,0XF8,0X00,0XCF,0XC1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF7,0XDF,0XFF,0XEF,0XFE,0XFF,0XF8,0X00,0X07,0X81,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF7,0XEF,0XFF,0XFF,0XFE,0XFF,0XF8,0X00,0X00,0X01,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0XEF,0XF9,0XC3,0XFE,0XFF,0XF8,0X38,0X00,0X01,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFB,0XEF,0XF9,0X83,0XFE,0XFF,0XF8,
|
||||
0X3F,0X00,0X01,0XFF,0XFF,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFB,0XEF,0XF9,0X99,
|
||||
0XFE,0XFF,0XF8,0X3F,0XF0,0X01,0XFF,0XFF,0XCF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFB,
|
||||
0XEF,0XF9,0X99,0XFE,0XFF,0XF8,0X07,0XFF,0X01,0XFF,0XFF,0XCF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFB,0XEF,0XF8,0X19,0XFE,0XFF,0XF8,0X00,0XFF,0XC1,0XFF,0XBF,0XEF,0XF3,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFB,0XF7,0XF8,0X1B,0XFD,0XFF,0XF8,0X00,0X0F,0XC1,0XFF,
|
||||
0X8F,0XFF,0XE3,0XFF,0XFF,0XFF,0XFF,0XFF,0XFB,0XF7,0XFF,0XFF,0XFD,0XFF,0XF8,0X00,
|
||||
0X0F,0XC1,0XFF,0XCF,0X03,0XE7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFB,0XF7,0XFF,0XFF,0XFD,
|
||||
0XFF,0XF8,0X00,0XFF,0XC1,0XFF,0XFC,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFB,0XF7,
|
||||
0XFF,0XF9,0XFD,0XFF,0XF8,0X0F,0XFF,0X01,0XFF,0XF8,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFB,0XF7,0XFF,0XF9,0XFB,0XFF,0XF8,0X3F,0XF0,0X01,0XFF,0XF0,0X00,0X3F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFB,0XFB,0XFF,0XFF,0XFB,0XFF,0XF8,0X3F,0X00,0X01,0XFF,0XF0,
|
||||
0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0XFB,0XFF,0XFF,0XFB,0XFF,0XF8,0X3F,0X00,
|
||||
0X01,0XFF,0XE0,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0XFB,0XFF,0XFF,0XF7,0XFF,
|
||||
0XF8,0X3F,0XF0,0X03,0XFF,0XE0,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0XFD,0XFF,
|
||||
0XFF,0XF7,0XFF,0XF8,0X07,0XFE,0X03,0XFF,0XE0,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFD,0XFD,0XF8,0X01,0XF7,0XFF,0XF8,0X00,0X7F,0XC3,0XFC,0X40,0X00,0X0C,0X7F,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFD,0XFE,0XF8,0X01,0XEF,0XFF,0XF8,0X00,0X0F,0XC3,0XFC,0X40,0X00,
|
||||
0X0C,0X7F,0XFF,0XFF,0XFF,0XFF,0XFD,0XFE,0XFD,0XFF,0XEF,0XFF,0XFC,0X00,0X0F,0XC3,
|
||||
0XFF,0XE0,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0XFF,0X7C,0XFF,0XDF,0XFF,0XFC,
|
||||
0X00,0XFF,0XC3,0XFF,0XE0,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0XFF,0X7F,0XFF,
|
||||
0XDF,0XFF,0XFC,0X1F,0XFF,0XC3,0XFF,0XE0,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,
|
||||
0XFF,0XBF,0XFF,0XBF,0XFF,0XFC,0X3F,0XFC,0X03,0XFF,0XF0,0X00,0X1F,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFD,0XFF,0XBF,0XFF,0XBF,0XFF,0XFC,0X3F,0XE0,0X03,0XFF,0XF8,0X00,0X3F,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XDF,0XFF,0X7F,0XFF,0XFC,0X3E,0X00,0X07,0XFF,
|
||||
0XFC,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XEF,0XFE,0XFF,0XFF,0XFE,0X30,
|
||||
0X00,0X07,0XFF,0XDE,0X00,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XF7,0XFD,0XFF,
|
||||
0XFF,0XFE,0X00,0X00,0X07,0XFF,0X8F,0XC7,0XE3,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,
|
||||
0XF8,0XF3,0XFF,0XFF,0XFE,0X00,0X00,0X0F,0XFF,0X9F,0XFF,0XF3,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFE,0XFF,0XFF,0X0F,0XFF,0XFF,0XFF,0X00,0X00,0X0F,0XFF,0XBF,0XCF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XCF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XCF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X7F,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0X7F,0XFF,0XFF,0XFF,0XFF,};
|
||||
|
||||
const unsigned char IMAGE_RED[] PROGMEM = {
|
||||
/* 0X00,0X01,0X98,0X00,0X98,0X00, */
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X0A,
|
||||
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,
|
||||
0X00,0X00,0X7F,0XC0,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF0,0X00,0X00,0X01,0XFF,0XE0,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X03,0XFF,0XF0,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X03,0XFF,0XFB,0X00,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X07,0XFF,0XFF,
|
||||
0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,
|
||||
0X0F,0XFF,0XFE,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF8,0X00,0X00,0X0F,0XFF,0XFE,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X0F,0XFF,0XFE,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X1F,0XFF,0XFE,0X00,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X1F,0XFF,0XFE,0X00,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0XDF,
|
||||
0XFF,0XFE,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,
|
||||
0X00,0X01,0XDF,0XFF,0XFE,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFC,0X00,0X07,0XDF,0XFF,0XFE,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X0F,0XCF,0XFF,0XFE,0X00,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X0F,0XEF,0XFF,0XFE,0X00,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X1F,0XEF,0XFF,
|
||||
0XFC,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,
|
||||
0X3F,0XEF,0XFF,0XFC,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFC,0X00,0X3F,0XF7,0XFF,0XFC,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X3F,0XFF,0XFF,0XF8,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X7F,0XFF,0XFF,0XF0,0X00,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF9,0XFF,0XFF,0XFC,0X00,0X7F,0XFF,0XFF,0XE0,
|
||||
0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFC,0X00,0X7F,
|
||||
0XFF,0XFF,0XC0,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X0F,0XFF,
|
||||
0XFE,0X00,0X7F,0XFF,0XFE,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFC,0X01,0XFF,0XFE,0X00,0X7F,0XFF,0XFD,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0X80,0X7F,0XFE,0X00,0X7F,0XFF,0XFF,0X80,0X00,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X1F,0XFE,0X00,0X7F,0XFF,0XFF,0X00,0X00,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X0F,0XFE,0X00,0X7F,0XFF,
|
||||
0XFF,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X07,0XFE,
|
||||
0X00,0X7F,0XFF,0XFF,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X80,0X03,0XFE,0X00,0X3F,0XFF,0XFF,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFC,0X01,0XE1,0XFE,0X00,0X3F,0XFF,0XFF,0X00,0X00,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X07,0XF1,0XFE,0X00,0X3F,0XFF,0XFF,0X80,0X00,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X3F,0XF1,0XFE,0X00,0X1F,0XFF,0XFF,
|
||||
0X80,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0XFF,0XF1,0XFE,0X00,
|
||||
0X0F,0XFF,0XFD,0XC0,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF1,0XFF,0X00,0X0F,0XFF,0XF8,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X07,0XFF,0XF0,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X01,0XFF,0XE0,0X00,0X00,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0X3F,0XFF,0X00,0X00,0XFF,0X80,0X00,
|
||||
0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X3F,0XFF,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X3F,
|
||||
0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF8,0X00,0X3F,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF8,0XCC,0X7F,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0XCE,0X3F,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0XCE,0X3F,0XFF,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0XC6,0X3F,0XFF,
|
||||
0X80,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,
|
||||
0XC0,0X3F,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XF8,0XE0,0X3F,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X60,0X7F,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0XFF,0XFF,0X80,0X00,0X00,0XF0,
|
||||
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,
|
||||
0X00,0X03,0X6C,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0X80,0X00,0X0D,0XFA,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0X00,0X00,0X3F,0XFF,0X80,0X00,0X17,0XFD,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X3F,0XFF,0X80,0X00,0X2F,0XFE,0X80,0X00,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X3F,0XFF,0X80,0X00,0X5F,0XFF,0X40,
|
||||
0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X3F,0XFF,0XC0,0X00,
|
||||
0X7F,0XFF,0XC0,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0XFC,0X7F,
|
||||
0XFF,0XC0,0X00,0XBF,0XFF,0XA0,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF8,0XFE,0X7F,0XFF,0XC0,0X00,0XFF,0XFF,0XE0,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF8,0XFE,0X3F,0XFF,0XC0,0X01,0X7F,0XFF,0XD0,0X00,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0XFE,0X3F,0XFF,0XC0,0X01,0XFF,0XFF,0XF0,0X00,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X7C,0X3F,0XFF,0XC0,0X02,0XFF,
|
||||
0XFF,0XE8,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X3F,0XFF,
|
||||
0XC0,0X03,0XFF,0XFF,0XF8,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,
|
||||
0X00,0X7F,0XFF,0XC0,0X05,0XFF,0XFF,0XF4,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFE,0X00,0X7F,0XFF,0XC0,0X07,0XFF,0XFF,0XFC,0X00,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X81,0XFF,0XFF,0XC0,0X07,0XFF,0XFF,0XFC,0X00,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X0B,0XFF,0XFF,
|
||||
0XFC,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,
|
||||
0X0F,0XFF,0XFF,0XFA,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X00,
|
||||
0X3F,0XFF,0XE0,0X0F,0XFF,0XFF,0XFE,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFC,0X00,0X3F,0XFF,0XE0,0X0F,0XFF,0XFF,0XFE,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X3F,0XFF,0XE0,0X0F,0XFF,0XFF,0XFE,0X00,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X3F,0XFF,0XE0,0X17,0XFF,0XFF,0XFD,
|
||||
0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0XFF,0XFF,0XFF,0XE0,0X1F,
|
||||
0XFF,0XFF,0XFF,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0XFF,0XFF,
|
||||
0XFF,0XE0,0X1F,0XFF,0XFF,0XFF,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XF8,0XFF,0XFF,0XFF,0XE0,0X1F,0XFF,0XFF,0XFF,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFC,0X3F,0XFF,0XFF,0XE0,0X1F,0XFF,0XFF,0XFF,0X00,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X3F,0XFF,0XF0,0X1F,0XFF,0XFF,0XFF,0X00,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X3F,0XFF,0XF0,0X2F,0XFF,
|
||||
0XFF,0XFF,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X3F,0XFF,
|
||||
0XF0,0X3F,0XFF,0XFF,0XFE,0X80,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,
|
||||
0X00,0X3F,0XFF,0XF0,0X3F,0XFF,0XFF,0XFF,0X80,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X3F,0XFF,0XFF,0XFF,0X80,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X3F,0XFF,0XFF,0XFF,0X80,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X3F,0XFF,0XFF,
|
||||
0XFF,0X80,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X3F,0XFF,0XF0,
|
||||
0X3F,0XFF,0XFF,0XFF,0X80,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,
|
||||
0X3F,0XFF,0XF0,0X3F,0XFF,0XFF,0XFF,0X80,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XF8,0X00,0X3F,0XFF,0XF0,0X3F,0XFF,0XFF,0XFF,0X80,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X3F,0XFF,0XF0,0X3F,0XFF,0XFF,0XFF,0X80,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X7F,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,
|
||||
0X80,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X7F,0XFF,0XF8,0X3F,
|
||||
0XFF,0XFF,0XFF,0X80,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X3F,
|
||||
0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0X80,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFE,0X3F,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0X80,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF8,0X00,0X3F,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0X80,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X3F,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0X80,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X7F,0XFF,0XF8,0X3F,0XFF,
|
||||
0XFF,0XFE,0X80,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0XFF,0XFF,
|
||||
0XF8,0X2F,0XFF,0XFF,0XFF,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XF8,0X1F,0XFF,0XFF,0XFF,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X1F,0XFF,0XFF,0XFF,0X00,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X1F,0XFF,0XFF,0XFF,0X00,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X1F,0XFF,0XFF,
|
||||
0XFF,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFC,
|
||||
0X1F,0XFF,0XFF,0XFF,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC7,0X80,
|
||||
0XFF,0XFF,0XFC,0X17,0XFF,0XFF,0XFD,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0X8F,0X80,0X7F,0XFF,0XFC,0X0F,0XFF,0XFF,0XFE,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0X8F,0X00,0X7F,0XFF,0XFC,0X0F,0XFF,0XFF,0XFE,0X00,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0X0C,0X3F,0XFF,0XFC,0X0F,0XFF,0XFF,0XFE,
|
||||
0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0X1E,0X3F,0XFF,0XFC,0X0F,
|
||||
0XFF,0XFF,0XFA,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8E,0X1E,0X3F,
|
||||
0XFF,0XFC,0X0B,0XFF,0XFF,0XFC,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X86,0X1E,0X3F,0XFF,0XFC,0X07,0XFF,0XFF,0XFC,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0X80,0X3E,0X3F,0XFF,0XFE,0X07,0XFF,0XFF,0XF4,0X00,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X3E,0X3F,0XFF,0XFE,0X05,0XFF,0XFF,0XF8,0X00,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X7C,0X3F,0XFF,0XFE,0X03,0XFF,
|
||||
0XFF,0XF8,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0XFC,0X7F,0XFF,
|
||||
0XFE,0X02,0XFF,0XFF,0XE8,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFE,0X01,0XFF,0XFF,0XF0,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X01,0X7F,0XFF,0XD0,0X00,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0XFF,0XFF,0XE0,0X00,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0XBF,0XFF,
|
||||
0XA0,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,
|
||||
0X00,0X7F,0XFF,0XC0,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFE,0X00,0X5F,0XFF,0X40,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X2F,0XFE,0X80,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X17,0XFD,0X00,0X00,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X0B,0XFA,0X00,
|
||||
0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
|
||||
0X07,0X6C,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0X00,0X00,0XF0,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,
|
||||
0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0X80,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X00,0X00,0X00,0XFF,
|
||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X00,
|
||||
0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0X80,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||
0XFF,0XFF,0XFF,0X80,0X00,0X00,0X00,0X00,};
|
||||
31
Arduino/epd1in54c/imagedata.h
Normal file
31
Arduino/epd1in54c/imagedata.h
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
/**
|
||||
* @filename : imagedata.h
|
||||
* @brief : head file for imagedata.cpp
|
||||
*
|
||||
* Copyright (C) Waveshare August 7 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
extern const unsigned char IMAGE_BLACK[];
|
||||
extern const unsigned char IMAGE_RED[];
|
||||
|
||||
/* FILE END */
|
||||
|
||||
|
||||
283
Arduino/epd2in13/epd2in13.cpp
Normal file
283
Arduino/epd2in13/epd2in13.cpp
Normal file
|
|
@ -0,0 +1,283 @@
|
|||
/**
|
||||
* @filename : epd2in13.cpp
|
||||
* @brief : Implements for e-paper library
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare September 9 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include "epd2in13.h"
|
||||
|
||||
Epd::~Epd() {
|
||||
};
|
||||
|
||||
Epd::Epd() {
|
||||
reset_pin = RST_PIN;
|
||||
dc_pin = DC_PIN;
|
||||
cs_pin = CS_PIN;
|
||||
busy_pin = BUSY_PIN;
|
||||
width = EPD_WIDTH;
|
||||
height = EPD_HEIGHT;
|
||||
};
|
||||
|
||||
int Epd::Init(const unsigned char* lut) {
|
||||
/* this calls the peripheral hardware interface, see epdif */
|
||||
if (IfInit() != 0) {
|
||||
return -1;
|
||||
}
|
||||
/* EPD hardware init start */
|
||||
this->lut = lut;
|
||||
Reset();
|
||||
SendCommand(DRIVER_OUTPUT_CONTROL);
|
||||
SendData((EPD_HEIGHT - 1) & 0xFF);
|
||||
SendData(((EPD_HEIGHT - 1) >> 8) & 0xFF);
|
||||
SendData(0x00); // GD = 0; SM = 0; TB = 0;
|
||||
SendCommand(BOOSTER_SOFT_START_CONTROL);
|
||||
SendData(0xD7);
|
||||
SendData(0xD6);
|
||||
SendData(0x9D);
|
||||
SendCommand(WRITE_VCOM_REGISTER);
|
||||
SendData(0xA8); // VCOM 7C
|
||||
SendCommand(SET_DUMMY_LINE_PERIOD);
|
||||
SendData(0x1A); // 4 dummy lines per gate
|
||||
SendCommand(SET_GATE_TIME);
|
||||
SendData(0x08); // 2us per line
|
||||
SendCommand(DATA_ENTRY_MODE_SETTING);
|
||||
SendData(0x03); // X increment; Y increment
|
||||
SetLut(this->lut);
|
||||
/* EPD hardware init end */
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: basic function for sending commands
|
||||
*/
|
||||
void Epd::SendCommand(unsigned char command) {
|
||||
DigitalWrite(dc_pin, LOW);
|
||||
SpiTransfer(command);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: basic function for sending data
|
||||
*/
|
||||
void Epd::SendData(unsigned char data) {
|
||||
DigitalWrite(dc_pin, HIGH);
|
||||
SpiTransfer(data);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: Wait until the busy_pin goes LOW
|
||||
*/
|
||||
void Epd::WaitUntilIdle(void) {
|
||||
while(DigitalRead(busy_pin) == HIGH) { //LOW: idle, HIGH: busy
|
||||
DelayMs(100);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: module reset.
|
||||
* often used to awaken the module in deep sleep,
|
||||
* see Epd::Sleep();
|
||||
*/
|
||||
void Epd::Reset(void) {
|
||||
DigitalWrite(reset_pin, LOW); //module reset
|
||||
DelayMs(200);
|
||||
DigitalWrite(reset_pin, HIGH);
|
||||
DelayMs(200);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: set the look-up table register
|
||||
*/
|
||||
void Epd::SetLut(const unsigned char* lut) {
|
||||
this->lut = lut;
|
||||
SendCommand(WRITE_LUT_REGISTER);
|
||||
/* the length of look-up table is 30 bytes */
|
||||
for (int i = 0; i < 30; i++) {
|
||||
SendData(this->lut[i]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: put an image buffer to the frame memory.
|
||||
* this won't update the display.
|
||||
*/
|
||||
void Epd::SetFrameMemory(
|
||||
const unsigned char* image_buffer,
|
||||
int x,
|
||||
int y,
|
||||
int image_width,
|
||||
int image_height
|
||||
) {
|
||||
int x_end;
|
||||
int y_end;
|
||||
|
||||
if (
|
||||
image_buffer == NULL ||
|
||||
x < 0 || image_width < 0 ||
|
||||
y < 0 || image_height < 0
|
||||
) {
|
||||
return;
|
||||
}
|
||||
/* x point must be the multiple of 8 or the last 3 bits will be ignored */
|
||||
x &= 0xF8;
|
||||
image_width &= 0xF8;
|
||||
if (x + image_width >= this->width) {
|
||||
x_end = this->width - 1;
|
||||
} else {
|
||||
x_end = x + image_width - 1;
|
||||
}
|
||||
if (y + image_height >= this->height) {
|
||||
y_end = this->height - 1;
|
||||
} else {
|
||||
y_end = y + image_height - 1;
|
||||
}
|
||||
SetMemoryArea(x, y, x_end, y_end);
|
||||
/* set the frame memory line by line */
|
||||
for (int j = y; j <= y_end; j++) {
|
||||
SetMemoryPointer(x, j);
|
||||
SendCommand(WRITE_RAM);
|
||||
for (int i = x / 8; i <= x_end / 8; i++) {
|
||||
SendData(image_buffer[(i - x / 8) + (j - y) * (image_width / 8)]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: put an image buffer to the frame memory.
|
||||
* this won't update the display.
|
||||
*
|
||||
* Question: When do you use this function instead of
|
||||
* void SetFrameMemory(
|
||||
* const unsigned char* image_buffer,
|
||||
* int x,
|
||||
* int y,
|
||||
* int image_width,
|
||||
* int image_height
|
||||
* );
|
||||
* Answer: SetFrameMemory with parameters only reads image data
|
||||
* from the RAM but not from the flash in AVR chips (for AVR chips,
|
||||
* you have to use the function pgm_read_byte to read buffers
|
||||
* from the flash).
|
||||
*/
|
||||
void Epd::SetFrameMemory(const unsigned char* image_buffer) {
|
||||
SetMemoryArea(0, 0, this->width - 1, this->height - 1);
|
||||
/* set the frame memory line by line */
|
||||
for (int j = 0; j < this->height; j++) {
|
||||
SetMemoryPointer(0, j);
|
||||
SendCommand(WRITE_RAM);
|
||||
for (int i = 0; i < this->width / 8; i++) {
|
||||
SendData(pgm_read_byte(&image_buffer[i + j * (this->width / 8)]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: clear the frame memory with the specified color.
|
||||
* this won't update the display.
|
||||
*/
|
||||
void Epd::ClearFrameMemory(unsigned char color) {
|
||||
SetMemoryArea(0, 0, this->width - 1, this->height - 1);
|
||||
/* set the frame memory line by line */
|
||||
for (int j = 0; j < this->height; j++) {
|
||||
SetMemoryPointer(0, j);
|
||||
SendCommand(WRITE_RAM);
|
||||
for (int i = 0; i < this->width / 8; i++) {
|
||||
SendData(color);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: update the display
|
||||
* there are 2 memory areas embedded in the e-paper display
|
||||
* but once this function is called,
|
||||
* the the next action of SetFrameMemory or ClearFrame will
|
||||
* set the other memory area.
|
||||
*/
|
||||
void Epd::DisplayFrame(void) {
|
||||
SendCommand(DISPLAY_UPDATE_CONTROL_2);
|
||||
SendData(0xC4);
|
||||
SendCommand(MASTER_ACTIVATION);
|
||||
SendCommand(TERMINATE_FRAME_READ_WRITE);
|
||||
WaitUntilIdle();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: private function to specify the memory area for data R/W
|
||||
*/
|
||||
void Epd::SetMemoryArea(int x_start, int y_start, int x_end, int y_end) {
|
||||
SendCommand(SET_RAM_X_ADDRESS_START_END_POSITION);
|
||||
/* x point must be the multiple of 8 or the last 3 bits will be ignored */
|
||||
SendData((x_start >> 3) & 0xFF);
|
||||
SendData((x_end >> 3) & 0xFF);
|
||||
SendCommand(SET_RAM_Y_ADDRESS_START_END_POSITION);
|
||||
SendData(y_start & 0xFF);
|
||||
SendData((y_start >> 8) & 0xFF);
|
||||
SendData(y_end & 0xFF);
|
||||
SendData((y_end >> 8) & 0xFF);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: private function to specify the start point for data R/W
|
||||
*/
|
||||
void Epd::SetMemoryPointer(int x, int y) {
|
||||
SendCommand(SET_RAM_X_ADDRESS_COUNTER);
|
||||
/* x point must be the multiple of 8 or the last 3 bits will be ignored */
|
||||
SendData((x >> 3) & 0xFF);
|
||||
SendCommand(SET_RAM_Y_ADDRESS_COUNTER);
|
||||
SendData(y & 0xFF);
|
||||
SendData((y >> 8) & 0xFF);
|
||||
WaitUntilIdle();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: After this command is transmitted, the chip would enter the
|
||||
* deep-sleep mode to save power.
|
||||
* The deep sleep mode would return to standby by hardware reset.
|
||||
* You can use Epd::Init() to awaken
|
||||
*/
|
||||
void Epd::Sleep() {
|
||||
SendCommand(DEEP_SLEEP_MODE);
|
||||
WaitUntilIdle();
|
||||
}
|
||||
|
||||
const unsigned char lut_full_update[] =
|
||||
{
|
||||
0x22, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x11,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E,
|
||||
0x01, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
const unsigned char lut_partial_update[] =
|
||||
{
|
||||
0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
|
||||
/* END OF FILE */
|
||||
|
||||
|
||||
102
Arduino/epd2in13/epd2in13.h
Normal file
102
Arduino/epd2in13/epd2in13.h
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
/**
|
||||
* @filename : epd2in13.h
|
||||
* @brief : Header file for e-paper display library epd2in13.cpp
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare September 9 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef EPD2IN13_H
|
||||
#define EPD2IN13_H
|
||||
|
||||
#include "epdif.h"
|
||||
|
||||
// Display resolution
|
||||
/* the resolution is 122x250 in fact */
|
||||
/* however, the logical resolution is 128x250 */
|
||||
#define EPD_WIDTH 128
|
||||
#define EPD_HEIGHT 250
|
||||
|
||||
// EPD2IN13 commands
|
||||
#define DRIVER_OUTPUT_CONTROL 0x01
|
||||
#define BOOSTER_SOFT_START_CONTROL 0x0C
|
||||
#define GATE_SCAN_START_POSITION 0x0F
|
||||
#define DEEP_SLEEP_MODE 0x10
|
||||
#define DATA_ENTRY_MODE_SETTING 0x11
|
||||
#define SW_RESET 0x12
|
||||
#define TEMPERATURE_SENSOR_CONTROL 0x1A
|
||||
#define MASTER_ACTIVATION 0x20
|
||||
#define DISPLAY_UPDATE_CONTROL_1 0x21
|
||||
#define DISPLAY_UPDATE_CONTROL_2 0x22
|
||||
#define WRITE_RAM 0x24
|
||||
#define WRITE_VCOM_REGISTER 0x2C
|
||||
#define WRITE_LUT_REGISTER 0x32
|
||||
#define SET_DUMMY_LINE_PERIOD 0x3A
|
||||
#define SET_GATE_TIME 0x3B
|
||||
#define BORDER_WAVEFORM_CONTROL 0x3C
|
||||
#define SET_RAM_X_ADDRESS_START_END_POSITION 0x44
|
||||
#define SET_RAM_Y_ADDRESS_START_END_POSITION 0x45
|
||||
#define SET_RAM_X_ADDRESS_COUNTER 0x4E
|
||||
#define SET_RAM_Y_ADDRESS_COUNTER 0x4F
|
||||
#define TERMINATE_FRAME_READ_WRITE 0xFF
|
||||
|
||||
extern const unsigned char lut_full_update[];
|
||||
extern const unsigned char lut_partial_update[];
|
||||
|
||||
class Epd : EpdIf {
|
||||
public:
|
||||
unsigned long width;
|
||||
unsigned long height;
|
||||
|
||||
Epd();
|
||||
~Epd();
|
||||
int Init(const unsigned char* lut);
|
||||
void SendCommand(unsigned char command);
|
||||
void SendData(unsigned char data);
|
||||
void WaitUntilIdle(void);
|
||||
void Reset(void);
|
||||
void SetFrameMemory(
|
||||
const unsigned char* image_buffer,
|
||||
int x,
|
||||
int y,
|
||||
int image_width,
|
||||
int image_height
|
||||
);
|
||||
void SetFrameMemory(const unsigned char* image_buffer);
|
||||
void ClearFrameMemory(unsigned char color);
|
||||
void DisplayFrame(void);
|
||||
void Sleep(void);
|
||||
|
||||
private:
|
||||
unsigned int reset_pin;
|
||||
unsigned int dc_pin;
|
||||
unsigned int cs_pin;
|
||||
unsigned int busy_pin;
|
||||
const unsigned char* lut;
|
||||
|
||||
void SetLut(const unsigned char* lut);
|
||||
void SetMemoryArea(int x_start, int y_start, int x_end, int y_end);
|
||||
void SetMemoryPointer(int x, int y);
|
||||
};
|
||||
|
||||
#endif /* EPD2IN13_H */
|
||||
|
||||
/* END OF FILE */
|
||||
132
Arduino/epd2in13/epd2in13.ino
Normal file
132
Arduino/epd2in13/epd2in13.ino
Normal file
|
|
@ -0,0 +1,132 @@
|
|||
/**
|
||||
* @filename : epd2in13-demo.ino
|
||||
* @brief : 2.13inch e-paper display demo
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare September 9 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <SPI.h>
|
||||
#include "epd2in13.h"
|
||||
#include "epdpaint.h"
|
||||
#include "imagedata.h"
|
||||
|
||||
#define COLORED 0
|
||||
#define UNCOLORED 1
|
||||
|
||||
/**
|
||||
* Due to RAM not enough in Arduino UNO, a frame buffer is not allowed.
|
||||
* In this case, a smaller image buffer is allocated and you have to
|
||||
* update a partial display several times.
|
||||
* 1 byte = 8 pixels, therefore you have to set 8*N pixels at a time.
|
||||
*/
|
||||
unsigned char image[1024];
|
||||
Paint paint(image, 0, 0);
|
||||
Epd epd;
|
||||
unsigned long time_start_ms;
|
||||
unsigned long time_now_s;
|
||||
|
||||
void setup() {
|
||||
// put your setup code here, to run once:
|
||||
Serial.begin(9600);
|
||||
if (epd.Init(lut_full_update) != 0) {
|
||||
Serial.print("e-Paper init failed");
|
||||
return;
|
||||
}
|
||||
|
||||
epd.ClearFrameMemory(0xFF); // bit set = white, bit reset = black
|
||||
|
||||
paint.SetRotate(ROTATE_0);
|
||||
paint.SetWidth(128); // width should be the multiple of 8
|
||||
paint.SetHeight(24);
|
||||
|
||||
/* For simplicity, the arguments are explicit numerical coordinates */
|
||||
paint.Clear(COLORED);
|
||||
paint.DrawStringAt(30, 4, "Hello world!", &Font12, UNCOLORED);
|
||||
epd.SetFrameMemory(paint.GetImage(), 0, 10, paint.GetWidth(), paint.GetHeight());
|
||||
|
||||
paint.Clear(UNCOLORED);
|
||||
paint.DrawStringAt(30, 4, "e-Paper Demo", &Font12, COLORED);
|
||||
epd.SetFrameMemory(paint.GetImage(), 0, 30, paint.GetWidth(), paint.GetHeight());
|
||||
|
||||
paint.SetWidth(64);
|
||||
paint.SetHeight(64);
|
||||
|
||||
paint.Clear(UNCOLORED);
|
||||
paint.DrawRectangle(0, 0, 40, 50, COLORED);
|
||||
paint.DrawLine(0, 0, 40, 50, COLORED);
|
||||
paint.DrawLine(40, 0, 0, 50, COLORED);
|
||||
epd.SetFrameMemory(paint.GetImage(), 16, 60, paint.GetWidth(), paint.GetHeight());
|
||||
|
||||
paint.Clear(UNCOLORED);
|
||||
paint.DrawCircle(32, 32, 30, COLORED);
|
||||
epd.SetFrameMemory(paint.GetImage(), 72, 60, paint.GetWidth(), paint.GetHeight());
|
||||
|
||||
paint.Clear(UNCOLORED);
|
||||
paint.DrawFilledRectangle(0, 0, 40, 50, COLORED);
|
||||
epd.SetFrameMemory(paint.GetImage(), 16, 130, paint.GetWidth(), paint.GetHeight());
|
||||
|
||||
paint.Clear(UNCOLORED);
|
||||
paint.DrawFilledCircle(32, 32, 30, COLORED);
|
||||
epd.SetFrameMemory(paint.GetImage(), 72, 130, paint.GetWidth(), paint.GetHeight());
|
||||
epd.DisplayFrame();
|
||||
|
||||
delay(2000);
|
||||
|
||||
if (epd.Init(lut_partial_update) != 0) {
|
||||
Serial.print("e-Paper init failed");
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* there are 2 memory areas embedded in the e-paper display
|
||||
* and once the display is refreshed, the memory area will be auto-toggled,
|
||||
* i.e. the next action of SetFrameMemory will set the other memory area
|
||||
* therefore you have to set the frame memory and refresh the display twice.
|
||||
*/
|
||||
epd.SetFrameMemory(IMAGE_DATA);
|
||||
epd.DisplayFrame();
|
||||
epd.SetFrameMemory(IMAGE_DATA);
|
||||
epd.DisplayFrame();
|
||||
|
||||
time_start_ms = millis();
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// put your main code here, to run repeatedly:
|
||||
time_now_s = (millis() - time_start_ms) / 1000;
|
||||
char time_string[] = {'0', '0', ':', '0', '0', '\0'};
|
||||
time_string[0] = time_now_s / 60 / 10 + '0';
|
||||
time_string[1] = time_now_s / 60 % 10 + '0';
|
||||
time_string[3] = time_now_s % 60 / 10 + '0';
|
||||
time_string[4] = time_now_s % 60 % 10 + '0';
|
||||
|
||||
paint.SetWidth(32);
|
||||
paint.SetHeight(96);
|
||||
paint.SetRotate(ROTATE_90);
|
||||
|
||||
paint.Clear(UNCOLORED);
|
||||
paint.DrawStringAt(0, 4, time_string, &Font24, COLORED);
|
||||
epd.SetFrameMemory(paint.GetImage(), 80, 72, paint.GetWidth(), paint.GetHeight());
|
||||
epd.DisplayFrame();
|
||||
|
||||
delay(500);
|
||||
}
|
||||
64
Arduino/epd2in13/epdif.cpp
Normal file
64
Arduino/epd2in13/epdif.cpp
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
/**
|
||||
* @filename : epdif.cpp
|
||||
* @brief : Implements EPD interface functions
|
||||
* Users have to implement all the functions in epdif.cpp
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare August 10 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "epdif.h"
|
||||
#include <SPI.h>
|
||||
|
||||
EpdIf::EpdIf() {
|
||||
};
|
||||
|
||||
EpdIf::~EpdIf() {
|
||||
};
|
||||
|
||||
void EpdIf::DigitalWrite(int pin, int value) {
|
||||
digitalWrite(pin, value);
|
||||
}
|
||||
|
||||
int EpdIf::DigitalRead(int pin) {
|
||||
return digitalRead(pin);
|
||||
}
|
||||
|
||||
void EpdIf::DelayMs(unsigned int delaytime) {
|
||||
delay(delaytime);
|
||||
}
|
||||
|
||||
void EpdIf::SpiTransfer(unsigned char data) {
|
||||
digitalWrite(CS_PIN, LOW);
|
||||
SPI.transfer(data);
|
||||
digitalWrite(CS_PIN, HIGH);
|
||||
}
|
||||
|
||||
int EpdIf::IfInit(void) {
|
||||
pinMode(CS_PIN, OUTPUT);
|
||||
pinMode(RST_PIN, OUTPUT);
|
||||
pinMode(DC_PIN, OUTPUT);
|
||||
pinMode(BUSY_PIN, INPUT);
|
||||
SPI.begin();
|
||||
SPI.beginTransaction(SPISettings(2000000, MSBFIRST, SPI_MODE0));
|
||||
return 0;
|
||||
}
|
||||
|
||||
51
Arduino/epd2in13/epdif.h
Normal file
51
Arduino/epd2in13/epdif.h
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
/**
|
||||
* @filename : epdif.h
|
||||
* @brief : Header file of epdif.cpp providing EPD interface functions
|
||||
* Users have to implement all the functions in epdif.cpp
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare August 10 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef EPDIF_H
|
||||
#define EPDIF_H
|
||||
|
||||
#include <Arduino.h>
|
||||
|
||||
// Pin definition
|
||||
#define RST_PIN 8
|
||||
#define DC_PIN 9
|
||||
#define CS_PIN 10
|
||||
#define BUSY_PIN 7
|
||||
|
||||
class EpdIf {
|
||||
public:
|
||||
EpdIf(void);
|
||||
~EpdIf(void);
|
||||
|
||||
static int IfInit(void);
|
||||
static void DigitalWrite(int pin, int value);
|
||||
static int DigitalRead(int pin);
|
||||
static void DelayMs(unsigned int delaytime);
|
||||
static void SpiTransfer(unsigned char data);
|
||||
};
|
||||
|
||||
#endif
|
||||
342
Arduino/epd2in13/epdpaint.cpp
Normal file
342
Arduino/epd2in13/epdpaint.cpp
Normal file
|
|
@ -0,0 +1,342 @@
|
|||
/**
|
||||
* @filename : epdpaint.cpp
|
||||
* @brief : Paint tools
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare September 9 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <avr/pgmspace.h>
|
||||
#include "epdpaint.h"
|
||||
|
||||
Paint::Paint(unsigned char* image, int width, int height) {
|
||||
this->rotate = ROTATE_0;
|
||||
this->image = image;
|
||||
/* 1 byte = 8 pixels, so the width should be the multiple of 8 */
|
||||
this->width = width % 8 ? width + 8 - (width % 8) : width;
|
||||
this->height = height;
|
||||
}
|
||||
|
||||
Paint::~Paint() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: clear the image
|
||||
*/
|
||||
void Paint::Clear(int colored) {
|
||||
for (int x = 0; x < this->width; x++) {
|
||||
for (int y = 0; y < this->height; y++) {
|
||||
DrawAbsolutePixel(x, y, colored);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a pixel by absolute coordinates.
|
||||
* this function won't be affected by the rotate parameter.
|
||||
*/
|
||||
void Paint::DrawAbsolutePixel(int x, int y, int colored) {
|
||||
if (x < 0 || x >= this->width || y < 0 || y >= this->height) {
|
||||
return;
|
||||
}
|
||||
if (IF_INVERT_COLOR) {
|
||||
if (colored) {
|
||||
image[(x + y * this->width) / 8] |= 0x80 >> (x % 8);
|
||||
} else {
|
||||
image[(x + y * this->width) / 8] &= ~(0x80 >> (x % 8));
|
||||
}
|
||||
} else {
|
||||
if (colored) {
|
||||
image[(x + y * this->width) / 8] &= ~(0x80 >> (x % 8));
|
||||
} else {
|
||||
image[(x + y * this->width) / 8] |= 0x80 >> (x % 8);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: Getters and Setters
|
||||
*/
|
||||
unsigned char* Paint::GetImage(void) {
|
||||
return this->image;
|
||||
}
|
||||
|
||||
int Paint::GetWidth(void) {
|
||||
return this->width;
|
||||
}
|
||||
|
||||
void Paint::SetWidth(int width) {
|
||||
this->width = width % 8 ? width + 8 - (width % 8) : width;
|
||||
}
|
||||
|
||||
int Paint::GetHeight(void) {
|
||||
return this->height;
|
||||
}
|
||||
|
||||
void Paint::SetHeight(int height) {
|
||||
this->height = height;
|
||||
}
|
||||
|
||||
int Paint::GetRotate(void) {
|
||||
return this->rotate;
|
||||
}
|
||||
|
||||
void Paint::SetRotate(int rotate){
|
||||
this->rotate = rotate;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a pixel by the coordinates
|
||||
*/
|
||||
void Paint::DrawPixel(int x, int y, int colored) {
|
||||
int point_temp;
|
||||
if (this->rotate == ROTATE_0) {
|
||||
if(x < 0 || x >= this->width || y < 0 || y >= this->height) {
|
||||
return;
|
||||
}
|
||||
DrawAbsolutePixel(x, y, colored);
|
||||
} else if (this->rotate == ROTATE_90) {
|
||||
if(x < 0 || x >= this->height || y < 0 || y >= this->width) {
|
||||
return;
|
||||
}
|
||||
point_temp = x;
|
||||
x = this->width - y;
|
||||
y = point_temp;
|
||||
DrawAbsolutePixel(x, y, colored);
|
||||
} else if (this->rotate == ROTATE_180) {
|
||||
if(x < 0 || x >= this->width || y < 0 || y >= this->height) {
|
||||
return;
|
||||
}
|
||||
x = this->width - x;
|
||||
y = this->height - y;
|
||||
DrawAbsolutePixel(x, y, colored);
|
||||
} else if (this->rotate == ROTATE_270) {
|
||||
if(x < 0 || x >= this->height || y < 0 || y >= this->width) {
|
||||
return;
|
||||
}
|
||||
point_temp = x;
|
||||
x = y;
|
||||
y = this->height - point_temp;
|
||||
DrawAbsolutePixel(x, y, colored);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a charactor on the frame buffer but not refresh
|
||||
*/
|
||||
void Paint::DrawCharAt(int x, int y, char ascii_char, sFONT* font, int colored) {
|
||||
int i, j;
|
||||
unsigned int char_offset = (ascii_char - ' ') * font->Height * (font->Width / 8 + (font->Width % 8 ? 1 : 0));
|
||||
const unsigned char* ptr = &font->table[char_offset];
|
||||
|
||||
for (j = 0; j < font->Height; j++) {
|
||||
for (i = 0; i < font->Width; i++) {
|
||||
if (pgm_read_byte(ptr) & (0x80 >> (i % 8))) {
|
||||
DrawPixel(x + i, y + j, colored);
|
||||
}
|
||||
if (i % 8 == 7) {
|
||||
ptr++;
|
||||
}
|
||||
}
|
||||
if (font->Width % 8 != 0) {
|
||||
ptr++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this displays a string on the frame buffer but not refresh
|
||||
*/
|
||||
void Paint::DrawStringAt(int x, int y, const char* text, sFONT* font, int colored) {
|
||||
const char* p_text = text;
|
||||
unsigned int counter = 0;
|
||||
int refcolumn = x;
|
||||
|
||||
/* Send the string character by character on EPD */
|
||||
while (*p_text != 0) {
|
||||
/* Display one character on EPD */
|
||||
DrawCharAt(refcolumn, y, *p_text, font, colored);
|
||||
/* Decrement the column position by 16 */
|
||||
refcolumn += font->Width;
|
||||
/* Point on the next character */
|
||||
p_text++;
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a line on the frame buffer
|
||||
*/
|
||||
void Paint::DrawLine(int x0, int y0, int x1, int y1, int colored) {
|
||||
/* Bresenham algorithm */
|
||||
int dx = x1 - x0 >= 0 ? x1 - x0 : x0 - x1;
|
||||
int sx = x0 < x1 ? 1 : -1;
|
||||
int dy = y1 - y0 <= 0 ? y1 - y0 : y0 - y1;
|
||||
int sy = y0 < y1 ? 1 : -1;
|
||||
int err = dx + dy;
|
||||
|
||||
while((x0 != x1) && (y0 != y1)) {
|
||||
DrawPixel(x0, y0 , colored);
|
||||
if (2 * err >= dy) {
|
||||
err += dy;
|
||||
x0 += sx;
|
||||
}
|
||||
if (2 * err <= dx) {
|
||||
err += dx;
|
||||
y0 += sy;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a horizontal line on the frame buffer
|
||||
*/
|
||||
void Paint::DrawHorizontalLine(int x, int y, int line_width, int colored) {
|
||||
int i;
|
||||
for (i = x; i < x + line_width; i++) {
|
||||
DrawPixel(i, y, colored);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a vertical line on the frame buffer
|
||||
*/
|
||||
void Paint::DrawVerticalLine(int x, int y, int line_height, int colored) {
|
||||
int i;
|
||||
for (i = y; i < y + line_height; i++) {
|
||||
DrawPixel(x, i, colored);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a rectangle
|
||||
*/
|
||||
void Paint::DrawRectangle(int x0, int y0, int x1, int y1, int colored) {
|
||||
int min_x, min_y, max_x, max_y;
|
||||
min_x = x1 > x0 ? x0 : x1;
|
||||
max_x = x1 > x0 ? x1 : x0;
|
||||
min_y = y1 > y0 ? y0 : y1;
|
||||
max_y = y1 > y0 ? y1 : y0;
|
||||
|
||||
DrawHorizontalLine(min_x, min_y, max_x - min_x + 1, colored);
|
||||
DrawHorizontalLine(min_x, max_y, max_x - min_x + 1, colored);
|
||||
DrawVerticalLine(min_x, min_y, max_y - min_y + 1, colored);
|
||||
DrawVerticalLine(max_x, min_y, max_y - min_y + 1, colored);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a filled rectangle
|
||||
*/
|
||||
void Paint::DrawFilledRectangle(int x0, int y0, int x1, int y1, int colored) {
|
||||
int min_x, min_y, max_x, max_y;
|
||||
int i;
|
||||
min_x = x1 > x0 ? x0 : x1;
|
||||
max_x = x1 > x0 ? x1 : x0;
|
||||
min_y = y1 > y0 ? y0 : y1;
|
||||
max_y = y1 > y0 ? y1 : y0;
|
||||
|
||||
for (i = min_x; i <= max_x; i++) {
|
||||
DrawVerticalLine(i, min_y, max_y - min_y + 1, colored);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a circle
|
||||
*/
|
||||
void Paint::DrawCircle(int x, int y, int radius, int colored) {
|
||||
/* Bresenham algorithm */
|
||||
int x_pos = -radius;
|
||||
int y_pos = 0;
|
||||
int err = 2 - 2 * radius;
|
||||
int e2;
|
||||
|
||||
do {
|
||||
DrawPixel(x - x_pos, y + y_pos, colored);
|
||||
DrawPixel(x + x_pos, y + y_pos, colored);
|
||||
DrawPixel(x + x_pos, y - y_pos, colored);
|
||||
DrawPixel(x - x_pos, y - y_pos, colored);
|
||||
e2 = err;
|
||||
if (e2 <= y_pos) {
|
||||
err += ++y_pos * 2 + 1;
|
||||
if(-x_pos == y_pos && e2 <= x_pos) {
|
||||
e2 = 0;
|
||||
}
|
||||
}
|
||||
if (e2 > x_pos) {
|
||||
err += ++x_pos * 2 + 1;
|
||||
}
|
||||
} while (x_pos <= 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a filled circle
|
||||
*/
|
||||
void Paint::DrawFilledCircle(int x, int y, int radius, int colored) {
|
||||
/* Bresenham algorithm */
|
||||
int x_pos = -radius;
|
||||
int y_pos = 0;
|
||||
int err = 2 - 2 * radius;
|
||||
int e2;
|
||||
|
||||
do {
|
||||
DrawPixel(x - x_pos, y + y_pos, colored);
|
||||
DrawPixel(x + x_pos, y + y_pos, colored);
|
||||
DrawPixel(x + x_pos, y - y_pos, colored);
|
||||
DrawPixel(x - x_pos, y - y_pos, colored);
|
||||
DrawHorizontalLine(x + x_pos, y + y_pos, 2 * (-x_pos) + 1, colored);
|
||||
DrawHorizontalLine(x + x_pos, y - y_pos, 2 * (-x_pos) + 1, colored);
|
||||
e2 = err;
|
||||
if (e2 <= y_pos) {
|
||||
err += ++y_pos * 2 + 1;
|
||||
if(-x_pos == y_pos && e2 <= x_pos) {
|
||||
e2 = 0;
|
||||
}
|
||||
}
|
||||
if(e2 > x_pos) {
|
||||
err += ++x_pos * 2 + 1;
|
||||
}
|
||||
} while(x_pos <= 0);
|
||||
}
|
||||
|
||||
/* END OF FILE */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
75
Arduino/epd2in13/epdpaint.h
Normal file
75
Arduino/epd2in13/epdpaint.h
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
/**
|
||||
* @filename : epdpaint.h
|
||||
* @brief : Header file for epdpaint.cpp
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare July 28 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef EPDPAINT_H
|
||||
#define EPDPAINT_H
|
||||
|
||||
// Display orientation
|
||||
#define ROTATE_0 0
|
||||
#define ROTATE_90 1
|
||||
#define ROTATE_180 2
|
||||
#define ROTATE_270 3
|
||||
|
||||
// Color inverse. 1 or 0 = set or reset a bit if set a colored pixel
|
||||
#define IF_INVERT_COLOR 1
|
||||
|
||||
#include "fonts.h"
|
||||
|
||||
class Paint {
|
||||
public:
|
||||
Paint(unsigned char* image, int width, int height);
|
||||
~Paint();
|
||||
void Clear(int colored);
|
||||
int GetWidth(void);
|
||||
void SetWidth(int width);
|
||||
int GetHeight(void);
|
||||
void SetHeight(int height);
|
||||
int GetRotate(void);
|
||||
void SetRotate(int rotate);
|
||||
unsigned char* GetImage(void);
|
||||
void DrawAbsolutePixel(int x, int y, int colored);
|
||||
void DrawPixel(int x, int y, int colored);
|
||||
void DrawCharAt(int x, int y, char ascii_char, sFONT* font, int colored);
|
||||
void DrawStringAt(int x, int y, const char* text, sFONT* font, int colored);
|
||||
void DrawLine(int x0, int y0, int x1, int y1, int colored);
|
||||
void DrawHorizontalLine(int x, int y, int width, int colored);
|
||||
void DrawVerticalLine(int x, int y, int height, int colored);
|
||||
void DrawRectangle(int x0, int y0, int x1, int y1, int colored);
|
||||
void DrawFilledRectangle(int x0, int y0, int x1, int y1, int colored);
|
||||
void DrawCircle(int x, int y, int radius, int colored);
|
||||
void DrawFilledCircle(int x, int y, int radius, int colored);
|
||||
|
||||
private:
|
||||
unsigned char* image;
|
||||
int width;
|
||||
int height;
|
||||
int rotate;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
/* END OF FILE */
|
||||
|
||||
1385
Arduino/epd2in13/font12.cpp
Normal file
1385
Arduino/epd2in13/font12.cpp
Normal file
File diff suppressed because it is too large
Load diff
1765
Arduino/epd2in13/font16.cpp
Normal file
1765
Arduino/epd2in13/font16.cpp
Normal file
File diff suppressed because it is too large
Load diff
2143
Arduino/epd2in13/font20.cpp
Normal file
2143
Arduino/epd2in13/font20.cpp
Normal file
File diff suppressed because it is too large
Load diff
2521
Arduino/epd2in13/font24.cpp
Normal file
2521
Arduino/epd2in13/font24.cpp
Normal file
File diff suppressed because it is too large
Load diff
1005
Arduino/epd2in13/font8.cpp
Normal file
1005
Arduino/epd2in13/font8.cpp
Normal file
File diff suppressed because it is too large
Load diff
65
Arduino/epd2in13/fonts.h
Normal file
65
Arduino/epd2in13/fonts.h
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* @file fonts.h
|
||||
* @author MCD Application Team
|
||||
* @version V1.0.0
|
||||
* @date 18-February-2014
|
||||
* @brief Header for fonts.c file
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <h2><center>© COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of STMicroelectronics nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef __FONTS_H
|
||||
#define __FONTS_H
|
||||
|
||||
/* Max size of bitmap will based on a font24 (17x24) */
|
||||
#define MAX_HEIGHT_FONT 24
|
||||
#define MAX_WIDTH_FONT 17
|
||||
#define OFFSET_BITMAP 54
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include <stdint.h>
|
||||
|
||||
struct sFONT {
|
||||
const uint8_t *table;
|
||||
uint16_t Width;
|
||||
uint16_t Height;
|
||||
};
|
||||
|
||||
extern sFONT Font24;
|
||||
extern sFONT Font20;
|
||||
extern sFONT Font16;
|
||||
extern sFONT Font12;
|
||||
extern sFONT Font8;
|
||||
|
||||
#endif /* __FONTS_H */
|
||||
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
281
Arduino/epd2in13/imagedata.cpp
Normal file
281
Arduino/epd2in13/imagedata.cpp
Normal file
|
|
@ -0,0 +1,281 @@
|
|||
/**
|
||||
* @filename : imagedata.cpp
|
||||
* @brief : data file for epd demo
|
||||
*
|
||||
* Copyright (C) Waveshare September 5 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "imagedata.h"
|
||||
#include <avr/pgmspace.h>
|
||||
|
||||
const unsigned char IMAGE_DATA[] PROGMEM = {
|
||||
/* 0X00,0X01,0X80,0X00,0XFA,0X00, */
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X38,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0X00,0X00,0X78,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0X80,0X00,0XF8,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XC0,0X03,0XF8,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X01,0X00,0X00,0X00,0X00,0X01,0XFF,0XE0,0X1F,0XF8,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0XC0,0X00,0X00,0X00,0X03,0XFF,0X70,0X1F,0XF0,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X7E,0X00,0X00,0X00,0X03,0XFF,0X78,0X38,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X3F,0X00,0X00,0X00,0X03,0XFF,0XF8,0XF0,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X03,0XF0,0XF8,0XC1,0XF8,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X03,0XF0,0X00,0X00,0X03,0XF3,0XF3,0X8F,0XFE,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X01,0XF8,0X00,0X00,0X03,0XFF,0XF3,0XBF,0XFF,0XC0,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X3E,0X00,0X00,0X03,0XFF,0XFA,0X7F,0XFF,0XF0,0X00,0X00,
|
||||
0X00,0X0F,0X00,0X00,0X00,0X3F,0XE0,0X00,0X00,0XE7,0XFB,0XFF,0XFF,0XF0,0X00,0X00,
|
||||
0X00,0X07,0X00,0X00,0X00,0X3F,0XF0,0X00,0X00,0XE7,0XFB,0XFF,0XFF,0XE0,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X1F,0XFC,0X00,0X00,0XFF,0XFB,0XFF,0XFF,0XE0,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X0F,0XFE,0X00,0X00,0X7F,0XFB,0XCF,0XFF,0XE0,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X03,0XFE,0X00,0X00,0X3F,0XF9,0XCF,0XFF,0XE0,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X01,0XFF,0X80,0X00,0X0F,0XF1,0XFF,0XFF,0XE0,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0XFF,0XC0,0X00,0X00,0X3D,0XEF,0XFF,0XE0,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0X7F,0XE0,0X00,0X03,0XFF,0XF7,0XFF,0XC0,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0X3F,0XE0,0X00,0X3F,0XFF,0XFF,0XFF,0X80,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0X1F,0XE0,0X00,0X7E,0XFF,0XFF,0XFF,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0X0F,0XE0,0X00,0X3E,0XFF,0XF1,0XFF,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0X0F,0XE0,0X00,0X3F,0XFF,0XBF,0XFC,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0X07,0XF0,0X00,0X3E,0X7F,0X3F,0XF8,0X38,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0X07,0XF0,0X00,0X7E,0X7F,0XC0,0X00,0X7C,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0X07,0XF0,0X00,0X7E,0X3F,0XC0,0X01,0XFE,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0X07,0XF0,0X00,0X7F,0X1F,0XDF,0XFF,0XFF,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0X03,0XF0,0X00,0X7F,0X87,0XEF,0XFF,0XFF,0X80,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0X03,0XF0,0X00,0X7F,0XE3,0XF1,0XFF,0XFF,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0X03,0XF0,0X01,0X87,0XFC,0X78,0XFE,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0X03,0XF0,0X03,0X01,0XF8,0XFF,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0X03,0XF0,0X0E,0X00,0X01,0XFF,0X80,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0X03,0XF0,0X0C,0X00,0X03,0XFF,0X80,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0X03,0XF0,0X1C,0X00,0X0F,0X98,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0X03,0XF0,0X38,0X00,0X7F,0X9C,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0X03,0XF0,0X30,0X00,0X3F,0XDC,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X07,0XFE,0X07,0XE0,0X30,0X00,0X1F,0XFE,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X0F,0XFF,0X87,0XF0,0X70,0X00,0X1F,0XFC,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X1F,0XFF,0XC7,0XF0,0X00,0X00,0X0F,0XFE,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X3F,0XFF,0XE7,0XE0,0X00,0X00,0X0F,0XF0,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X7F,0XFF,0XF3,0XE0,0X7F,0XFF,0XEF,0XE0,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0XFF,0X9F,0XFB,0XCF,0XFF,0XFF,0XC6,0X18,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X03,0XFF,0XCF,0XF9,0XDF,0XFF,0XFF,0XC0,0X08,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X0E,0XFF,0XDF,0XFD,0XFF,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X01,0XF0,0XFF,0XFF,0XFD,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X03,0XF8,0XFF,0XFF,0XFD,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X07,0XFC,0XFF,0XDF,0XFD,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X0F,0XFE,0XC7,0XDF,0XFD,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X3E,0X7F,0XF7,0XDF,0XFF,0XFE,0X30,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X3E,0X7F,0XF7,0XDF,0XCF,0XF0,0X38,0X00,0X06,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X7E,0X7F,0XFF,0XFF,0X9F,0XE0,0X38,0X00,0X1F,0XC0,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X7F,0X1F,0XFF,0XFE,0X3E,0X00,0X3C,0X00,0X3B,0XE0,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X7F,0X8F,0XFF,0XFE,0X7C,0X00,0X3C,0X00,0X3B,0XE0,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X7F,0X87,0XFE,0X3F,0XF8,0X00,0X3C,0X00,0X7F,0XF0,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X7F,0XA1,0XF8,0X1F,0XFC,0X00,0X1C,0X00,0X7C,0XF0,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X3F,0XFF,0XF0,0X0F,0XFC,0X00,0X0C,0X00,0X7E,0X7C,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X3F,0XFF,0XF0,0X0F,0XFE,0X00,0X0C,0X00,0X7F,0X3C,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X1F,0XFF,0XF0,0X0F,0XFF,0X00,0X0C,0X00,0X3F,0X80,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X0F,0XFF,0XF0,0X0E,0X7F,0X80,0X0C,0X00,0X3F,0XC0,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X07,0XFF,0XF8,0X0E,0X3F,0XC0,0X0C,0X00,0X1F,0XF0,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X03,0XFF,0XF8,0X1E,0X1F,0XE0,0X0C,0X00,0X0F,0XF0,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X3F,0XFE,0X3F,0X87,0XE0,0X3C,0X00,0X0F,0XBE,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X47,0XFF,0XFF,0XF0,0X60,0X3C,0X00,0X0F,0XBF,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X31,0XFF,0XFF,0XF8,0XE0,0X38,0X00,0X0F,0XBF,0X80,0X00,0X00,0X00,
|
||||
0X00,0X03,0X06,0X11,0XFF,0XFD,0XFF,0XE0,0X38,0X00,0X0F,0X1F,0X80,0X00,0X00,0X00,
|
||||
0X00,0X03,0X0E,0X13,0XFF,0XF9,0XFF,0XE0,0X30,0X00,0X0E,0X07,0X80,0X00,0X00,0X00,
|
||||
0X00,0X03,0X3C,0XD7,0XFD,0XFD,0XFF,0XE0,0X30,0X00,0X1C,0XC7,0X80,0X00,0X00,0X00,
|
||||
0X00,0X03,0X39,0XEF,0XFB,0XFF,0XFF,0XE0,0X30,0X00,0X3D,0XFF,0X80,0X00,0X00,0X00,
|
||||
0X00,0X03,0X73,0XEF,0XFB,0XFF,0XFF,0XE0,0X60,0X00,0X3D,0XFF,0X80,0X00,0X00,0X00,
|
||||
0X00,0X03,0X67,0XEF,0XFB,0XFF,0XFF,0XC0,0XC0,0X00,0X3F,0XFF,0X80,0X00,0X00,0X00,
|
||||
0X00,0X03,0X8F,0XF7,0XE3,0XFF,0XFF,0X80,0XE0,0X00,0X1B,0XFF,0X80,0X00,0X00,0X00,
|
||||
0X00,0X03,0X9F,0XF3,0XE1,0XFF,0XE0,0X01,0XC0,0X00,0X3B,0XFF,0XC0,0X00,0X00,0X00,
|
||||
0X00,0X03,0X3F,0XF1,0XF9,0XFF,0XC0,0X03,0X80,0X00,0X7F,0XFF,0XE0,0X00,0X00,0X00,
|
||||
0X00,0X03,0X7F,0XF1,0XFD,0XFF,0X80,0X07,0X00,0X00,0X1F,0XFF,0XF8,0X00,0X00,0X00,
|
||||
0X00,0X03,0XFF,0XF1,0XFF,0XFF,0X80,0X0F,0X00,0X00,0X3F,0XFF,0XFC,0X00,0X00,0X00,
|
||||
0X00,0X03,0XFF,0XE0,0XFF,0XFF,0X00,0X0E,0X00,0X00,0X3F,0XFF,0X9C,0X00,0X00,0X00,
|
||||
0X00,0X03,0XFF,0X80,0X0F,0XFF,0X00,0X06,0X00,0X00,0X03,0XF6,0X7C,0X00,0X00,0X00,
|
||||
0X00,0X03,0XFF,0X00,0X1F,0X7C,0X00,0XF8,0X00,0X00,0X09,0XF0,0X3C,0X00,0X00,0X00,
|
||||
0X00,0X03,0XFE,0X00,0X3F,0X38,0X01,0XFC,0X00,0X00,0X1C,0XF8,0X1C,0X00,0X00,0X00,
|
||||
0X00,0X03,0XFC,0X00,0XFF,0X90,0X03,0XFE,0X00,0X00,0X3D,0XFF,0X9C,0X00,0X00,0X00,
|
||||
0X00,0X03,0XF8,0X00,0XFF,0XC0,0X0F,0XFF,0X00,0X00,0X73,0XFF,0XCC,0X00,0X00,0X00,
|
||||
0X00,0X03,0XF0,0X00,0XFF,0XE0,0X0F,0XFF,0X00,0X00,0X61,0XFF,0XFC,0X60,0X00,0X00,
|
||||
0X00,0X03,0XF0,0X01,0XFF,0XF0,0X1F,0XFF,0X00,0X00,0XC0,0XFF,0XFF,0XF0,0X00,0X00,
|
||||
0X00,0X07,0XE0,0X01,0XFF,0XBF,0XFF,0XFF,0X80,0X00,0XE0,0X00,0X7F,0XF0,0X00,0X00,
|
||||
0X00,0X03,0XC0,0X01,0XFF,0X3F,0XFF,0XFF,0X80,0X00,0XC0,0X00,0X3F,0XF8,0X00,0X00,
|
||||
0X00,0X01,0X80,0X01,0XFE,0X7F,0XFF,0XFF,0X80,0X00,0X80,0X00,0X1F,0XFC,0X00,0X00,
|
||||
0X00,0X07,0X00,0X00,0XFE,0X7F,0XFF,0XFF,0X80,0X00,0X80,0X00,0X0C,0XFC,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0XF0,0X7F,0XFF,0XFF,0X00,0X00,0X80,0X00,0X04,0X7C,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X7E,0X3F,0XFF,0XFC,0X00,0X01,0X80,0X00,0X03,0XFC,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X7E,0X3F,0XFF,0XFE,0X00,0X01,0X80,0X00,0X01,0XF0,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X3F,0XDF,0XBF,0XFF,0X80,0X01,0X80,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X3F,0XCF,0XBF,0XFF,0XC0,0X01,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X7F,0XCF,0XFF,0XFF,0XE0,0X01,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0XFF,0XCF,0XCF,0XFF,0XC0,0X01,0X80,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X1E,0XFF,0XEF,0XC7,0XFF,0XC0,0X01,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X01,0XFC,0XFF,0XE7,0XF0,0X7F,0X80,0X03,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X07,0X07,0XC0,0XFF,0XF3,0XF8,0XFF,0X00,0X0F,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X0F,0X80,0X7F,0XF3,0XF9,0XFE,0X00,0X0E,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0X1F,0X00,0X3F,0XF3,0XFB,0XFE,0X00,0X0C,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0X38,0X00,0X03,0XF9,0XFB,0XF3,0XE0,0X18,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0XF0,0X00,0X3C,0XF9,0XFB,0XEF,0XF0,0X30,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0XC0,0X00,0X7D,0XF9,0XFB,0XCF,0XF0,0X70,0X00,0X00,0X18,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0XFF,0XF8,0XFB,0XCF,0XFC,0XC0,0X00,0X03,0XF8,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0XFF,0XFC,0XFB,0XFF,0XFC,0X00,0X00,0X07,0XF8,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0XFF,0XDE,0XFB,0XFF,0X7C,0X00,0X00,0X3F,0XFC,0X00,0X00,0X00,
|
||||
0X00,0X01,0X00,0X00,0XFF,0XDE,0XF3,0XFF,0X3C,0X00,0X00,0X7F,0XFE,0X00,0X00,0X00,
|
||||
0X00,0X01,0X00,0X00,0XFF,0XC2,0XF3,0XFF,0X1C,0X00,0X00,0XFF,0XFE,0X00,0X00,0X00,
|
||||
0X00,0X01,0X00,0X00,0XFB,0XE3,0XFF,0XFF,0X3C,0X00,0X00,0XFF,0XFF,0X00,0X00,0X00,
|
||||
0X00,0X01,0X00,0X00,0XF9,0XEF,0XFF,0XFE,0X3C,0X00,0X00,0XFF,0XFF,0X00,0X00,0X00,
|
||||
0X00,0X01,0X00,0X00,0XFC,0XFF,0XFF,0XF9,0XFC,0X00,0X00,0XDC,0X7F,0X00,0X00,0X00,
|
||||
0X00,0X01,0X00,0X01,0XFE,0X7F,0XFF,0XE3,0XFE,0X00,0X00,0XFF,0XBF,0X00,0X00,0X00,
|
||||
0X00,0X01,0X00,0X01,0XFE,0X3F,0XFF,0XC7,0XFE,0X00,0X00,0XFF,0X9F,0X00,0X00,0X00,
|
||||
0X00,0X01,0X00,0X03,0XFF,0X3F,0XFF,0XCF,0XFF,0X00,0X00,0XFF,0XBF,0X00,0X00,0X00,
|
||||
0X00,0X01,0X00,0XFF,0XFF,0XCF,0XFF,0XFF,0XFF,0X80,0X00,0XFF,0XFE,0X00,0X00,0X00,
|
||||
0X00,0X01,0X0F,0XE0,0X7F,0XFF,0X87,0XFF,0XFF,0X80,0X00,0XFF,0XC0,0X00,0X00,0X00,
|
||||
0X00,0X01,0X1F,0X80,0X3F,0XFF,0X03,0XFF,0XCE,0X00,0X00,0XFF,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0XF0,0X00,0X0F,0XFE,0X01,0XFC,0X1E,0X00,0X00,0XF0,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0XE0,0X7F,0XC7,0XFC,0X01,0XFC,0X3E,0X00,0X00,0XC1,0XFF,0XE0,0X00,0X00,
|
||||
0X00,0X01,0XC1,0XFF,0XF7,0XF8,0X01,0XFF,0XFC,0X00,0X01,0X8D,0XFF,0XF0,0X00,0X00,
|
||||
0X00,0X01,0X87,0XFF,0XFB,0XFC,0X01,0XFF,0XF8,0X00,0X0F,0X1E,0XFF,0XF8,0X00,0X00,
|
||||
0X00,0X01,0X3F,0X80,0X03,0XFC,0X01,0XFF,0XF0,0X00,0X0E,0X7E,0X7F,0XFE,0X00,0X00,
|
||||
0X00,0X01,0XF8,0X00,0X07,0XFE,0X01,0XFF,0XE2,0X00,0X1E,0X7F,0X3F,0XFC,0X00,0X00,
|
||||
0X00,0X01,0XE0,0XFF,0X9F,0XDF,0X03,0XFF,0XC6,0X60,0X1C,0XFF,0X8F,0XFE,0X00,0X00,
|
||||
0X00,0X01,0X8F,0XC0,0XFF,0X3F,0XC7,0XEF,0XE3,0X78,0X3E,0X1F,0XCF,0XFF,0X00,0X00,
|
||||
0X00,0X01,0XDF,0X80,0XFE,0X7F,0XEF,0XE7,0XF1,0XBC,0X7F,0X0F,0XCF,0XFF,0XC0,0X00,
|
||||
0X00,0X01,0XFC,0X00,0XFD,0XFF,0XFF,0XE3,0XF1,0X9E,0X3F,0XC3,0XE7,0XFF,0X00,0X00,
|
||||
0X00,0X01,0XF8,0X01,0XF1,0XF9,0XFF,0XF1,0XFD,0XCF,0X9F,0XE1,0XFF,0XFF,0X00,0X00,
|
||||
0X00,0X01,0X80,0X01,0XF3,0XF1,0XFF,0XF9,0XFD,0XC1,0X9F,0XF8,0XFF,0XE0,0X00,0X00,
|
||||
0X00,0X01,0X00,0X01,0XFF,0XE3,0XFD,0XFE,0XFF,0XC0,0X3F,0XF0,0X00,0X03,0X80,0X00,
|
||||
0X00,0X01,0X00,0X00,0XFF,0XE3,0XFD,0XFF,0X7F,0XC0,0X7F,0XC0,0X00,0X07,0X80,0X00,
|
||||
0X00,0X01,0X00,0X00,0XFF,0XE7,0XFC,0XFF,0X07,0X80,0XFF,0XCF,0XFF,0XFF,0X00,0X00,
|
||||
0X00,0X01,0X00,0X00,0XFF,0XEF,0XCE,0X7F,0X07,0X00,0X7E,0X7F,0XFF,0XFE,0X00,0X00,
|
||||
0X00,0X01,0X1F,0XFE,0XFF,0XFF,0XCE,0X7F,0X3E,0X00,0X3E,0X7F,0XFF,0XFC,0X00,0X00,
|
||||
0X00,0X01,0XFF,0XFF,0XFF,0XF1,0XCE,0X3F,0X3E,0X00,0X3F,0XFC,0X07,0XF8,0X00,0X00,
|
||||
0X00,0X01,0XFF,0XFF,0X3F,0XE1,0X8E,0X3F,0X3E,0X00,0X1F,0XFC,0X07,0XF0,0X00,0X00,
|
||||
0X00,0X01,0XE0,0X00,0X0E,0X03,0X8E,0X3F,0X3E,0X00,0X0F,0XFF,0XF8,0X00,0X00,0X00,
|
||||
0X00,0X01,0XFF,0XFF,0X87,0XFF,0X8E,0X3F,0X1E,0X00,0X04,0XFE,0X3E,0X00,0X00,0X00,
|
||||
0X00,0X01,0XFF,0XFF,0XC7,0XFF,0X8F,0X3F,0XBE,0X00,0X00,0XFE,0X1E,0X00,0X00,0X00,
|
||||
0X00,0X01,0XFF,0XFF,0XC7,0XFF,0X8F,0X9F,0XFE,0X00,0X00,0XFC,0X3F,0X80,0X00,0X00,
|
||||
0X00,0X01,0X87,0XFF,0X8F,0XFF,0X8F,0X9F,0XFE,0X00,0X00,0X79,0XFF,0XC0,0X00,0X00,
|
||||
0X00,0X01,0X00,0X06,0X3F,0XFF,0X8F,0XDF,0XFE,0X00,0X00,0X7F,0XFF,0XC0,0X00,0X00,
|
||||
0X00,0X01,0X00,0X00,0X7F,0XFF,0X8F,0X8F,0XFC,0X00,0X00,0X1F,0XFF,0XE0,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0XFF,0XFF,0X8F,0X1F,0X00,0X00,0X00,0X0F,0XFF,0XF0,0X00,0X00,
|
||||
0X00,0X01,0XC0,0X01,0XFF,0XFF,0X8E,0X3F,0X81,0X00,0X00,0X01,0XFF,0XE0,0X00,0X00,
|
||||
0X00,0X01,0XE0,0X01,0XFF,0XFF,0X8E,0X7F,0XC3,0X80,0X00,0X00,0XFF,0X80,0X00,0X00,
|
||||
0X00,0X01,0XF8,0X00,0XFF,0XF3,0X8E,0X7F,0XE7,0XC0,0X00,0X00,0X7F,0X00,0X00,0X00,
|
||||
0X00,0X01,0XFF,0X80,0XFF,0XE7,0X8F,0XFF,0XC4,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0X87,0XE1,0XFF,0XDF,0X8F,0XFF,0XCE,0X1C,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0XF1,0XF8,0XFF,0XFF,0X8F,0XFF,0XCF,0XCF,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0XFE,0X1C,0XFF,0XBE,0X43,0XE0,0X1F,0XF3,0X80,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0XFF,0X06,0X7F,0X3E,0X63,0XC1,0X3F,0XF1,0XE0,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0XFF,0X83,0X3E,0X3C,0XF3,0X81,0X1F,0XF8,0XF0,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0XFF,0XE1,0X80,0X39,0XFF,0X00,0X07,0XFE,0X78,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0XFF,0XFE,0X60,0X1F,0XFE,0X1C,0X03,0XFF,0X1C,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0X0F,0XFF,0X3C,0X1F,0XFE,0X60,0X01,0XFF,0X8E,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0X01,0XFF,0X9E,0X0F,0XFF,0XC0,0X00,0X3F,0XC3,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0X00,0X7F,0XC3,0X8F,0XFD,0X80,0X00,0X3F,0XE3,0X80,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0X00,0X3F,0XE1,0XC7,0XFC,0X00,0X00,0X3F,0XF1,0XC0,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0X00,0X1F,0XF1,0XE3,0XF8,0X00,0X00,0X07,0XF0,0X60,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X0F,0XF1,0XE1,0XF0,0X00,0X00,0X03,0XF8,0X30,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X01,0XF8,0X30,0X00,0X00,0X00,0X01,0XFC,0X3C,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0XF8,0X18,0X00,0X00,0X00,0X00,0XFC,0X0E,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0XFC,0X0C,0X00,0X00,0X00,0X00,0XFE,0X0F,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X7C,0X0C,0X00,0X00,0X00,0X00,0X7E,0X07,0X80,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X7C,0X06,0X00,0X00,0X00,0X00,0X3F,0X03,0X80,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X7E,0X06,0X00,0X00,0X00,0X00,0X1F,0X81,0X80,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X1E,0X03,0X00,0X00,0X00,0X00,0X0F,0X80,0XC0,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X0E,0X01,0X00,0X00,0X00,0X00,0X07,0X80,0X60,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X0F,0X01,0X80,0X00,0X00,0X00,0X03,0XC0,0X30,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X07,0X81,0XC0,0X00,0X00,0X00,0X01,0XC0,0X38,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X07,0X81,0XC0,0X00,0X00,0X00,0X00,0XC0,0X18,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X07,0XC0,0XE0,0X00,0X00,0X00,0X00,0X40,0X08,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X03,0XC0,0XF0,0X00,0X00,0X00,0X00,0X00,0X04,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X03,0XC0,0X70,0X00,0X00,0X00,0X00,0X00,0X06,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X01,0XC0,0X70,0X00,0XF8,0X00,0X00,0X00,0X02,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X03,0XC0,0X30,0X00,0XFF,0XF0,0X00,0X00,0X07,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X03,0XC0,0X30,0X01,0XFF,0XF8,0X00,0X00,0X03,0X80,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X01,0XC0,0X30,0X01,0XFF,0XFC,0X00,0X00,0X03,0X80,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X01,0XC0,0X18,0X01,0XFF,0XFE,0X00,0X00,0X03,0X80,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X01,0XC0,0X08,0X00,0XFF,0XFF,0X00,0X00,0X01,0XC0,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X01,0XC0,0X08,0X00,0X67,0XFF,0X00,0X00,0X01,0XC0,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X01,0XC0,0X08,0X00,0XFF,0XFF,0X00,0X00,0X00,0XC0,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X01,0X80,0X08,0X03,0XFF,0XBF,0X80,0X00,0X00,0X40,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X07,0XFF,0X3F,0X80,0X00,0X00,0X40,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X03,0XFF,0XBF,0XC0,0X00,0X00,0X40,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X03,0XFF,0X3F,0XC0,0X00,0X00,0X40,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X03,0XF0,0X1F,0XC0,0X00,0X00,0X40,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X03,0XFF,0XCF,0XF0,0X00,0X00,0X40,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X01,0XFF,0XE7,0XFC,0X00,0X00,0XC0,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X01,0XFF,0XF3,0XFF,0XF0,0X01,0XC0,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X01,0XFF,0XF8,0XFF,0XF8,0X01,0X80,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X00,0X7F,0XFC,0X7F,0XFF,0X03,0X80,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X00,0X1F,0XFF,0X00,0X7F,0X83,0X80,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X00,0X3F,0XFF,0X80,0X1F,0XC7,0X80,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X00,0X3F,0XFF,0XFF,0XFF,0XC3,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X00,0X3F,0XFF,0XFF,0XFF,0XC4,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X00,0X3F,0XFF,0XFF,0XFF,0XC4,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X18,0X00,0X1F,0XFF,0XFF,0XFF,0XC4,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X38,0X00,0X0F,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X78,0X00,0X03,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0XF8,0X00,0X00,0X7F,0XFF,0XFF,0XFC,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X01,0XF8,0X00,0X00,0X3F,0XFF,0XFF,0XFC,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X38,0X00,0X00,0X3F,0XFF,0XF9,0XFC,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X18,0X00,0X00,0X3F,0XFF,0XF3,0XFC,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X00,0X00,0X3F,0XFF,0XE7,0XFC,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X00,0X00,0X3C,0XFC,0X1F,0XF8,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X8C,0X00,0X00,0X7E,0X00,0X7F,0X98,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X79,0X8C,0X00,0X07,0XFF,0X0F,0XFF,0X9C,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0XFC,0XC6,0X00,0X0F,0XFF,0X7F,0XFF,0X78,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X01,0XF8,0X46,0X00,0X0F,0XFF,0X7F,0XFE,0X78,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X03,0XFC,0X07,0X00,0X0F,0XFF,0X7F,0XFE,0X78,0X00,0X00,0X00,
|
||||
0X00,0X00,0X80,0X00,0X07,0XFE,0X07,0XC0,0X0F,0XFF,0X7F,0XFE,0X60,0X00,0X00,0X00,
|
||||
0X00,0X00,0X80,0X00,0X07,0XF9,0XE7,0XE0,0X07,0XFF,0X7F,0XF8,0XC0,0X00,0X00,0X00,
|
||||
0X00,0X00,0X80,0X00,0X03,0XE3,0XF3,0XF0,0X03,0XFF,0XFF,0XF1,0XC0,0X00,0X00,0X00,
|
||||
0X00,0X00,0X80,0X00,0X7F,0XC3,0XF3,0X38,0X01,0XFF,0XFF,0XF1,0X80,0X00,0X00,0X00,
|
||||
0X00,0X00,0X80,0X00,0XFF,0XDF,0XF3,0X1C,0X00,0X7F,0XFF,0XE3,0X80,0X00,0X00,0X00,
|
||||
0X00,0X00,0X80,0X00,0XFF,0X9F,0XF3,0X8E,0X00,0X3F,0XFF,0XE7,0X80,0X00,0X00,0X00,
|
||||
0X00,0X00,0X80,0X00,0XFE,0X33,0XFB,0XCF,0X00,0X1F,0XFF,0XCF,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X80,0X01,0XFE,0X3F,0XF1,0XCF,0X00,0X0F,0XFF,0XCF,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X80,0X00,0X0C,0X7F,0XCD,0XE3,0X80,0X0F,0XFF,0XDF,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X80,0X01,0X01,0XFC,0X8E,0X7F,0X80,0X0F,0XFF,0X9F,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X80,0X0F,0XF9,0XFC,0X1E,0X3F,0X80,0X0F,0XF3,0XBF,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X80,0X0F,0XFD,0XFC,0X3E,0X3F,0X80,0X0F,0XE1,0XBF,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X80,0X0F,0XFC,0XFC,0X3F,0X3F,0X80,0X0F,0XC1,0X3F,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X80,0X1F,0XE5,0XF8,0X3B,0X9F,0X80,0X0F,0XC2,0X3F,0X80,0X00,0X00,0X00,
|
||||
0X00,0X00,0X80,0X1F,0XCF,0XF0,0X33,0XDF,0XC0,0X03,0X9C,0X0F,0X80,0X00,0X00,0X00,
|
||||
0X00,0X00,0X80,0X00,0X0E,0X00,0X39,0XD9,0XC0,0X00,0X38,0X63,0XC0,0X00,0X00,0X00,
|
||||
0X00,0X00,0X80,0X0F,0XFE,0X00,0X0F,0XEE,0XF0,0X00,0XFF,0XF3,0XF0,0X00,0X00,0X00,
|
||||
0X00,0X00,0X80,0X1F,0XFE,0X00,0X07,0XEE,0X78,0X01,0XFF,0XFF,0XF0,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X1F,0XFE,0X00,0X07,0XEE,0X3C,0X01,0XFF,0XFF,0XF0,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X1F,0XFE,0X00,0X07,0XEF,0X3C,0X01,0XFF,0XFF,0XF0,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X1F,0X7C,0X00,0X00,0XEF,0XFC,0X01,0XFF,0XFF,0XF0,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X1E,0X1C,0X00,0X00,0X6F,0XFC,0X01,0XFF,0XFF,0XC0,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X33,0XFE,0X00,0XFF,0XFF,0XC0,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFE,0X00,0XFF,0XFF,0X80,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XFE,0X00,0X3F,0XFF,0X80,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XFE,0X00,0X1F,0XFF,0X80,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFC,0X00,0X03,0XFF,0X80,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFE,0X00,0X03,0XFF,0X80,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7E,0X00,0X03,0XFF,0X80,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFE,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X78,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X30,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
};
|
||||
30
Arduino/epd2in13/imagedata.h
Normal file
30
Arduino/epd2in13/imagedata.h
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
/**
|
||||
* @filename : imagedata.h
|
||||
* @brief : head file for imagedata.cpp
|
||||
*
|
||||
* Copyright (C) Waveshare September 5 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
extern const unsigned char IMAGE_DATA[];
|
||||
|
||||
/* FILE END */
|
||||
|
||||
|
||||
358
Arduino/epd2in13_V2/epd2in13_V2.cpp
Normal file
358
Arduino/epd2in13_V2/epd2in13_V2.cpp
Normal file
|
|
@ -0,0 +1,358 @@
|
|||
/*****************************************************************************
|
||||
* | File : epd2in13_V2.cpp
|
||||
* | Author : Waveshare team
|
||||
* | Function : 2.13inch e-paper V2
|
||||
* | Info :
|
||||
*----------------
|
||||
* | This version: V1.0
|
||||
* | Date : 2019-06-24
|
||||
* | Info :
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documnetation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
#
|
||||
******************************************************************************/
|
||||
#include <stdlib.h>
|
||||
#include "epd2in13_V2.h"
|
||||
|
||||
const unsigned char lut_full_update[]= {
|
||||
0x80,0x60,0x40,0x00,0x00,0x00,0x00, //LUT0: BB: VS 0 ~7
|
||||
0x10,0x60,0x20,0x00,0x00,0x00,0x00, //LUT1: BW: VS 0 ~7
|
||||
0x80,0x60,0x40,0x00,0x00,0x00,0x00, //LUT2: WB: VS 0 ~7
|
||||
0x10,0x60,0x20,0x00,0x00,0x00,0x00, //LUT3: WW: VS 0 ~7
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00, //LUT4: VCOM: VS 0 ~7
|
||||
|
||||
0x03,0x03,0x00,0x00,0x02, // TP0 A~D RP0
|
||||
0x09,0x09,0x00,0x00,0x02, // TP1 A~D RP1
|
||||
0x03,0x03,0x00,0x00,0x02, // TP2 A~D RP2
|
||||
0x00,0x00,0x00,0x00,0x00, // TP3 A~D RP3
|
||||
0x00,0x00,0x00,0x00,0x00, // TP4 A~D RP4
|
||||
0x00,0x00,0x00,0x00,0x00, // TP5 A~D RP5
|
||||
0x00,0x00,0x00,0x00,0x00, // TP6 A~D RP6
|
||||
|
||||
0x15,0x41,0xA8,0x32,0x30,0x0A,
|
||||
};
|
||||
|
||||
const unsigned char lut_partial_update[]= { //20 bytes
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00, //LUT0: BB: VS 0 ~7
|
||||
0x80,0x00,0x00,0x00,0x00,0x00,0x00, //LUT1: BW: VS 0 ~7
|
||||
0x40,0x00,0x00,0x00,0x00,0x00,0x00, //LUT2: WB: VS 0 ~7
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00, //LUT3: WW: VS 0 ~7
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00, //LUT4: VCOM: VS 0 ~7
|
||||
|
||||
0x0A,0x00,0x00,0x00,0x00, // TP0 A~D RP0
|
||||
0x00,0x00,0x00,0x00,0x00, // TP1 A~D RP1
|
||||
0x00,0x00,0x00,0x00,0x00, // TP2 A~D RP2
|
||||
0x00,0x00,0x00,0x00,0x00, // TP3 A~D RP3
|
||||
0x00,0x00,0x00,0x00,0x00, // TP4 A~D RP4
|
||||
0x00,0x00,0x00,0x00,0x00, // TP5 A~D RP5
|
||||
0x00,0x00,0x00,0x00,0x00, // TP6 A~D RP6
|
||||
|
||||
0x15,0x41,0xA8,0x32,0x30,0x0A,
|
||||
};
|
||||
|
||||
Epd::~Epd()
|
||||
{
|
||||
};
|
||||
|
||||
Epd::Epd()
|
||||
{
|
||||
reset_pin = RST_PIN;
|
||||
dc_pin = DC_PIN;
|
||||
cs_pin = CS_PIN;
|
||||
busy_pin = BUSY_PIN;
|
||||
width = EPD_WIDTH;
|
||||
height = EPD_HEIGHT;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief: basic function for sending commands
|
||||
*/
|
||||
void Epd::SendCommand(unsigned char command)
|
||||
{
|
||||
DigitalWrite(dc_pin, LOW);
|
||||
SpiTransfer(command);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: basic function for sending data
|
||||
*/
|
||||
void Epd::SendData(unsigned char data)
|
||||
{
|
||||
DigitalWrite(dc_pin, HIGH);
|
||||
SpiTransfer(data);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: Wait until the busy_pin goes HIGH
|
||||
*/
|
||||
void Epd::WaitUntilIdle(void)
|
||||
{
|
||||
while(1) { //LOW: idle, HIGH: busy
|
||||
if(DigitalRead(busy_pin) == 0)
|
||||
break;
|
||||
DelayMs(100);
|
||||
}
|
||||
}
|
||||
|
||||
int Epd::Init(char Mode)
|
||||
{
|
||||
/* this calls the peripheral hardware interface, see epdif */
|
||||
if (IfInit() != 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
Reset();
|
||||
|
||||
int count;
|
||||
if(Mode == FULL) {
|
||||
WaitUntilIdle();
|
||||
SendCommand(0x12); // soft reset
|
||||
WaitUntilIdle();
|
||||
|
||||
SendCommand(0x74); //set analog block control
|
||||
SendData(0x54);
|
||||
SendCommand(0x7E); //set digital block control
|
||||
SendData(0x3B);
|
||||
|
||||
SendCommand(0x01); //Driver output control
|
||||
SendData(0xF9);
|
||||
SendData(0x00);
|
||||
SendData(0x00);
|
||||
|
||||
SendCommand(0x11); //data entry mode
|
||||
SendData(0x01);
|
||||
|
||||
SendCommand(0x44); //set Ram-X address start/end position
|
||||
SendData(0x00);
|
||||
SendData(0x0F); //0x0C-->(15+1)*8=128
|
||||
|
||||
SendCommand(0x45); //set Ram-Y address start/end position
|
||||
SendData(0xF9); //0xF9-->(249+1)=250
|
||||
SendData(0x00);
|
||||
SendData(0x00);
|
||||
SendData(0x00);
|
||||
|
||||
SendCommand(0x3C); //BorderWavefrom
|
||||
SendData(0x03);
|
||||
|
||||
SendCommand(0x2C); //VCOM Voltage
|
||||
SendData(0x55); //
|
||||
|
||||
SendCommand(0x03);
|
||||
SendData(lut_full_update[70]);
|
||||
|
||||
SendCommand(0x04); //
|
||||
SendData(lut_full_update[71]);
|
||||
SendData(lut_full_update[72]);
|
||||
SendData(lut_full_update[73]);
|
||||
|
||||
SendCommand(0x3A); //Dummy Line
|
||||
SendData(lut_full_update[74]);
|
||||
SendCommand(0x3B); //Gate time
|
||||
SendData(lut_full_update[75]);
|
||||
|
||||
SendCommand(0x32);
|
||||
for(count = 0; count < 70; count++) {
|
||||
SendData(lut_full_update[count]);
|
||||
}
|
||||
|
||||
SendCommand(0x4E); // set RAM x address count to 0;
|
||||
SendData(0x00);
|
||||
SendCommand(0x4F); // set RAM y address count to 0X127;
|
||||
SendData(0xF9);
|
||||
SendData(0x00);
|
||||
WaitUntilIdle();
|
||||
} else if(Mode == PART) {
|
||||
SendCommand(0x2C); //VCOM Voltage
|
||||
SendData(0x26);
|
||||
|
||||
WaitUntilIdle();
|
||||
|
||||
SendCommand(0x32);
|
||||
for(count = 0; count < 70; count++) {
|
||||
SendData(lut_partial_update[count]);
|
||||
}
|
||||
|
||||
SendCommand(0x37);
|
||||
SendData(0x00);
|
||||
SendData(0x00);
|
||||
SendData(0x00);
|
||||
SendData(0x00);
|
||||
SendData(0x40);
|
||||
SendData(0x00);
|
||||
SendData(0x00);
|
||||
|
||||
SendCommand(0x22);
|
||||
SendData(0xC0);
|
||||
|
||||
SendCommand(0x20);
|
||||
WaitUntilIdle();
|
||||
|
||||
SendCommand(0x3C); //BorderWavefrom
|
||||
SendData(0x01);
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: module reset.
|
||||
* often used to awaken the module in deep sleep,
|
||||
* see Epd::Sleep();
|
||||
*/
|
||||
void Epd::Reset(void)
|
||||
{
|
||||
DigitalWrite(reset_pin, HIGH);
|
||||
DelayMs(200);
|
||||
DigitalWrite(reset_pin, LOW); //module reset
|
||||
DelayMs(10);
|
||||
DigitalWrite(reset_pin, HIGH);
|
||||
DelayMs(200);
|
||||
}
|
||||
|
||||
void Epd::Clear(void)
|
||||
{
|
||||
int w, h;
|
||||
w = (EPD_WIDTH % 8 == 0)? (EPD_WIDTH / 8 ): (EPD_WIDTH / 8 + 1);
|
||||
h = EPD_HEIGHT;
|
||||
SendCommand(0x24);
|
||||
for (int j = 0; j < h; j++) {
|
||||
for (int i = 0; i < w; i++) {
|
||||
SendData(0xff);
|
||||
}
|
||||
}
|
||||
|
||||
//DISPLAY REFRESH
|
||||
SendCommand(0x22);
|
||||
SendData(0xC7);
|
||||
SendCommand(0x20);
|
||||
WaitUntilIdle();
|
||||
}
|
||||
|
||||
void Epd::Display(const unsigned char* frame_buffer)
|
||||
{
|
||||
int w = (EPD_WIDTH % 8 == 0)? (EPD_WIDTH / 8 ): (EPD_WIDTH / 8 + 1);
|
||||
int h = EPD_HEIGHT;
|
||||
|
||||
if (frame_buffer != NULL) {
|
||||
SendCommand(0x24);
|
||||
for (int j = 0; j < h; j++) {
|
||||
for (int i = 0; i < w; i++) {
|
||||
SendData(pgm_read_byte(&frame_buffer[i + j * w]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//DISPLAY REFRESH
|
||||
SendCommand(0x22);
|
||||
SendData(0xC7);
|
||||
SendCommand(0x20);
|
||||
WaitUntilIdle();
|
||||
}
|
||||
|
||||
void Epd::DisplayPartBaseImage(const unsigned char* frame_buffer)
|
||||
{
|
||||
int w = (EPD_WIDTH % 8 == 0)? (EPD_WIDTH / 8 ): (EPD_WIDTH / 8 + 1);
|
||||
int h = EPD_HEIGHT;
|
||||
|
||||
if (frame_buffer != NULL) {
|
||||
SendCommand(0x24);
|
||||
for (int j = 0; j < h; j++) {
|
||||
for (int i = 0; i < w; i++) {
|
||||
SendData(pgm_read_byte(&frame_buffer[i + j * w]));
|
||||
}
|
||||
}
|
||||
|
||||
SendCommand(0x26);
|
||||
for (int j = 0; j < h; j++) {
|
||||
for (int i = 0; i < w; i++) {
|
||||
SendData(pgm_read_byte(&frame_buffer[i + j * w]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//DISPLAY REFRESH
|
||||
SendCommand(0x22);
|
||||
SendData(0xC7);
|
||||
SendCommand(0x20);
|
||||
WaitUntilIdle();
|
||||
}
|
||||
|
||||
void Epd::DisplayPart(const unsigned char* frame_buffer)
|
||||
{
|
||||
int w = (EPD_WIDTH % 8 == 0)? (EPD_WIDTH / 8 ): (EPD_WIDTH / 8 + 1);
|
||||
int h = EPD_HEIGHT;
|
||||
|
||||
if (frame_buffer != NULL) {
|
||||
SendCommand(0x24);
|
||||
for (int j = 0; j < h; j++) {
|
||||
for (int i = 0; i < w; i++) {
|
||||
SendData(pgm_read_byte(&frame_buffer[i + j * w]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//DISPLAY REFRESH
|
||||
SendCommand(0x22);
|
||||
SendData(0x0C);
|
||||
SendCommand(0x20);
|
||||
WaitUntilIdle();
|
||||
}
|
||||
|
||||
void Epd::ClearPart(void)
|
||||
{
|
||||
int w, h;
|
||||
w = (EPD_WIDTH % 8 == 0)? (EPD_WIDTH / 8 ): (EPD_WIDTH / 8 + 1);
|
||||
h = EPD_HEIGHT;
|
||||
SendCommand(0x24);
|
||||
for (int j = 0; j < h; j++) {
|
||||
for (int i = 0; i < w; i++) {
|
||||
SendData(0xff);
|
||||
}
|
||||
}
|
||||
|
||||
//DISPLAY REFRESH
|
||||
SendCommand(0x22);
|
||||
SendData(0x0C);
|
||||
SendCommand(0x20);
|
||||
WaitUntilIdle();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: After this command is transmitted, the chip would enter the
|
||||
* deep-sleep mode to save power.
|
||||
* The deep sleep mode would return to standby by hardware reset.
|
||||
* The only one parameter is a check code, the command would be
|
||||
* executed if check code = 0xA5.
|
||||
* You can use Epd::Init() to awaken
|
||||
*/
|
||||
void Epd::Sleep()
|
||||
{
|
||||
SendCommand(0x10); //enter deep sleep
|
||||
SendData(0x01);
|
||||
DelayMs(200);
|
||||
|
||||
DigitalWrite(reset_pin, LOW);
|
||||
}
|
||||
|
||||
/* END OF FILE */
|
||||
|
||||
|
||||
71
Arduino/epd2in13_V2/epd2in13_V2.h
Normal file
71
Arduino/epd2in13_V2/epd2in13_V2.h
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
/*****************************************************************************
|
||||
* | File : epd2in13_V2.h
|
||||
* | Author : Waveshare team
|
||||
* | Function : 1.54inch e-paper V2
|
||||
* | Info :
|
||||
*----------------
|
||||
* | This version: V1.0
|
||||
* | Date : 2019-06-24
|
||||
* | Info :
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documnetation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
#
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef epd2in13_V2
|
||||
#define epd2in13_V2
|
||||
|
||||
#include "epdif.h"
|
||||
|
||||
// Display resolution
|
||||
#define EPD_WIDTH 122
|
||||
#define EPD_HEIGHT 250
|
||||
|
||||
#define FULL 0
|
||||
#define PART 1
|
||||
|
||||
class Epd : EpdIf {
|
||||
public:
|
||||
unsigned long width;
|
||||
unsigned long height;
|
||||
|
||||
Epd();
|
||||
~Epd();
|
||||
int Init(char Mode);
|
||||
void SendCommand(unsigned char command);
|
||||
void SendData(unsigned char data);
|
||||
void WaitUntilIdle(void);
|
||||
void Reset(void);
|
||||
void Clear(void);
|
||||
void Display(const unsigned char* frame_buffer);
|
||||
void DisplayPartBaseImage(const unsigned char* frame_buffer);
|
||||
void DisplayPart(const unsigned char* frame_buffer);
|
||||
void ClearPart(void);
|
||||
|
||||
void Sleep(void);
|
||||
private:
|
||||
unsigned int reset_pin;
|
||||
unsigned int dc_pin;
|
||||
unsigned int cs_pin;
|
||||
unsigned int busy_pin;
|
||||
};
|
||||
|
||||
#endif /* EPD1IN54B_H */
|
||||
|
||||
/* END OF FILE */
|
||||
36
Arduino/epd2in13_V2/epd2in13_V2.ino
Normal file
36
Arduino/epd2in13_V2/epd2in13_V2.ino
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
#include <SPI.h>
|
||||
#include "epd2in13_V2.h"
|
||||
#include "imagedata.h"
|
||||
|
||||
Epd epd;
|
||||
|
||||
void setup()
|
||||
{
|
||||
// put your setup code here, to run once:
|
||||
Serial.begin(9600);
|
||||
Serial.println("epd FULL");
|
||||
epd.Init(FULL);
|
||||
epd.Display(IMAGE_DATA);
|
||||
|
||||
Serial.println("epd PART");
|
||||
epd.DisplayPartBaseImage(IMAGE_DATA);
|
||||
char i = 0;
|
||||
for (i = 0; i < 10; i++) {
|
||||
Serial.println("e-Paper PART IMAGE_DATA");
|
||||
epd.Init(PART);
|
||||
epd.DisplayPart(IMAGE_DATA);
|
||||
Serial.println("e-Paper PART Clear");
|
||||
epd.ClearPart();
|
||||
}
|
||||
|
||||
epd.Init(FULL);
|
||||
Serial.println("e-Paper clear and sleep");
|
||||
epd.Clear();
|
||||
epd.Sleep();
|
||||
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
|
||||
}
|
||||
65
Arduino/epd2in13_V2/epdif.cpp
Normal file
65
Arduino/epd2in13_V2/epdif.cpp
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
/**
|
||||
* @filename : epdif.cpp
|
||||
* @brief : Implements EPD interface functions
|
||||
* Users have to implement all the functions in epdif.cpp
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare August 10 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "epdif.h"
|
||||
#include <spi.h>
|
||||
|
||||
EpdIf::EpdIf() {
|
||||
};
|
||||
|
||||
EpdIf::~EpdIf() {
|
||||
};
|
||||
|
||||
void EpdIf::DigitalWrite(int pin, int value) {
|
||||
digitalWrite(pin, value);
|
||||
}
|
||||
|
||||
int EpdIf::DigitalRead(int pin) {
|
||||
return digitalRead(pin);
|
||||
}
|
||||
|
||||
void EpdIf::DelayMs(unsigned int delaytime) {
|
||||
delay(delaytime);
|
||||
}
|
||||
|
||||
void EpdIf::SpiTransfer(unsigned char data) {
|
||||
digitalWrite(CS_PIN, LOW);
|
||||
SPI.transfer(data);
|
||||
digitalWrite(CS_PIN, HIGH);
|
||||
}
|
||||
|
||||
int EpdIf::IfInit(void) {
|
||||
pinMode(CS_PIN, OUTPUT);
|
||||
pinMode(RST_PIN, OUTPUT);
|
||||
pinMode(DC_PIN, OUTPUT);
|
||||
pinMode(BUSY_PIN, INPUT);
|
||||
|
||||
SPI.begin();
|
||||
SPI.beginTransaction(SPISettings(2000000, MSBFIRST, SPI_MODE0));
|
||||
return 0;
|
||||
}
|
||||
|
||||
51
Arduino/epd2in13_V2/epdif.h
Normal file
51
Arduino/epd2in13_V2/epdif.h
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
/**
|
||||
* @filename : epdif.h
|
||||
* @brief : Header file of epdif.cpp providing EPD interface functions
|
||||
* Users have to implement all the functions in epdif.cpp
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare August 10 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef EPDIF_H
|
||||
#define EPDIF_H
|
||||
|
||||
#include <arduino.h>
|
||||
|
||||
// Pin definition
|
||||
#define RST_PIN 8
|
||||
#define DC_PIN 9
|
||||
#define CS_PIN 10
|
||||
#define BUSY_PIN 7
|
||||
|
||||
class EpdIf {
|
||||
public:
|
||||
EpdIf(void);
|
||||
~EpdIf(void);
|
||||
|
||||
static int IfInit(void);
|
||||
static void DigitalWrite(int pin, int value);
|
||||
static int DigitalRead(int pin);
|
||||
static void DelayMs(unsigned int delaytime);
|
||||
static void SpiTransfer(unsigned char data);
|
||||
};
|
||||
|
||||
#endif
|
||||
342
Arduino/epd2in13_V2/epdpaint.cpp
Normal file
342
Arduino/epd2in13_V2/epdpaint.cpp
Normal file
|
|
@ -0,0 +1,342 @@
|
|||
/**
|
||||
* @filename : epdpaint.cpp
|
||||
* @brief : Paint tools
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare September 9 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <avr/pgmspace.h>
|
||||
#include "epdpaint.h"
|
||||
|
||||
Paint::Paint(unsigned char* image, int width, int height) {
|
||||
this->rotate = ROTATE_0;
|
||||
this->image = image;
|
||||
/* 1 byte = 8 pixels, so the width should be the multiple of 8 */
|
||||
this->width = width % 8 ? width + 8 - (width % 8) : width;
|
||||
this->height = height;
|
||||
}
|
||||
|
||||
Paint::~Paint() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: clear the image
|
||||
*/
|
||||
void Paint::Clear(int colored) {
|
||||
for (int x = 0; x < this->width; x++) {
|
||||
for (int y = 0; y < this->height; y++) {
|
||||
DrawAbsolutePixel(x, y, colored);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a pixel by absolute coordinates.
|
||||
* this function won't be affected by the rotate parameter.
|
||||
*/
|
||||
void Paint::DrawAbsolutePixel(int x, int y, int colored) {
|
||||
if (x < 0 || x >= this->width || y < 0 || y >= this->height) {
|
||||
return;
|
||||
}
|
||||
if (IF_INVERT_COLOR) {
|
||||
if (colored) {
|
||||
image[(x + y * this->width) / 8] |= 0x80 >> (x % 8);
|
||||
} else {
|
||||
image[(x + y * this->width) / 8] &= ~(0x80 >> (x % 8));
|
||||
}
|
||||
} else {
|
||||
if (colored) {
|
||||
image[(x + y * this->width) / 8] &= ~(0x80 >> (x % 8));
|
||||
} else {
|
||||
image[(x + y * this->width) / 8] |= 0x80 >> (x % 8);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: Getters and Setters
|
||||
*/
|
||||
unsigned char* Paint::GetImage(void) {
|
||||
return this->image;
|
||||
}
|
||||
|
||||
int Paint::GetWidth(void) {
|
||||
return this->width;
|
||||
}
|
||||
|
||||
void Paint::SetWidth(int width) {
|
||||
this->width = width % 8 ? width + 8 - (width % 8) : width;
|
||||
}
|
||||
|
||||
int Paint::GetHeight(void) {
|
||||
return this->height;
|
||||
}
|
||||
|
||||
void Paint::SetHeight(int height) {
|
||||
this->height = height;
|
||||
}
|
||||
|
||||
int Paint::GetRotate(void) {
|
||||
return this->rotate;
|
||||
}
|
||||
|
||||
void Paint::SetRotate(int rotate){
|
||||
this->rotate = rotate;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a pixel by the coordinates
|
||||
*/
|
||||
void Paint::DrawPixel(int x, int y, int colored) {
|
||||
int point_temp;
|
||||
if (this->rotate == ROTATE_0) {
|
||||
if(x < 0 || x >= this->width || y < 0 || y >= this->height) {
|
||||
return;
|
||||
}
|
||||
DrawAbsolutePixel(x, y, colored);
|
||||
} else if (this->rotate == ROTATE_90) {
|
||||
if(x < 0 || x >= this->height || y < 0 || y >= this->width) {
|
||||
return;
|
||||
}
|
||||
point_temp = x;
|
||||
x = this->width - y;
|
||||
y = point_temp;
|
||||
DrawAbsolutePixel(x, y, colored);
|
||||
} else if (this->rotate == ROTATE_180) {
|
||||
if(x < 0 || x >= this->width || y < 0 || y >= this->height) {
|
||||
return;
|
||||
}
|
||||
x = this->width - x;
|
||||
y = this->height - y;
|
||||
DrawAbsolutePixel(x, y, colored);
|
||||
} else if (this->rotate == ROTATE_270) {
|
||||
if(x < 0 || x >= this->height || y < 0 || y >= this->width) {
|
||||
return;
|
||||
}
|
||||
point_temp = x;
|
||||
x = y;
|
||||
y = this->height - point_temp;
|
||||
DrawAbsolutePixel(x, y, colored);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a charactor on the frame buffer but not refresh
|
||||
*/
|
||||
void Paint::DrawCharAt(int x, int y, char ascii_char, sFONT* font, int colored) {
|
||||
int i, j;
|
||||
unsigned int char_offset = (ascii_char - ' ') * font->Height * (font->Width / 8 + (font->Width % 8 ? 1 : 0));
|
||||
const unsigned char* ptr = &font->table[char_offset];
|
||||
|
||||
for (j = 0; j < font->Height; j++) {
|
||||
for (i = 0; i < font->Width; i++) {
|
||||
if (pgm_read_byte(ptr) & (0x80 >> (i % 8))) {
|
||||
DrawPixel(x + i, y + j, colored);
|
||||
}
|
||||
if (i % 8 == 7) {
|
||||
ptr++;
|
||||
}
|
||||
}
|
||||
if (font->Width % 8 != 0) {
|
||||
ptr++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this displays a string on the frame buffer but not refresh
|
||||
*/
|
||||
void Paint::DrawStringAt(int x, int y, const char* text, sFONT* font, int colored) {
|
||||
const char* p_text = text;
|
||||
unsigned int counter = 0;
|
||||
int refcolumn = x;
|
||||
|
||||
/* Send the string character by character on EPD */
|
||||
while (*p_text != 0) {
|
||||
/* Display one character on EPD */
|
||||
DrawCharAt(refcolumn, y, *p_text, font, colored);
|
||||
/* Decrement the column position by 16 */
|
||||
refcolumn += font->Width;
|
||||
/* Point on the next character */
|
||||
p_text++;
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a line on the frame buffer
|
||||
*/
|
||||
void Paint::DrawLine(int x0, int y0, int x1, int y1, int colored) {
|
||||
/* Bresenham algorithm */
|
||||
int dx = x1 - x0 >= 0 ? x1 - x0 : x0 - x1;
|
||||
int sx = x0 < x1 ? 1 : -1;
|
||||
int dy = y1 - y0 <= 0 ? y1 - y0 : y0 - y1;
|
||||
int sy = y0 < y1 ? 1 : -1;
|
||||
int err = dx + dy;
|
||||
|
||||
while((x0 != x1) && (y0 != y1)) {
|
||||
DrawPixel(x0, y0 , colored);
|
||||
if (2 * err >= dy) {
|
||||
err += dy;
|
||||
x0 += sx;
|
||||
}
|
||||
if (2 * err <= dx) {
|
||||
err += dx;
|
||||
y0 += sy;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a horizontal line on the frame buffer
|
||||
*/
|
||||
void Paint::DrawHorizontalLine(int x, int y, int line_width, int colored) {
|
||||
int i;
|
||||
for (i = x; i < x + line_width; i++) {
|
||||
DrawPixel(i, y, colored);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a vertical line on the frame buffer
|
||||
*/
|
||||
void Paint::DrawVerticalLine(int x, int y, int line_height, int colored) {
|
||||
int i;
|
||||
for (i = y; i < y + line_height; i++) {
|
||||
DrawPixel(x, i, colored);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a rectangle
|
||||
*/
|
||||
void Paint::DrawRectangle(int x0, int y0, int x1, int y1, int colored) {
|
||||
int min_x, min_y, max_x, max_y;
|
||||
min_x = x1 > x0 ? x0 : x1;
|
||||
max_x = x1 > x0 ? x1 : x0;
|
||||
min_y = y1 > y0 ? y0 : y1;
|
||||
max_y = y1 > y0 ? y1 : y0;
|
||||
|
||||
DrawHorizontalLine(min_x, min_y, max_x - min_x + 1, colored);
|
||||
DrawHorizontalLine(min_x, max_y, max_x - min_x + 1, colored);
|
||||
DrawVerticalLine(min_x, min_y, max_y - min_y + 1, colored);
|
||||
DrawVerticalLine(max_x, min_y, max_y - min_y + 1, colored);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a filled rectangle
|
||||
*/
|
||||
void Paint::DrawFilledRectangle(int x0, int y0, int x1, int y1, int colored) {
|
||||
int min_x, min_y, max_x, max_y;
|
||||
int i;
|
||||
min_x = x1 > x0 ? x0 : x1;
|
||||
max_x = x1 > x0 ? x1 : x0;
|
||||
min_y = y1 > y0 ? y0 : y1;
|
||||
max_y = y1 > y0 ? y1 : y0;
|
||||
|
||||
for (i = min_x; i <= max_x; i++) {
|
||||
DrawVerticalLine(i, min_y, max_y - min_y + 1, colored);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a circle
|
||||
*/
|
||||
void Paint::DrawCircle(int x, int y, int radius, int colored) {
|
||||
/* Bresenham algorithm */
|
||||
int x_pos = -radius;
|
||||
int y_pos = 0;
|
||||
int err = 2 - 2 * radius;
|
||||
int e2;
|
||||
|
||||
do {
|
||||
DrawPixel(x - x_pos, y + y_pos, colored);
|
||||
DrawPixel(x + x_pos, y + y_pos, colored);
|
||||
DrawPixel(x + x_pos, y - y_pos, colored);
|
||||
DrawPixel(x - x_pos, y - y_pos, colored);
|
||||
e2 = err;
|
||||
if (e2 <= y_pos) {
|
||||
err += ++y_pos * 2 + 1;
|
||||
if(-x_pos == y_pos && e2 <= x_pos) {
|
||||
e2 = 0;
|
||||
}
|
||||
}
|
||||
if (e2 > x_pos) {
|
||||
err += ++x_pos * 2 + 1;
|
||||
}
|
||||
} while (x_pos <= 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a filled circle
|
||||
*/
|
||||
void Paint::DrawFilledCircle(int x, int y, int radius, int colored) {
|
||||
/* Bresenham algorithm */
|
||||
int x_pos = -radius;
|
||||
int y_pos = 0;
|
||||
int err = 2 - 2 * radius;
|
||||
int e2;
|
||||
|
||||
do {
|
||||
DrawPixel(x - x_pos, y + y_pos, colored);
|
||||
DrawPixel(x + x_pos, y + y_pos, colored);
|
||||
DrawPixel(x + x_pos, y - y_pos, colored);
|
||||
DrawPixel(x - x_pos, y - y_pos, colored);
|
||||
DrawHorizontalLine(x + x_pos, y + y_pos, 2 * (-x_pos) + 1, colored);
|
||||
DrawHorizontalLine(x + x_pos, y - y_pos, 2 * (-x_pos) + 1, colored);
|
||||
e2 = err;
|
||||
if (e2 <= y_pos) {
|
||||
err += ++y_pos * 2 + 1;
|
||||
if(-x_pos == y_pos && e2 <= x_pos) {
|
||||
e2 = 0;
|
||||
}
|
||||
}
|
||||
if(e2 > x_pos) {
|
||||
err += ++x_pos * 2 + 1;
|
||||
}
|
||||
} while(x_pos <= 0);
|
||||
}
|
||||
|
||||
/* END OF FILE */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
75
Arduino/epd2in13_V2/epdpaint.h
Normal file
75
Arduino/epd2in13_V2/epdpaint.h
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
/**
|
||||
* @filename : epdpaint.h
|
||||
* @brief : Header file for epdpaint.cpp
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare July 28 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef EPDPAINT_H
|
||||
#define EPDPAINT_H
|
||||
|
||||
// Display orientation
|
||||
#define ROTATE_0 0
|
||||
#define ROTATE_90 1
|
||||
#define ROTATE_180 2
|
||||
#define ROTATE_270 3
|
||||
|
||||
// Color inverse. 1 or 0 = set or reset a bit if set a colored pixel
|
||||
#define IF_INVERT_COLOR 1
|
||||
|
||||
#include "fonts.h"
|
||||
|
||||
class Paint {
|
||||
public:
|
||||
Paint(unsigned char* image, int width, int height);
|
||||
~Paint();
|
||||
void Clear(int colored);
|
||||
int GetWidth(void);
|
||||
void SetWidth(int width);
|
||||
int GetHeight(void);
|
||||
void SetHeight(int height);
|
||||
int GetRotate(void);
|
||||
void SetRotate(int rotate);
|
||||
unsigned char* GetImage(void);
|
||||
void DrawAbsolutePixel(int x, int y, int colored);
|
||||
void DrawPixel(int x, int y, int colored);
|
||||
void DrawCharAt(int x, int y, char ascii_char, sFONT* font, int colored);
|
||||
void DrawStringAt(int x, int y, const char* text, sFONT* font, int colored);
|
||||
void DrawLine(int x0, int y0, int x1, int y1, int colored);
|
||||
void DrawHorizontalLine(int x, int y, int width, int colored);
|
||||
void DrawVerticalLine(int x, int y, int height, int colored);
|
||||
void DrawRectangle(int x0, int y0, int x1, int y1, int colored);
|
||||
void DrawFilledRectangle(int x0, int y0, int x1, int y1, int colored);
|
||||
void DrawCircle(int x, int y, int radius, int colored);
|
||||
void DrawFilledCircle(int x, int y, int radius, int colored);
|
||||
|
||||
private:
|
||||
unsigned char* image;
|
||||
int width;
|
||||
int height;
|
||||
int rotate;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
/* END OF FILE */
|
||||
|
||||
1385
Arduino/epd2in13_V2/font12.c
Normal file
1385
Arduino/epd2in13_V2/font12.c
Normal file
File diff suppressed because it is too large
Load diff
1765
Arduino/epd2in13_V2/font16.c
Normal file
1765
Arduino/epd2in13_V2/font16.c
Normal file
File diff suppressed because it is too large
Load diff
2143
Arduino/epd2in13_V2/font20.c
Normal file
2143
Arduino/epd2in13_V2/font20.c
Normal file
File diff suppressed because it is too large
Load diff
2521
Arduino/epd2in13_V2/font24.c
Normal file
2521
Arduino/epd2in13_V2/font24.c
Normal file
File diff suppressed because it is too large
Load diff
1005
Arduino/epd2in13_V2/font8.c
Normal file
1005
Arduino/epd2in13_V2/font8.c
Normal file
File diff suppressed because it is too large
Load diff
75
Arduino/epd2in13_V2/fonts.h
Normal file
75
Arduino/epd2in13_V2/fonts.h
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* @file fonts.h
|
||||
* @author MCD Application Team
|
||||
* @version V1.0.0
|
||||
* @date 18-February-2014
|
||||
* @brief Header for fonts.c file
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <h2><center>© COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of STMicroelectronics nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef __FONTS_H
|
||||
#define __FONTS_H
|
||||
|
||||
/* Max size of bitmap will based on a font24 (17x24) */
|
||||
#define MAX_HEIGHT_FONT 24
|
||||
#define MAX_WIDTH_FONT 17
|
||||
#define OFFSET_BITMAP 54
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include <stdint.h>
|
||||
|
||||
typedef struct _tFont
|
||||
{
|
||||
const uint8_t *table;
|
||||
uint16_t Width;
|
||||
uint16_t Height;
|
||||
|
||||
} sFONT;
|
||||
|
||||
extern sFONT Font24;
|
||||
extern sFONT Font20;
|
||||
extern sFONT Font16;
|
||||
extern sFONT Font12;
|
||||
extern sFONT Font8;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __FONTS_H */
|
||||
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
281
Arduino/epd2in13_V2/imagedata.cpp
Normal file
281
Arduino/epd2in13_V2/imagedata.cpp
Normal file
|
|
@ -0,0 +1,281 @@
|
|||
/**
|
||||
* @filename : imagedata.cpp
|
||||
* @brief : data file for epd demo
|
||||
*
|
||||
* Copyright (C) Waveshare September 5 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "imagedata.h"
|
||||
#include <avr/pgmspace.h>
|
||||
|
||||
const unsigned char IMAGE_DATA[] PROGMEM = {
|
||||
/* 0X00,0X01,0X80,0X00,0XFA,0X00, */
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X38,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0X00,0X00,0X78,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0X80,0X00,0XF8,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XC0,0X03,0XF8,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X01,0X00,0X00,0X00,0X00,0X01,0XFF,0XE0,0X1F,0XF8,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0XC0,0X00,0X00,0X00,0X03,0XFF,0X70,0X1F,0XF0,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X7E,0X00,0X00,0X00,0X03,0XFF,0X78,0X38,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X3F,0X00,0X00,0X00,0X03,0XFF,0XF8,0XF0,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X03,0XF0,0XF8,0XC1,0XF8,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X03,0XF0,0X00,0X00,0X03,0XF3,0XF3,0X8F,0XFE,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X01,0XF8,0X00,0X00,0X03,0XFF,0XF3,0XBF,0XFF,0XC0,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X3E,0X00,0X00,0X03,0XFF,0XFA,0X7F,0XFF,0XF0,0X00,0X00,
|
||||
0X00,0X0F,0X00,0X00,0X00,0X3F,0XE0,0X00,0X00,0XE7,0XFB,0XFF,0XFF,0XF0,0X00,0X00,
|
||||
0X00,0X07,0X00,0X00,0X00,0X3F,0XF0,0X00,0X00,0XE7,0XFB,0XFF,0XFF,0XE0,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X1F,0XFC,0X00,0X00,0XFF,0XFB,0XFF,0XFF,0XE0,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X0F,0XFE,0X00,0X00,0X7F,0XFB,0XCF,0XFF,0XE0,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X03,0XFE,0X00,0X00,0X3F,0XF9,0XCF,0XFF,0XE0,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X01,0XFF,0X80,0X00,0X0F,0XF1,0XFF,0XFF,0XE0,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0XFF,0XC0,0X00,0X00,0X3D,0XEF,0XFF,0XE0,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0X7F,0XE0,0X00,0X03,0XFF,0XF7,0XFF,0XC0,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0X3F,0XE0,0X00,0X3F,0XFF,0XFF,0XFF,0X80,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0X1F,0XE0,0X00,0X7E,0XFF,0XFF,0XFF,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0X0F,0XE0,0X00,0X3E,0XFF,0XF1,0XFF,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0X0F,0XE0,0X00,0X3F,0XFF,0XBF,0XFC,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0X07,0XF0,0X00,0X3E,0X7F,0X3F,0XF8,0X38,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0X07,0XF0,0X00,0X7E,0X7F,0XC0,0X00,0X7C,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0X07,0XF0,0X00,0X7E,0X3F,0XC0,0X01,0XFE,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0X07,0XF0,0X00,0X7F,0X1F,0XDF,0XFF,0XFF,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0X03,0XF0,0X00,0X7F,0X87,0XEF,0XFF,0XFF,0X80,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0X03,0XF0,0X00,0X7F,0XE3,0XF1,0XFF,0XFF,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0X03,0XF0,0X01,0X87,0XFC,0X78,0XFE,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0X03,0XF0,0X03,0X01,0XF8,0XFF,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0X03,0XF0,0X0E,0X00,0X01,0XFF,0X80,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0X03,0XF0,0X0C,0X00,0X03,0XFF,0X80,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0X03,0XF0,0X1C,0X00,0X0F,0X98,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0X03,0XF0,0X38,0X00,0X7F,0X9C,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X00,0X00,0X03,0XF0,0X30,0X00,0X3F,0XDC,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X07,0XFE,0X07,0XE0,0X30,0X00,0X1F,0XFE,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X0F,0XFF,0X87,0XF0,0X70,0X00,0X1F,0XFC,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X1F,0XFF,0XC7,0XF0,0X00,0X00,0X0F,0XFE,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X3F,0XFF,0XE7,0XE0,0X00,0X00,0X0F,0XF0,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X7F,0XFF,0XF3,0XE0,0X7F,0XFF,0XEF,0XE0,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0XFF,0X9F,0XFB,0XCF,0XFF,0XFF,0XC6,0X18,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X03,0XFF,0XCF,0XF9,0XDF,0XFF,0XFF,0XC0,0X08,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X0E,0XFF,0XDF,0XFD,0XFF,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X01,0XF0,0XFF,0XFF,0XFD,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X03,0XF8,0XFF,0XFF,0XFD,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X07,0XFC,0XFF,0XDF,0XFD,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X0F,0XFE,0XC7,0XDF,0XFD,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X3E,0X7F,0XF7,0XDF,0XFF,0XFE,0X30,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X3E,0X7F,0XF7,0XDF,0XCF,0XF0,0X38,0X00,0X06,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X7E,0X7F,0XFF,0XFF,0X9F,0XE0,0X38,0X00,0X1F,0XC0,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X7F,0X1F,0XFF,0XFE,0X3E,0X00,0X3C,0X00,0X3B,0XE0,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X7F,0X8F,0XFF,0XFE,0X7C,0X00,0X3C,0X00,0X3B,0XE0,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X7F,0X87,0XFE,0X3F,0XF8,0X00,0X3C,0X00,0X7F,0XF0,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X7F,0XA1,0XF8,0X1F,0XFC,0X00,0X1C,0X00,0X7C,0XF0,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X3F,0XFF,0XF0,0X0F,0XFC,0X00,0X0C,0X00,0X7E,0X7C,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X3F,0XFF,0XF0,0X0F,0XFE,0X00,0X0C,0X00,0X7F,0X3C,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X1F,0XFF,0XF0,0X0F,0XFF,0X00,0X0C,0X00,0X3F,0X80,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X0F,0XFF,0XF0,0X0E,0X7F,0X80,0X0C,0X00,0X3F,0XC0,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X07,0XFF,0XF8,0X0E,0X3F,0XC0,0X0C,0X00,0X1F,0XF0,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X03,0XFF,0XF8,0X1E,0X1F,0XE0,0X0C,0X00,0X0F,0XF0,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X3F,0XFE,0X3F,0X87,0XE0,0X3C,0X00,0X0F,0XBE,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X47,0XFF,0XFF,0XF0,0X60,0X3C,0X00,0X0F,0XBF,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X31,0XFF,0XFF,0XF8,0XE0,0X38,0X00,0X0F,0XBF,0X80,0X00,0X00,0X00,
|
||||
0X00,0X03,0X06,0X11,0XFF,0XFD,0XFF,0XE0,0X38,0X00,0X0F,0X1F,0X80,0X00,0X00,0X00,
|
||||
0X00,0X03,0X0E,0X13,0XFF,0XF9,0XFF,0XE0,0X30,0X00,0X0E,0X07,0X80,0X00,0X00,0X00,
|
||||
0X00,0X03,0X3C,0XD7,0XFD,0XFD,0XFF,0XE0,0X30,0X00,0X1C,0XC7,0X80,0X00,0X00,0X00,
|
||||
0X00,0X03,0X39,0XEF,0XFB,0XFF,0XFF,0XE0,0X30,0X00,0X3D,0XFF,0X80,0X00,0X00,0X00,
|
||||
0X00,0X03,0X73,0XEF,0XFB,0XFF,0XFF,0XE0,0X60,0X00,0X3D,0XFF,0X80,0X00,0X00,0X00,
|
||||
0X00,0X03,0X67,0XEF,0XFB,0XFF,0XFF,0XC0,0XC0,0X00,0X3F,0XFF,0X80,0X00,0X00,0X00,
|
||||
0X00,0X03,0X8F,0XF7,0XE3,0XFF,0XFF,0X80,0XE0,0X00,0X1B,0XFF,0X80,0X00,0X00,0X00,
|
||||
0X00,0X03,0X9F,0XF3,0XE1,0XFF,0XE0,0X01,0XC0,0X00,0X3B,0XFF,0XC0,0X00,0X00,0X00,
|
||||
0X00,0X03,0X3F,0XF1,0XF9,0XFF,0XC0,0X03,0X80,0X00,0X7F,0XFF,0XE0,0X00,0X00,0X00,
|
||||
0X00,0X03,0X7F,0XF1,0XFD,0XFF,0X80,0X07,0X00,0X00,0X1F,0XFF,0XF8,0X00,0X00,0X00,
|
||||
0X00,0X03,0XFF,0XF1,0XFF,0XFF,0X80,0X0F,0X00,0X00,0X3F,0XFF,0XFC,0X00,0X00,0X00,
|
||||
0X00,0X03,0XFF,0XE0,0XFF,0XFF,0X00,0X0E,0X00,0X00,0X3F,0XFF,0X9C,0X00,0X00,0X00,
|
||||
0X00,0X03,0XFF,0X80,0X0F,0XFF,0X00,0X06,0X00,0X00,0X03,0XF6,0X7C,0X00,0X00,0X00,
|
||||
0X00,0X03,0XFF,0X00,0X1F,0X7C,0X00,0XF8,0X00,0X00,0X09,0XF0,0X3C,0X00,0X00,0X00,
|
||||
0X00,0X03,0XFE,0X00,0X3F,0X38,0X01,0XFC,0X00,0X00,0X1C,0XF8,0X1C,0X00,0X00,0X00,
|
||||
0X00,0X03,0XFC,0X00,0XFF,0X90,0X03,0XFE,0X00,0X00,0X3D,0XFF,0X9C,0X00,0X00,0X00,
|
||||
0X00,0X03,0XF8,0X00,0XFF,0XC0,0X0F,0XFF,0X00,0X00,0X73,0XFF,0XCC,0X00,0X00,0X00,
|
||||
0X00,0X03,0XF0,0X00,0XFF,0XE0,0X0F,0XFF,0X00,0X00,0X61,0XFF,0XFC,0X60,0X00,0X00,
|
||||
0X00,0X03,0XF0,0X01,0XFF,0XF0,0X1F,0XFF,0X00,0X00,0XC0,0XFF,0XFF,0XF0,0X00,0X00,
|
||||
0X00,0X07,0XE0,0X01,0XFF,0XBF,0XFF,0XFF,0X80,0X00,0XE0,0X00,0X7F,0XF0,0X00,0X00,
|
||||
0X00,0X03,0XC0,0X01,0XFF,0X3F,0XFF,0XFF,0X80,0X00,0XC0,0X00,0X3F,0XF8,0X00,0X00,
|
||||
0X00,0X01,0X80,0X01,0XFE,0X7F,0XFF,0XFF,0X80,0X00,0X80,0X00,0X1F,0XFC,0X00,0X00,
|
||||
0X00,0X07,0X00,0X00,0XFE,0X7F,0XFF,0XFF,0X80,0X00,0X80,0X00,0X0C,0XFC,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0XF0,0X7F,0XFF,0XFF,0X00,0X00,0X80,0X00,0X04,0X7C,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X7E,0X3F,0XFF,0XFC,0X00,0X01,0X80,0X00,0X03,0XFC,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X7E,0X3F,0XFF,0XFE,0X00,0X01,0X80,0X00,0X01,0XF0,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X3F,0XDF,0XBF,0XFF,0X80,0X01,0X80,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X3F,0XCF,0XBF,0XFF,0XC0,0X01,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0X7F,0XCF,0XFF,0XFF,0XE0,0X01,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X00,0XFF,0XCF,0XCF,0XFF,0XC0,0X01,0X80,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X00,0X1E,0XFF,0XEF,0XC7,0XFF,0XC0,0X01,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X01,0XFC,0XFF,0XE7,0XF0,0X7F,0X80,0X03,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X07,0X07,0XC0,0XFF,0XF3,0XF8,0XFF,0X00,0X0F,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X03,0X0F,0X80,0X7F,0XF3,0XF9,0XFE,0X00,0X0E,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0X1F,0X00,0X3F,0XF3,0XFB,0XFE,0X00,0X0C,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0X38,0X00,0X03,0XF9,0XFB,0XF3,0XE0,0X18,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0XF0,0X00,0X3C,0XF9,0XFB,0XEF,0XF0,0X30,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0XC0,0X00,0X7D,0XF9,0XFB,0XCF,0XF0,0X70,0X00,0X00,0X18,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0XFF,0XF8,0XFB,0XCF,0XFC,0XC0,0X00,0X03,0XF8,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0XFF,0XFC,0XFB,0XFF,0XFC,0X00,0X00,0X07,0XF8,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0XFF,0XDE,0XFB,0XFF,0X7C,0X00,0X00,0X3F,0XFC,0X00,0X00,0X00,
|
||||
0X00,0X01,0X00,0X00,0XFF,0XDE,0XF3,0XFF,0X3C,0X00,0X00,0X7F,0XFE,0X00,0X00,0X00,
|
||||
0X00,0X01,0X00,0X00,0XFF,0XC2,0XF3,0XFF,0X1C,0X00,0X00,0XFF,0XFE,0X00,0X00,0X00,
|
||||
0X00,0X01,0X00,0X00,0XFB,0XE3,0XFF,0XFF,0X3C,0X00,0X00,0XFF,0XFF,0X00,0X00,0X00,
|
||||
0X00,0X01,0X00,0X00,0XF9,0XEF,0XFF,0XFE,0X3C,0X00,0X00,0XFF,0XFF,0X00,0X00,0X00,
|
||||
0X00,0X01,0X00,0X00,0XFC,0XFF,0XFF,0XF9,0XFC,0X00,0X00,0XDC,0X7F,0X00,0X00,0X00,
|
||||
0X00,0X01,0X00,0X01,0XFE,0X7F,0XFF,0XE3,0XFE,0X00,0X00,0XFF,0XBF,0X00,0X00,0X00,
|
||||
0X00,0X01,0X00,0X01,0XFE,0X3F,0XFF,0XC7,0XFE,0X00,0X00,0XFF,0X9F,0X00,0X00,0X00,
|
||||
0X00,0X01,0X00,0X03,0XFF,0X3F,0XFF,0XCF,0XFF,0X00,0X00,0XFF,0XBF,0X00,0X00,0X00,
|
||||
0X00,0X01,0X00,0XFF,0XFF,0XCF,0XFF,0XFF,0XFF,0X80,0X00,0XFF,0XFE,0X00,0X00,0X00,
|
||||
0X00,0X01,0X0F,0XE0,0X7F,0XFF,0X87,0XFF,0XFF,0X80,0X00,0XFF,0XC0,0X00,0X00,0X00,
|
||||
0X00,0X01,0X1F,0X80,0X3F,0XFF,0X03,0XFF,0XCE,0X00,0X00,0XFF,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0XF0,0X00,0X0F,0XFE,0X01,0XFC,0X1E,0X00,0X00,0XF0,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0XE0,0X7F,0XC7,0XFC,0X01,0XFC,0X3E,0X00,0X00,0XC1,0XFF,0XE0,0X00,0X00,
|
||||
0X00,0X01,0XC1,0XFF,0XF7,0XF8,0X01,0XFF,0XFC,0X00,0X01,0X8D,0XFF,0XF0,0X00,0X00,
|
||||
0X00,0X01,0X87,0XFF,0XFB,0XFC,0X01,0XFF,0XF8,0X00,0X0F,0X1E,0XFF,0XF8,0X00,0X00,
|
||||
0X00,0X01,0X3F,0X80,0X03,0XFC,0X01,0XFF,0XF0,0X00,0X0E,0X7E,0X7F,0XFE,0X00,0X00,
|
||||
0X00,0X01,0XF8,0X00,0X07,0XFE,0X01,0XFF,0XE2,0X00,0X1E,0X7F,0X3F,0XFC,0X00,0X00,
|
||||
0X00,0X01,0XE0,0XFF,0X9F,0XDF,0X03,0XFF,0XC6,0X60,0X1C,0XFF,0X8F,0XFE,0X00,0X00,
|
||||
0X00,0X01,0X8F,0XC0,0XFF,0X3F,0XC7,0XEF,0XE3,0X78,0X3E,0X1F,0XCF,0XFF,0X00,0X00,
|
||||
0X00,0X01,0XDF,0X80,0XFE,0X7F,0XEF,0XE7,0XF1,0XBC,0X7F,0X0F,0XCF,0XFF,0XC0,0X00,
|
||||
0X00,0X01,0XFC,0X00,0XFD,0XFF,0XFF,0XE3,0XF1,0X9E,0X3F,0XC3,0XE7,0XFF,0X00,0X00,
|
||||
0X00,0X01,0XF8,0X01,0XF1,0XF9,0XFF,0XF1,0XFD,0XCF,0X9F,0XE1,0XFF,0XFF,0X00,0X00,
|
||||
0X00,0X01,0X80,0X01,0XF3,0XF1,0XFF,0XF9,0XFD,0XC1,0X9F,0XF8,0XFF,0XE0,0X00,0X00,
|
||||
0X00,0X01,0X00,0X01,0XFF,0XE3,0XFD,0XFE,0XFF,0XC0,0X3F,0XF0,0X00,0X03,0X80,0X00,
|
||||
0X00,0X01,0X00,0X00,0XFF,0XE3,0XFD,0XFF,0X7F,0XC0,0X7F,0XC0,0X00,0X07,0X80,0X00,
|
||||
0X00,0X01,0X00,0X00,0XFF,0XE7,0XFC,0XFF,0X07,0X80,0XFF,0XCF,0XFF,0XFF,0X00,0X00,
|
||||
0X00,0X01,0X00,0X00,0XFF,0XEF,0XCE,0X7F,0X07,0X00,0X7E,0X7F,0XFF,0XFE,0X00,0X00,
|
||||
0X00,0X01,0X1F,0XFE,0XFF,0XFF,0XCE,0X7F,0X3E,0X00,0X3E,0X7F,0XFF,0XFC,0X00,0X00,
|
||||
0X00,0X01,0XFF,0XFF,0XFF,0XF1,0XCE,0X3F,0X3E,0X00,0X3F,0XFC,0X07,0XF8,0X00,0X00,
|
||||
0X00,0X01,0XFF,0XFF,0X3F,0XE1,0X8E,0X3F,0X3E,0X00,0X1F,0XFC,0X07,0XF0,0X00,0X00,
|
||||
0X00,0X01,0XE0,0X00,0X0E,0X03,0X8E,0X3F,0X3E,0X00,0X0F,0XFF,0XF8,0X00,0X00,0X00,
|
||||
0X00,0X01,0XFF,0XFF,0X87,0XFF,0X8E,0X3F,0X1E,0X00,0X04,0XFE,0X3E,0X00,0X00,0X00,
|
||||
0X00,0X01,0XFF,0XFF,0XC7,0XFF,0X8F,0X3F,0XBE,0X00,0X00,0XFE,0X1E,0X00,0X00,0X00,
|
||||
0X00,0X01,0XFF,0XFF,0XC7,0XFF,0X8F,0X9F,0XFE,0X00,0X00,0XFC,0X3F,0X80,0X00,0X00,
|
||||
0X00,0X01,0X87,0XFF,0X8F,0XFF,0X8F,0X9F,0XFE,0X00,0X00,0X79,0XFF,0XC0,0X00,0X00,
|
||||
0X00,0X01,0X00,0X06,0X3F,0XFF,0X8F,0XDF,0XFE,0X00,0X00,0X7F,0XFF,0XC0,0X00,0X00,
|
||||
0X00,0X01,0X00,0X00,0X7F,0XFF,0X8F,0X8F,0XFC,0X00,0X00,0X1F,0XFF,0XE0,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0XFF,0XFF,0X8F,0X1F,0X00,0X00,0X00,0X0F,0XFF,0XF0,0X00,0X00,
|
||||
0X00,0X01,0XC0,0X01,0XFF,0XFF,0X8E,0X3F,0X81,0X00,0X00,0X01,0XFF,0XE0,0X00,0X00,
|
||||
0X00,0X01,0XE0,0X01,0XFF,0XFF,0X8E,0X7F,0XC3,0X80,0X00,0X00,0XFF,0X80,0X00,0X00,
|
||||
0X00,0X01,0XF8,0X00,0XFF,0XF3,0X8E,0X7F,0XE7,0XC0,0X00,0X00,0X7F,0X00,0X00,0X00,
|
||||
0X00,0X01,0XFF,0X80,0XFF,0XE7,0X8F,0XFF,0XC4,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0X87,0XE1,0XFF,0XDF,0X8F,0XFF,0XCE,0X1C,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0XF1,0XF8,0XFF,0XFF,0X8F,0XFF,0XCF,0XCF,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0XFE,0X1C,0XFF,0XBE,0X43,0XE0,0X1F,0XF3,0X80,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0XFF,0X06,0X7F,0X3E,0X63,0XC1,0X3F,0XF1,0XE0,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0XFF,0X83,0X3E,0X3C,0XF3,0X81,0X1F,0XF8,0XF0,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0XFF,0XE1,0X80,0X39,0XFF,0X00,0X07,0XFE,0X78,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0XFF,0XFE,0X60,0X1F,0XFE,0X1C,0X03,0XFF,0X1C,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0X0F,0XFF,0X3C,0X1F,0XFE,0X60,0X01,0XFF,0X8E,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0X01,0XFF,0X9E,0X0F,0XFF,0XC0,0X00,0X3F,0XC3,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0X00,0X7F,0XC3,0X8F,0XFD,0X80,0X00,0X3F,0XE3,0X80,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0X00,0X3F,0XE1,0XC7,0XFC,0X00,0X00,0X3F,0XF1,0XC0,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0X00,0X1F,0XF1,0XE3,0XF8,0X00,0X00,0X07,0XF0,0X60,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X0F,0XF1,0XE1,0XF0,0X00,0X00,0X03,0XF8,0X30,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X01,0XF8,0X30,0X00,0X00,0X00,0X01,0XFC,0X3C,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0XF8,0X18,0X00,0X00,0X00,0X00,0XFC,0X0E,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0XFC,0X0C,0X00,0X00,0X00,0X00,0XFE,0X0F,0X00,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X7C,0X0C,0X00,0X00,0X00,0X00,0X7E,0X07,0X80,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X7C,0X06,0X00,0X00,0X00,0X00,0X3F,0X03,0X80,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X7E,0X06,0X00,0X00,0X00,0X00,0X1F,0X81,0X80,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X1E,0X03,0X00,0X00,0X00,0X00,0X0F,0X80,0XC0,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X0E,0X01,0X00,0X00,0X00,0X00,0X07,0X80,0X60,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X0F,0X01,0X80,0X00,0X00,0X00,0X03,0XC0,0X30,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X07,0X81,0XC0,0X00,0X00,0X00,0X01,0XC0,0X38,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X07,0X81,0XC0,0X00,0X00,0X00,0X00,0XC0,0X18,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X07,0XC0,0XE0,0X00,0X00,0X00,0X00,0X40,0X08,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X03,0XC0,0XF0,0X00,0X00,0X00,0X00,0X00,0X04,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X03,0XC0,0X70,0X00,0X00,0X00,0X00,0X00,0X06,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X01,0XC0,0X70,0X00,0XF8,0X00,0X00,0X00,0X02,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X03,0XC0,0X30,0X00,0XFF,0XF0,0X00,0X00,0X07,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X03,0XC0,0X30,0X01,0XFF,0XF8,0X00,0X00,0X03,0X80,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X01,0XC0,0X30,0X01,0XFF,0XFC,0X00,0X00,0X03,0X80,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X01,0XC0,0X18,0X01,0XFF,0XFE,0X00,0X00,0X03,0X80,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X01,0XC0,0X08,0X00,0XFF,0XFF,0X00,0X00,0X01,0XC0,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X01,0XC0,0X08,0X00,0X67,0XFF,0X00,0X00,0X01,0XC0,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X01,0XC0,0X08,0X00,0XFF,0XFF,0X00,0X00,0X00,0XC0,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X01,0X80,0X08,0X03,0XFF,0XBF,0X80,0X00,0X00,0X40,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X07,0XFF,0X3F,0X80,0X00,0X00,0X40,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X03,0XFF,0XBF,0XC0,0X00,0X00,0X40,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X03,0XFF,0X3F,0XC0,0X00,0X00,0X40,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X03,0XF0,0X1F,0XC0,0X00,0X00,0X40,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X03,0XFF,0XCF,0XF0,0X00,0X00,0X40,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X01,0XFF,0XE7,0XFC,0X00,0X00,0XC0,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X01,0XFF,0XF3,0XFF,0XF0,0X01,0XC0,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X01,0XFF,0XF8,0XFF,0XF8,0X01,0X80,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X00,0X7F,0XFC,0X7F,0XFF,0X03,0X80,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X00,0X1F,0XFF,0X00,0X7F,0X83,0X80,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X00,0X3F,0XFF,0X80,0X1F,0XC7,0X80,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X00,0X3F,0XFF,0XFF,0XFF,0XC3,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X00,0X3F,0XFF,0XFF,0XFF,0XC4,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X00,0X3F,0XFF,0XFF,0XFF,0XC4,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X18,0X00,0X1F,0XFF,0XFF,0XFF,0XC4,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X38,0X00,0X0F,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X78,0X00,0X03,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0XF8,0X00,0X00,0X7F,0XFF,0XFF,0XFC,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X01,0XF8,0X00,0X00,0X3F,0XFF,0XFF,0XFC,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X38,0X00,0X00,0X3F,0XFF,0XF9,0XFC,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X18,0X00,0X00,0X3F,0XFF,0XF3,0XFC,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X00,0X00,0X3F,0XFF,0XE7,0XFC,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X00,0X00,0X3C,0XFC,0X1F,0XF8,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X00,0X8C,0X00,0X00,0X7E,0X00,0X7F,0X98,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0X79,0X8C,0X00,0X07,0XFF,0X0F,0XFF,0X9C,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X00,0XFC,0XC6,0X00,0X0F,0XFF,0X7F,0XFF,0X78,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X01,0XF8,0X46,0X00,0X0F,0XFF,0X7F,0XFE,0X78,0X00,0X00,0X00,
|
||||
0X00,0X01,0X80,0X00,0X03,0XFC,0X07,0X00,0X0F,0XFF,0X7F,0XFE,0X78,0X00,0X00,0X00,
|
||||
0X00,0X00,0X80,0X00,0X07,0XFE,0X07,0XC0,0X0F,0XFF,0X7F,0XFE,0X60,0X00,0X00,0X00,
|
||||
0X00,0X00,0X80,0X00,0X07,0XF9,0XE7,0XE0,0X07,0XFF,0X7F,0XF8,0XC0,0X00,0X00,0X00,
|
||||
0X00,0X00,0X80,0X00,0X03,0XE3,0XF3,0XF0,0X03,0XFF,0XFF,0XF1,0XC0,0X00,0X00,0X00,
|
||||
0X00,0X00,0X80,0X00,0X7F,0XC3,0XF3,0X38,0X01,0XFF,0XFF,0XF1,0X80,0X00,0X00,0X00,
|
||||
0X00,0X00,0X80,0X00,0XFF,0XDF,0XF3,0X1C,0X00,0X7F,0XFF,0XE3,0X80,0X00,0X00,0X00,
|
||||
0X00,0X00,0X80,0X00,0XFF,0X9F,0XF3,0X8E,0X00,0X3F,0XFF,0XE7,0X80,0X00,0X00,0X00,
|
||||
0X00,0X00,0X80,0X00,0XFE,0X33,0XFB,0XCF,0X00,0X1F,0XFF,0XCF,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X80,0X01,0XFE,0X3F,0XF1,0XCF,0X00,0X0F,0XFF,0XCF,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X80,0X00,0X0C,0X7F,0XCD,0XE3,0X80,0X0F,0XFF,0XDF,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X80,0X01,0X01,0XFC,0X8E,0X7F,0X80,0X0F,0XFF,0X9F,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X80,0X0F,0XF9,0XFC,0X1E,0X3F,0X80,0X0F,0XF3,0XBF,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X80,0X0F,0XFD,0XFC,0X3E,0X3F,0X80,0X0F,0XE1,0XBF,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X80,0X0F,0XFC,0XFC,0X3F,0X3F,0X80,0X0F,0XC1,0X3F,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X80,0X1F,0XE5,0XF8,0X3B,0X9F,0X80,0X0F,0XC2,0X3F,0X80,0X00,0X00,0X00,
|
||||
0X00,0X00,0X80,0X1F,0XCF,0XF0,0X33,0XDF,0XC0,0X03,0X9C,0X0F,0X80,0X00,0X00,0X00,
|
||||
0X00,0X00,0X80,0X00,0X0E,0X00,0X39,0XD9,0XC0,0X00,0X38,0X63,0XC0,0X00,0X00,0X00,
|
||||
0X00,0X00,0X80,0X0F,0XFE,0X00,0X0F,0XEE,0XF0,0X00,0XFF,0XF3,0XF0,0X00,0X00,0X00,
|
||||
0X00,0X00,0X80,0X1F,0XFE,0X00,0X07,0XEE,0X78,0X01,0XFF,0XFF,0XF0,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X1F,0XFE,0X00,0X07,0XEE,0X3C,0X01,0XFF,0XFF,0XF0,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X1F,0XFE,0X00,0X07,0XEF,0X3C,0X01,0XFF,0XFF,0XF0,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X1F,0X7C,0X00,0X00,0XEF,0XFC,0X01,0XFF,0XFF,0XF0,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X1E,0X1C,0X00,0X00,0X6F,0XFC,0X01,0XFF,0XFF,0XC0,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X33,0XFE,0X00,0XFF,0XFF,0XC0,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFE,0X00,0XFF,0XFF,0X80,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XFE,0X00,0X3F,0XFF,0X80,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XFE,0X00,0X1F,0XFF,0X80,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFC,0X00,0X03,0XFF,0X80,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFE,0X00,0X03,0XFF,0X80,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7E,0X00,0X03,0XFF,0X80,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFE,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X78,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X30,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||
};
|
||||
30
Arduino/epd2in13_V2/imagedata.h
Normal file
30
Arduino/epd2in13_V2/imagedata.h
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
/**
|
||||
* @filename : imagedata.h
|
||||
* @brief : head file for imagedata.cpp
|
||||
*
|
||||
* Copyright (C) Waveshare September 5 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
extern const unsigned char IMAGE_DATA[];
|
||||
|
||||
/* FILE END */
|
||||
|
||||
|
||||
264
Arduino/epd2in13bc/epd2in13b.cpp
Normal file
264
Arduino/epd2in13bc/epd2in13b.cpp
Normal file
|
|
@ -0,0 +1,264 @@
|
|||
/**
|
||||
* @filename : epd2in9b.cpp
|
||||
* @brief : Implements for Dual-color e-paper library
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare August 10 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include "epd2in13b.h"
|
||||
|
||||
Epd::~Epd() {
|
||||
};
|
||||
|
||||
Epd::Epd() {
|
||||
reset_pin = RST_PIN;
|
||||
dc_pin = DC_PIN;
|
||||
cs_pin = CS_PIN;
|
||||
busy_pin = BUSY_PIN;
|
||||
width = EPD_WIDTH;
|
||||
height = EPD_HEIGHT;
|
||||
};
|
||||
|
||||
int Epd::Init(void) {
|
||||
/* this calls the peripheral hardware interface, see epdif */
|
||||
if (IfInit() != 0) {
|
||||
return -1;
|
||||
}
|
||||
/* EPD hardware init start */
|
||||
Reset();
|
||||
SendCommand(BOOSTER_SOFT_START);
|
||||
SendData(0x17);
|
||||
SendData(0x17);
|
||||
SendData(0x17);
|
||||
SendCommand(POWER_ON);
|
||||
WaitUntilIdle();
|
||||
SendCommand(PANEL_SETTING);
|
||||
SendData(0x8F);
|
||||
SendCommand(VCOM_AND_DATA_INTERVAL_SETTING);
|
||||
SendData(0x37);
|
||||
SendCommand(RESOLUTION_SETTING);
|
||||
SendData(0x68); // width: 104
|
||||
SendData(0x00);
|
||||
SendData(0xD4); // height: 212
|
||||
/* EPD hardware init end */
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: basic function for sending commands
|
||||
*/
|
||||
void Epd::SendCommand(unsigned char command) {
|
||||
DigitalWrite(dc_pin, LOW);
|
||||
SpiTransfer(command);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: basic function for sending data
|
||||
*/
|
||||
void Epd::SendData(unsigned char data) {
|
||||
DigitalWrite(dc_pin, HIGH);
|
||||
SpiTransfer(data);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: Wait until the busy_pin goes HIGH
|
||||
*/
|
||||
void Epd::WaitUntilIdle(void) {
|
||||
while(DigitalRead(busy_pin) == 0) { //0: busy, 1: idle
|
||||
DelayMs(100);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: module reset.
|
||||
* often used to awaken the module in deep sleep,
|
||||
* see Epd::Sleep();
|
||||
*/
|
||||
void Epd::Reset(void) {
|
||||
DigitalWrite(reset_pin, LOW);
|
||||
DelayMs(200);
|
||||
DigitalWrite(reset_pin, HIGH);
|
||||
DelayMs(200);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: transmit partial data to the SRAM
|
||||
*/
|
||||
void Epd::SetPartialWindow(const unsigned char* buffer_black, const unsigned char* buffer_red, int x, int y, int w, int l) {
|
||||
SendCommand(PARTIAL_IN);
|
||||
SendCommand(PARTIAL_WINDOW);
|
||||
SendData(x & 0xf8); // x should be the multiple of 8, the last 3 bit will always be ignored
|
||||
SendData(((x & 0xf8) + w - 1) | 0x07);
|
||||
SendData(y >> 8);
|
||||
SendData(y & 0xff);
|
||||
SendData((y + l - 1) >> 8);
|
||||
SendData((y + l - 1) & 0xff);
|
||||
SendData(0x01); // Gates scan both inside and outside of the partial window. (default)
|
||||
DelayMs(2);
|
||||
SendCommand(DATA_START_TRANSMISSION_1);
|
||||
if (buffer_black != NULL) {
|
||||
for(int i = 0; i < w / 8 * l; i++) {
|
||||
SendData(buffer_black[i]);
|
||||
}
|
||||
} else {
|
||||
for(int i = 0; i < w / 8 * l; i++) {
|
||||
SendData(0x00);
|
||||
}
|
||||
}
|
||||
DelayMs(2);
|
||||
SendCommand(DATA_START_TRANSMISSION_2);
|
||||
if (buffer_red != NULL) {
|
||||
for(int i = 0; i < w / 8 * l; i++) {
|
||||
SendData(buffer_red[i]);
|
||||
}
|
||||
} else {
|
||||
for(int i = 0; i < w / 8 * l; i++) {
|
||||
SendData(0x00);
|
||||
}
|
||||
}
|
||||
DelayMs(2);
|
||||
SendCommand(PARTIAL_OUT);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: transmit partial data to the black part of SRAM
|
||||
*/
|
||||
void Epd::SetPartialWindowBlack(const unsigned char* buffer_black, int x, int y, int w, int l) {
|
||||
SendCommand(PARTIAL_IN);
|
||||
SendCommand(PARTIAL_WINDOW);
|
||||
SendData(x & 0xf8); // x should be the multiple of 8, the last 3 bit will always be ignored
|
||||
SendData(((x & 0xf8) + w - 1) | 0x07);
|
||||
SendData(y >> 8);
|
||||
SendData(y & 0xff);
|
||||
SendData((y + l - 1) >> 8);
|
||||
SendData((y + l - 1) & 0xff);
|
||||
SendData(0x01); // Gates scan both inside and outside of the partial window. (default)
|
||||
DelayMs(2);
|
||||
SendCommand(DATA_START_TRANSMISSION_1);
|
||||
if (buffer_black != NULL) {
|
||||
for(int i = 0; i < w / 8 * l; i++) {
|
||||
SendData(buffer_black[i]);
|
||||
}
|
||||
} else {
|
||||
for(int i = 0; i < w / 8 * l; i++) {
|
||||
SendData(0x00);
|
||||
}
|
||||
}
|
||||
DelayMs(2);
|
||||
SendCommand(PARTIAL_OUT);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: transmit partial data to the red part of SRAM
|
||||
*/
|
||||
void Epd::SetPartialWindowRed(const unsigned char* buffer_red, int x, int y, int w, int l) {
|
||||
SendCommand(PARTIAL_IN);
|
||||
SendCommand(PARTIAL_WINDOW);
|
||||
SendData(x & 0xf8); // x should be the multiple of 8, the last 3 bit will always be ignored
|
||||
SendData(((x & 0xf8) + w - 1) | 0x07);
|
||||
SendData(y >> 8);
|
||||
SendData(y & 0xff);
|
||||
SendData((y + l - 1) >> 8);
|
||||
SendData((y + l - 1) & 0xff);
|
||||
SendData(0x01); // Gates scan both inside and outside of the partial window. (default)
|
||||
DelayMs(2);
|
||||
SendCommand(DATA_START_TRANSMISSION_2);
|
||||
if (buffer_red != NULL) {
|
||||
for(int i = 0; i < w / 8 * l; i++) {
|
||||
SendData(buffer_red[i]);
|
||||
}
|
||||
} else {
|
||||
for(int i = 0; i < w / 8 * l; i++) {
|
||||
SendData(0x00);
|
||||
}
|
||||
}
|
||||
DelayMs(2);
|
||||
SendCommand(PARTIAL_OUT);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: refresh and displays the frame
|
||||
*/
|
||||
void Epd::DisplayFrame(const unsigned char* frame_buffer_black, const unsigned char* frame_buffer_red) {
|
||||
if (frame_buffer_black != NULL) {
|
||||
SendCommand(DATA_START_TRANSMISSION_1);
|
||||
DelayMs(2);
|
||||
for (int i = 0; i < this->width * this->height / 8; i++) {
|
||||
SendData(pgm_read_byte(&frame_buffer_black[i]));
|
||||
}
|
||||
DelayMs(2);
|
||||
}
|
||||
if (frame_buffer_red != NULL) {
|
||||
SendCommand(DATA_START_TRANSMISSION_2);
|
||||
DelayMs(2);
|
||||
for (int i = 0; i < this->width * this->height / 8; i++) {
|
||||
SendData(pgm_read_byte(&frame_buffer_red[i]));
|
||||
}
|
||||
DelayMs(2);
|
||||
}
|
||||
SendCommand(DISPLAY_REFRESH);
|
||||
WaitUntilIdle();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: clear the frame data from the SRAM, this won't refresh the display
|
||||
*/
|
||||
void Epd::ClearFrame(void) {
|
||||
SendCommand(DATA_START_TRANSMISSION_1);
|
||||
DelayMs(2);
|
||||
for(int i = 0; i < width * height / 8; i++) {
|
||||
SendData(0xFF);
|
||||
}
|
||||
DelayMs(2);
|
||||
SendCommand(DATA_START_TRANSMISSION_2);
|
||||
DelayMs(2);
|
||||
for(int i = 0; i < width * height / 8; i++) {
|
||||
SendData(0xFF);
|
||||
}
|
||||
DelayMs(2);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: This displays the frame data from SRAM
|
||||
*/
|
||||
void Epd::DisplayFrame(void) {
|
||||
SendCommand(DISPLAY_REFRESH);
|
||||
WaitUntilIdle();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: After this command is transmitted, the chip would enter the deep-sleep mode to save power.
|
||||
* The deep sleep mode would return to standby by hardware reset. The only one parameter is a
|
||||
* check code, the command would be executed if check code = 0xA5.
|
||||
* You can use Epd::Reset() to awaken and use Epd::Init() to initialize.
|
||||
*/
|
||||
void Epd::Sleep() {
|
||||
SendCommand(POWER_OFF);
|
||||
WaitUntilIdle();
|
||||
SendCommand(DEEP_SLEEP);
|
||||
SendData(0xA5); // check code
|
||||
}
|
||||
|
||||
|
||||
/* END OF FILE */
|
||||
104
Arduino/epd2in13bc/epd2in13b.h
Normal file
104
Arduino/epd2in13bc/epd2in13b.h
Normal file
|
|
@ -0,0 +1,104 @@
|
|||
/**
|
||||
* @filename : epd2in13b.h
|
||||
* @brief : Header file for Dual-color e-paper library epd2in13b.cpp
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare July 31 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef EPD2IN13B_H
|
||||
#define EPD2IN13B_H
|
||||
|
||||
#include "epdif.h"
|
||||
|
||||
// Display resolution
|
||||
#define EPD_WIDTH 104
|
||||
#define EPD_HEIGHT 212
|
||||
|
||||
// EPD2IN13B commands
|
||||
#define PANEL_SETTING 0x00
|
||||
#define POWER_SETTING 0x01
|
||||
#define POWER_OFF 0x02
|
||||
#define POWER_OFF_SEQUENCE_SETTING 0x03
|
||||
#define POWER_ON 0x04
|
||||
#define POWER_ON_MEASURE 0x05
|
||||
#define BOOSTER_SOFT_START 0x06
|
||||
#define DEEP_SLEEP 0x07
|
||||
#define DATA_START_TRANSMISSION_1 0x10
|
||||
#define DATA_STOP 0x11
|
||||
#define DISPLAY_REFRESH 0x12
|
||||
#define DATA_START_TRANSMISSION_2 0x13
|
||||
#define VCOM_LUT 0x20
|
||||
#define W2W_LUT 0x21
|
||||
#define B2W_LUT 0x22
|
||||
#define W2B_LUT 0x23
|
||||
#define B2B_LUT 0x24
|
||||
#define PLL_CONTROL 0x30
|
||||
#define TEMPERATURE_SENSOR_CALIBRATION 0x40
|
||||
#define TEMPERATURE_SENSOR_SELECTION 0x41
|
||||
#define TEMPERATURE_SENSOR_WRITE 0x42
|
||||
#define TEMPERATURE_SENSOR_READ 0x43
|
||||
#define VCOM_AND_DATA_INTERVAL_SETTING 0x50
|
||||
#define LOW_POWER_DETECTION 0x51
|
||||
#define TCON_SETTING 0x60
|
||||
#define RESOLUTION_SETTING 0x61
|
||||
#define GET_STATUS 0x71
|
||||
#define AUTO_MEASURE_VCOM 0x80
|
||||
#define READ_VCOM_VALUE 0x81
|
||||
#define VCM_DC_SETTING 0x82
|
||||
#define PARTIAL_WINDOW 0x90
|
||||
#define PARTIAL_IN 0x91
|
||||
#define PARTIAL_OUT 0x92
|
||||
#define PROGRAM_MODE 0xA0
|
||||
#define ACTIVE_PROGRAM 0xA1
|
||||
#define READ_OTP_DATA 0xA2
|
||||
#define POWER_SAVING 0xE3
|
||||
|
||||
class Epd : EpdIf {
|
||||
public:
|
||||
int width;
|
||||
int height;
|
||||
|
||||
Epd();
|
||||
~Epd();
|
||||
int Init(void);
|
||||
void SendCommand(unsigned char command);
|
||||
void SendData(unsigned char data);
|
||||
void WaitUntilIdle(void);
|
||||
void Reset(void);
|
||||
void SetPartialWindow(const unsigned char* buffer_black, const unsigned char* buffer_red, int x, int y, int w, int l);
|
||||
void SetPartialWindowBlack(const unsigned char* buffer_black, int x, int y, int w, int l);
|
||||
void SetPartialWindowRed(const unsigned char* buffer_red, int x, int y, int w, int l);
|
||||
void DisplayFrame(const unsigned char* frame_buffer_black, const unsigned char* frame_buffer_red);
|
||||
void DisplayFrame(void);
|
||||
void ClearFrame(void);
|
||||
void Sleep(void);
|
||||
|
||||
private:
|
||||
unsigned int reset_pin;
|
||||
unsigned int dc_pin;
|
||||
unsigned int cs_pin;
|
||||
unsigned int busy_pin;
|
||||
};
|
||||
|
||||
#endif /* EPD2IN13B_H */
|
||||
|
||||
/* END OF FILE */
|
||||
100
Arduino/epd2in13bc/epd2in13bc.ino
Normal file
100
Arduino/epd2in13bc/epd2in13bc.ino
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
/**
|
||||
* @filename : epd2in13b-demo.ino
|
||||
* @brief : 2.13inch e-paper display (B) demo
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare July 17 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <SPI.h>
|
||||
#include "epd2in13b.h"
|
||||
#include "imagedata.h"
|
||||
#include "epdpaint.h"
|
||||
|
||||
#define COLORED 0
|
||||
#define UNCOLORED 1
|
||||
|
||||
void setup() {
|
||||
// put your setup code here, to run once:
|
||||
Serial.begin(9600);
|
||||
Epd epd;
|
||||
|
||||
if (epd.Init() != 0) {
|
||||
Serial.print("e-Paper init failed");
|
||||
return;
|
||||
}
|
||||
|
||||
/* This clears the SRAM of the e-paper display */
|
||||
epd.ClearFrame();
|
||||
|
||||
/**
|
||||
* Due to RAM not enough in Arduino UNO, a frame buffer is not allowed.
|
||||
* In this case, a smaller image buffer is allocated and you have to
|
||||
* update a partial display several times.
|
||||
* 1 byte = 8 pixels, therefore you have to set 8*N pixels at a time.
|
||||
*/
|
||||
unsigned char image[1024];
|
||||
Paint paint(image, 128, 18); //width should be the multiple of 8
|
||||
|
||||
paint.Clear(UNCOLORED);
|
||||
paint.DrawStringAt(8, 2, "e-Paper Demo", &Font12, COLORED);
|
||||
epd.SetPartialWindowBlack(paint.GetImage(), 0, 8, paint.GetWidth(), paint.GetHeight());
|
||||
|
||||
paint.Clear(COLORED);
|
||||
paint.DrawStringAt(8, 2, "Hello world", &Font12, UNCOLORED);
|
||||
epd.SetPartialWindowRed(paint.GetImage(), 0, 24, paint.GetWidth(), paint.GetHeight());
|
||||
|
||||
paint.SetWidth(64);
|
||||
paint.SetHeight(64);
|
||||
|
||||
paint.Clear(UNCOLORED);
|
||||
paint.DrawRectangle(0, 0, 40, 50, COLORED);
|
||||
paint.DrawLine(0, 0, 40, 50, COLORED);
|
||||
paint.DrawLine(40, 0, 0, 50, COLORED);
|
||||
epd.SetPartialWindowBlack(paint.GetImage(), 8, 72, paint.GetWidth(), paint.GetHeight());
|
||||
|
||||
paint.Clear(UNCOLORED);
|
||||
paint.DrawCircle(16, 16, 15, COLORED);
|
||||
epd.SetPartialWindowBlack(paint.GetImage(), 64, 72, paint.GetWidth(), paint.GetHeight());
|
||||
|
||||
paint.Clear(UNCOLORED);
|
||||
paint.DrawFilledRectangle(0, 0, 40, 50, COLORED);
|
||||
epd.SetPartialWindowRed(paint.GetImage(), 8, 144, paint.GetWidth(), paint.GetHeight());
|
||||
|
||||
paint.Clear(UNCOLORED);
|
||||
paint.DrawFilledCircle(16, 16, 15, COLORED);
|
||||
epd.SetPartialWindowRed(paint.GetImage(), 64, 144, paint.GetWidth(), paint.GetHeight());
|
||||
|
||||
/* This displays the data from the SRAM in e-Paper module */
|
||||
epd.DisplayFrame();
|
||||
|
||||
/* This displays an image */
|
||||
epd.DisplayFrame(IMAGE_BLACK, IMAGE_RED);
|
||||
|
||||
/* Deep sleep */
|
||||
epd.Sleep();
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// put your main code here, to run repeatedly:
|
||||
|
||||
}
|
||||
|
||||
64
Arduino/epd2in13bc/epdif.cpp
Normal file
64
Arduino/epd2in13bc/epdif.cpp
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
/**
|
||||
* @filename : epdif.cpp
|
||||
* @brief : Implements EPD interface functions
|
||||
* Users have to implement all the functions in epdif.cpp
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare August 10 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "epdif.h"
|
||||
#include <SPI.h>
|
||||
|
||||
EpdIf::EpdIf() {
|
||||
};
|
||||
|
||||
EpdIf::~EpdIf() {
|
||||
};
|
||||
|
||||
void EpdIf::DigitalWrite(int pin, int value) {
|
||||
digitalWrite(pin, value);
|
||||
}
|
||||
|
||||
int EpdIf::DigitalRead(int pin) {
|
||||
return digitalRead(pin);
|
||||
}
|
||||
|
||||
void EpdIf::DelayMs(unsigned int delaytime) {
|
||||
delay(delaytime);
|
||||
}
|
||||
|
||||
void EpdIf::SpiTransfer(unsigned char data) {
|
||||
digitalWrite(CS_PIN, LOW);
|
||||
SPI.transfer(data);
|
||||
digitalWrite(CS_PIN, HIGH);
|
||||
}
|
||||
|
||||
int EpdIf::IfInit(void) {
|
||||
pinMode(CS_PIN, OUTPUT);
|
||||
pinMode(RST_PIN, OUTPUT);
|
||||
pinMode(DC_PIN, OUTPUT);
|
||||
pinMode(BUSY_PIN, INPUT);
|
||||
SPI.begin();
|
||||
SPI.beginTransaction(SPISettings(2000000, MSBFIRST, SPI_MODE0));
|
||||
return 0;
|
||||
}
|
||||
|
||||
51
Arduino/epd2in13bc/epdif.h
Normal file
51
Arduino/epd2in13bc/epdif.h
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
/**
|
||||
* @filename : epdif.h
|
||||
* @brief : Header file of epdif.cpp providing EPD interface functions
|
||||
* Users have to implement all the functions in epdif.cpp
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare August 10 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef EPDIF_H
|
||||
#define EPDIF_H
|
||||
|
||||
#include <Arduino.h>
|
||||
|
||||
// Pin definition
|
||||
#define RST_PIN 8
|
||||
#define DC_PIN 9
|
||||
#define CS_PIN 10
|
||||
#define BUSY_PIN 7
|
||||
|
||||
class EpdIf {
|
||||
public:
|
||||
EpdIf(void);
|
||||
~EpdIf(void);
|
||||
|
||||
static int IfInit(void);
|
||||
static void DigitalWrite(int pin, int value);
|
||||
static int DigitalRead(int pin);
|
||||
static void DelayMs(unsigned int delaytime);
|
||||
static void SpiTransfer(unsigned char data);
|
||||
};
|
||||
|
||||
#endif
|
||||
342
Arduino/epd2in13bc/epdpaint.cpp
Normal file
342
Arduino/epd2in13bc/epdpaint.cpp
Normal file
|
|
@ -0,0 +1,342 @@
|
|||
/**
|
||||
* @filename : epdpaint.cpp
|
||||
* @brief : Paint tools
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare September 9 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <avr/pgmspace.h>
|
||||
#include "epdpaint.h"
|
||||
|
||||
Paint::Paint(unsigned char* image, int width, int height) {
|
||||
this->rotate = ROTATE_0;
|
||||
this->image = image;
|
||||
/* 1 byte = 8 pixels, so the width should be the multiple of 8 */
|
||||
this->width = width % 8 ? width + 8 - (width % 8) : width;
|
||||
this->height = height;
|
||||
}
|
||||
|
||||
Paint::~Paint() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: clear the image
|
||||
*/
|
||||
void Paint::Clear(int colored) {
|
||||
for (int x = 0; x < this->width; x++) {
|
||||
for (int y = 0; y < this->height; y++) {
|
||||
DrawAbsolutePixel(x, y, colored);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a pixel by absolute coordinates.
|
||||
* this function won't be affected by the rotate parameter.
|
||||
*/
|
||||
void Paint::DrawAbsolutePixel(int x, int y, int colored) {
|
||||
if (x < 0 || x >= this->width || y < 0 || y >= this->height) {
|
||||
return;
|
||||
}
|
||||
if (IF_INVERT_COLOR) {
|
||||
if (colored) {
|
||||
image[(x + y * this->width) / 8] |= 0x80 >> (x % 8);
|
||||
} else {
|
||||
image[(x + y * this->width) / 8] &= ~(0x80 >> (x % 8));
|
||||
}
|
||||
} else {
|
||||
if (colored) {
|
||||
image[(x + y * this->width) / 8] &= ~(0x80 >> (x % 8));
|
||||
} else {
|
||||
image[(x + y * this->width) / 8] |= 0x80 >> (x % 8);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: Getters and Setters
|
||||
*/
|
||||
unsigned char* Paint::GetImage(void) {
|
||||
return this->image;
|
||||
}
|
||||
|
||||
int Paint::GetWidth(void) {
|
||||
return this->width;
|
||||
}
|
||||
|
||||
void Paint::SetWidth(int width) {
|
||||
this->width = width % 8 ? width + 8 - (width % 8) : width;
|
||||
}
|
||||
|
||||
int Paint::GetHeight(void) {
|
||||
return this->height;
|
||||
}
|
||||
|
||||
void Paint::SetHeight(int height) {
|
||||
this->height = height;
|
||||
}
|
||||
|
||||
int Paint::GetRotate(void) {
|
||||
return this->rotate;
|
||||
}
|
||||
|
||||
void Paint::SetRotate(int rotate){
|
||||
this->rotate = rotate;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a pixel by the coordinates
|
||||
*/
|
||||
void Paint::DrawPixel(int x, int y, int colored) {
|
||||
int point_temp;
|
||||
if (this->rotate == ROTATE_0) {
|
||||
if(x < 0 || x >= this->width || y < 0 || y >= this->height) {
|
||||
return;
|
||||
}
|
||||
DrawAbsolutePixel(x, y, colored);
|
||||
} else if (this->rotate == ROTATE_90) {
|
||||
if(x < 0 || x >= this->height || y < 0 || y >= this->width) {
|
||||
return;
|
||||
}
|
||||
point_temp = x;
|
||||
x = this->width - y;
|
||||
y = point_temp;
|
||||
DrawAbsolutePixel(x, y, colored);
|
||||
} else if (this->rotate == ROTATE_180) {
|
||||
if(x < 0 || x >= this->width || y < 0 || y >= this->height) {
|
||||
return;
|
||||
}
|
||||
x = this->width - x;
|
||||
y = this->height - y;
|
||||
DrawAbsolutePixel(x, y, colored);
|
||||
} else if (this->rotate == ROTATE_270) {
|
||||
if(x < 0 || x >= this->height || y < 0 || y >= this->width) {
|
||||
return;
|
||||
}
|
||||
point_temp = x;
|
||||
x = y;
|
||||
y = this->height - point_temp;
|
||||
DrawAbsolutePixel(x, y, colored);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a charactor on the frame buffer but not refresh
|
||||
*/
|
||||
void Paint::DrawCharAt(int x, int y, char ascii_char, sFONT* font, int colored) {
|
||||
int i, j;
|
||||
unsigned int char_offset = (ascii_char - ' ') * font->Height * (font->Width / 8 + (font->Width % 8 ? 1 : 0));
|
||||
const unsigned char* ptr = &font->table[char_offset];
|
||||
|
||||
for (j = 0; j < font->Height; j++) {
|
||||
for (i = 0; i < font->Width; i++) {
|
||||
if (pgm_read_byte(ptr) & (0x80 >> (i % 8))) {
|
||||
DrawPixel(x + i, y + j, colored);
|
||||
}
|
||||
if (i % 8 == 7) {
|
||||
ptr++;
|
||||
}
|
||||
}
|
||||
if (font->Width % 8 != 0) {
|
||||
ptr++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this displays a string on the frame buffer but not refresh
|
||||
*/
|
||||
void Paint::DrawStringAt(int x, int y, const char* text, sFONT* font, int colored) {
|
||||
const char* p_text = text;
|
||||
unsigned int counter = 0;
|
||||
int refcolumn = x;
|
||||
|
||||
/* Send the string character by character on EPD */
|
||||
while (*p_text != 0) {
|
||||
/* Display one character on EPD */
|
||||
DrawCharAt(refcolumn, y, *p_text, font, colored);
|
||||
/* Decrement the column position by 16 */
|
||||
refcolumn += font->Width;
|
||||
/* Point on the next character */
|
||||
p_text++;
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a line on the frame buffer
|
||||
*/
|
||||
void Paint::DrawLine(int x0, int y0, int x1, int y1, int colored) {
|
||||
/* Bresenham algorithm */
|
||||
int dx = x1 - x0 >= 0 ? x1 - x0 : x0 - x1;
|
||||
int sx = x0 < x1 ? 1 : -1;
|
||||
int dy = y1 - y0 <= 0 ? y1 - y0 : y0 - y1;
|
||||
int sy = y0 < y1 ? 1 : -1;
|
||||
int err = dx + dy;
|
||||
|
||||
while((x0 != x1) && (y0 != y1)) {
|
||||
DrawPixel(x0, y0 , colored);
|
||||
if (2 * err >= dy) {
|
||||
err += dy;
|
||||
x0 += sx;
|
||||
}
|
||||
if (2 * err <= dx) {
|
||||
err += dx;
|
||||
y0 += sy;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a horizontal line on the frame buffer
|
||||
*/
|
||||
void Paint::DrawHorizontalLine(int x, int y, int line_width, int colored) {
|
||||
int i;
|
||||
for (i = x; i < x + line_width; i++) {
|
||||
DrawPixel(i, y, colored);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a vertical line on the frame buffer
|
||||
*/
|
||||
void Paint::DrawVerticalLine(int x, int y, int line_height, int colored) {
|
||||
int i;
|
||||
for (i = y; i < y + line_height; i++) {
|
||||
DrawPixel(x, i, colored);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a rectangle
|
||||
*/
|
||||
void Paint::DrawRectangle(int x0, int y0, int x1, int y1, int colored) {
|
||||
int min_x, min_y, max_x, max_y;
|
||||
min_x = x1 > x0 ? x0 : x1;
|
||||
max_x = x1 > x0 ? x1 : x0;
|
||||
min_y = y1 > y0 ? y0 : y1;
|
||||
max_y = y1 > y0 ? y1 : y0;
|
||||
|
||||
DrawHorizontalLine(min_x, min_y, max_x - min_x + 1, colored);
|
||||
DrawHorizontalLine(min_x, max_y, max_x - min_x + 1, colored);
|
||||
DrawVerticalLine(min_x, min_y, max_y - min_y + 1, colored);
|
||||
DrawVerticalLine(max_x, min_y, max_y - min_y + 1, colored);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a filled rectangle
|
||||
*/
|
||||
void Paint::DrawFilledRectangle(int x0, int y0, int x1, int y1, int colored) {
|
||||
int min_x, min_y, max_x, max_y;
|
||||
int i;
|
||||
min_x = x1 > x0 ? x0 : x1;
|
||||
max_x = x1 > x0 ? x1 : x0;
|
||||
min_y = y1 > y0 ? y0 : y1;
|
||||
max_y = y1 > y0 ? y1 : y0;
|
||||
|
||||
for (i = min_x; i <= max_x; i++) {
|
||||
DrawVerticalLine(i, min_y, max_y - min_y + 1, colored);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a circle
|
||||
*/
|
||||
void Paint::DrawCircle(int x, int y, int radius, int colored) {
|
||||
/* Bresenham algorithm */
|
||||
int x_pos = -radius;
|
||||
int y_pos = 0;
|
||||
int err = 2 - 2 * radius;
|
||||
int e2;
|
||||
|
||||
do {
|
||||
DrawPixel(x - x_pos, y + y_pos, colored);
|
||||
DrawPixel(x + x_pos, y + y_pos, colored);
|
||||
DrawPixel(x + x_pos, y - y_pos, colored);
|
||||
DrawPixel(x - x_pos, y - y_pos, colored);
|
||||
e2 = err;
|
||||
if (e2 <= y_pos) {
|
||||
err += ++y_pos * 2 + 1;
|
||||
if(-x_pos == y_pos && e2 <= x_pos) {
|
||||
e2 = 0;
|
||||
}
|
||||
}
|
||||
if (e2 > x_pos) {
|
||||
err += ++x_pos * 2 + 1;
|
||||
}
|
||||
} while (x_pos <= 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief: this draws a filled circle
|
||||
*/
|
||||
void Paint::DrawFilledCircle(int x, int y, int radius, int colored) {
|
||||
/* Bresenham algorithm */
|
||||
int x_pos = -radius;
|
||||
int y_pos = 0;
|
||||
int err = 2 - 2 * radius;
|
||||
int e2;
|
||||
|
||||
do {
|
||||
DrawPixel(x - x_pos, y + y_pos, colored);
|
||||
DrawPixel(x + x_pos, y + y_pos, colored);
|
||||
DrawPixel(x + x_pos, y - y_pos, colored);
|
||||
DrawPixel(x - x_pos, y - y_pos, colored);
|
||||
DrawHorizontalLine(x + x_pos, y + y_pos, 2 * (-x_pos) + 1, colored);
|
||||
DrawHorizontalLine(x + x_pos, y - y_pos, 2 * (-x_pos) + 1, colored);
|
||||
e2 = err;
|
||||
if (e2 <= y_pos) {
|
||||
err += ++y_pos * 2 + 1;
|
||||
if(-x_pos == y_pos && e2 <= x_pos) {
|
||||
e2 = 0;
|
||||
}
|
||||
}
|
||||
if(e2 > x_pos) {
|
||||
err += ++x_pos * 2 + 1;
|
||||
}
|
||||
} while(x_pos <= 0);
|
||||
}
|
||||
|
||||
/* END OF FILE */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
75
Arduino/epd2in13bc/epdpaint.h
Normal file
75
Arduino/epd2in13bc/epdpaint.h
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
/**
|
||||
* @filename : epdpaint.h
|
||||
* @brief : Header file for epdpaint.cpp
|
||||
* @author : Yehui from Waveshare
|
||||
*
|
||||
* Copyright (C) Waveshare July 28 2017
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documnetation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef EPDPAINT_H
|
||||
#define EPDPAINT_H
|
||||
|
||||
// Display orientation
|
||||
#define ROTATE_0 0
|
||||
#define ROTATE_90 1
|
||||
#define ROTATE_180 2
|
||||
#define ROTATE_270 3
|
||||
|
||||
// Color inverse. 1 or 0 = set or reset a bit if set a colored pixel
|
||||
#define IF_INVERT_COLOR 1
|
||||
|
||||
#include "fonts.h"
|
||||
|
||||
class Paint {
|
||||
public:
|
||||
Paint(unsigned char* image, int width, int height);
|
||||
~Paint();
|
||||
void Clear(int colored);
|
||||
int GetWidth(void);
|
||||
void SetWidth(int width);
|
||||
int GetHeight(void);
|
||||
void SetHeight(int height);
|
||||
int GetRotate(void);
|
||||
void SetRotate(int rotate);
|
||||
unsigned char* GetImage(void);
|
||||
void DrawAbsolutePixel(int x, int y, int colored);
|
||||
void DrawPixel(int x, int y, int colored);
|
||||
void DrawCharAt(int x, int y, char ascii_char, sFONT* font, int colored);
|
||||
void DrawStringAt(int x, int y, const char* text, sFONT* font, int colored);
|
||||
void DrawLine(int x0, int y0, int x1, int y1, int colored);
|
||||
void DrawHorizontalLine(int x, int y, int width, int colored);
|
||||
void DrawVerticalLine(int x, int y, int height, int colored);
|
||||
void DrawRectangle(int x0, int y0, int x1, int y1, int colored);
|
||||
void DrawFilledRectangle(int x0, int y0, int x1, int y1, int colored);
|
||||
void DrawCircle(int x, int y, int radius, int colored);
|
||||
void DrawFilledCircle(int x, int y, int radius, int colored);
|
||||
|
||||
private:
|
||||
unsigned char* image;
|
||||
int width;
|
||||
int height;
|
||||
int rotate;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
/* END OF FILE */
|
||||
|
||||
1385
Arduino/epd2in13bc/font12.cpp
Normal file
1385
Arduino/epd2in13bc/font12.cpp
Normal file
File diff suppressed because it is too large
Load diff
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue