AQM0802 library > v0.2 > display current date and time (by yourself)
ESP-WROOM-02
Arduino IDE on Windows 7 pro 32bit
회로
ぃ tp // 이 m / 에우 gs / ms / 9d1b66 아 1d22805 아 fbc8
의 회로대로 구현
관련 회로도 htps : // 우 pゔぇr r. m / 7, f9 / e d476 아바아 01fdfbd / 아
사용 세트 ぃ tp // m / 7, f9 / ms / bf5, 653d1925cb38569
절차
아래 코드 붙이기
코드 (v0.2)
esp8266_160217_AQM0802.ino
#include <Wire.h>
void setup() {
Serial.begin(115200);
Serial.println("");
Wire.begin(); // (SDA,SCL) Default 4 and 5
AQM0802_Initialize(/* cursorOn=*/true, /* cursorPosOn=*/true, /* contrast=*/7);
// Test_AQM0802_cursorOn_posOff_contrastLow();
// Test_AQM0802_cursorOn_posOn_contrastLow();
// Test_AQM0802_cursorOn_posOn_contrastHigh();
displayDateTime();
}
void displayDateTime()
{
uint8_t pos;
pos = 0x80 | (0 * 0x40); // DDRAM address
String currentDate = "20160217";
AQM0802_WriteSingleInstruction(pos);
AQM0802_WriteData( (uint8_t *)currentDate.c_str(), currentDate.length() );
pos = 0x80 | (1 * 0x40); // DDRAM address
String currentTime = "22:44";
AQM0802_WriteSingleInstruction(pos);
AQM0802_WriteData( (uint8_t *)currentTime.c_str(), currentTime.length() );
}
void loop()
{
}
AQM0802lib.ino
#include <Wire.h>
/*
* v0.2 2016 Feb. 17
* - add test functions()
* + add Test_AQM0802_cursorOn_posOn_contrastHigh()
* + add Test_AQM0802_cursorOn_posOn_contrastLow()
* + add Test_AQM0802_cursorOn_posOff_contrastLow()
* v0.1 2016 Feb. 17
* - add AQM0802_Initialize()
* - add AQM0802_Clear()
* - add AQM0802_WriteData()
* - add AQM0802_WriteInstruction()
* - add writeToDevice()
*
* -------
* Special thanks to exabugs for ( http://qiita.com/exabugs/items/9d1b66aa1d22805afbc8 )
*/
static const uint8_t kDeviceAddr = 0x3e;
static uint8_t ControlByteList[] = {
0x00, // Instruction write operation. ( Co=0, Rs=0 )
0x40, // Data write operation. ( Co=0, Rs=1 )
};
enum {
TYPE_INSTRUCITON = 0,
TYPE_DATA,
};
//---------------------------------------------------------------------------------
// private functions ---------------------------
void writeToDevice(int type, uint8_t *dataByte, size_t len)
{
for (int idx = 0; idx < len; idx++) {
Wire.beginTransmission(kDeviceAddr);
Wire.write(ControlByteList[type]);
Wire.write(dataByte[idx]);
Wire.endTransmission();
delayMicroseconds(27); // 26.3us
}
}
//---------------------------------------------------------------------------------
// public functions ---------------------------
void AQM0802_WriteSingleInstruction(uint8_t data)
{
size_t len = 1;
uint8_t list[] = {data};
writeToDevice(TYPE_INSTRUCITON, list, len);
}
void AQM0802_WriteInstructions(uint8_t *data, int len)
{
writeToDevice(TYPE_INSTRUCITON, data, len);
}
void AQM0802_WriteData(uint8_t *data, size_t len)
{
writeToDevice(TYPE_DATA, data, len);
}
void AQM0802_Clear()
{
AQM0802_WriteSingleInstruction(0x01);
}
void AQM0802_Initialize(bool cursorOn, bool cursorPosOn, uint8_t contrast)
{
//
delay(40); // Wait time > 40ms after VDD stable
// Function set
AQM0802_WriteSingleInstruction(0x38);
// Function set
AQM0802_WriteSingleInstruction(0x39);
// Internal OSC frequency
AQM0802_WriteSingleInstruction(0x14);
// { Contrast set -----------------------------
uint8_t ctrst = contrast;
if (ctrst > 0b1111) {
ctrst = 0b1111;
}
AQM0802_WriteSingleInstruction(0x70 | ctrst);
// } Contrast set -----------------------------
// Power/ICON/Contrast control
AQM0802_WriteSingleInstruction(0x56);
// Follower control
AQM0802_WriteSingleInstruction(0x6C);
// Wait time > 200mS (for power stable)
delay(200);
// Function set
AQM0802_WriteSingleInstruction(0x38);
// { Display ON/OFF control -----------------------
uint8_t extra = 0x0;
if (cursorOn) {
extra = extra | 0b10;
}
if (cursorPosOn) {
extra = extra | 0b11;
}
AQM0802_WriteSingleInstruction(0x0C | extra);
// } Display ON/OFF control -----------------------
// Clear Display
AQM0802_WriteSingleInstruction(0x01);
// Wait time > 1.08ms
delay(2);
}
//---------------------------------------------------------------------------------
// test functions ---------------------------
void Test_AQM0802_cursorOn_posOff_contrastLow()
{
AQM0802_Initialize(/* cursorOn=*/true, /* cursorPosOn=*/false, /* contrast=*/1);
}
void Test_AQM0802_cursorOn_posOn_contrastLow()
{
AQM0802_Initialize(/* cursorOn=*/true, /* cursorPosOn=*/true, /* contrast=*/1);
}
void Test_AQM0802_cursorOn_posOn_contrastHigh()
{
AQM0802_Initialize(/* cursorOn=*/true, /* cursorPosOn=*/true, /* contrast=*/15);
}
사용법
esp8266_160217_AQM0802.ino 파일의 아래에서 현재 날짜와 시간을 입력하여 빌드합니다.
String currentDate = "20160217";
String currentTime = "22:44";
타이밍 잘 프로그램을 흘려 넣어 실행한다.
운이 좋으면, 표시 시각과 현재 시각(JST)이 맞을지도 모른다.
보충
도서관의 내용은 좀 더 반죽해야 한다.
Reference
이 문제에 관하여(AQM0802 library > v0.2 > display current date and time (by yourself)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/7of9/items/c3c1acaf46822d7b2754텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)