文档对应代码
// SDA (20) HDB15-12
// SCL (21) HDB15-15
// +5V HDB15-9
// GND HDB15-5
#include <Wire.h>
const int i2c_port = 0x50;
byte buffer[BUFFER_LENGTH]; // 128 byte EEPROM data buffer
void setup() {
Serial.begin(9600);
Wire.begin();
while (!Serial)
{;}
}
void loop() {
Serial.println("(1) Read EDID and print.");
Serial.println("(2) getInput()");
Serial.println("(3) Item 3");
Serial.println("");
while (!Serial.available()) {;}
switch (Serial.parseInt())
{
case 1: ddcRead(); break;
case 2: getInput(); break;
case 3: Serial.println("Item 3."); break;
default: printError("Menu item does not exist.");
}
Serial.println("*************");
}
void printError(String message) {
Serial.println("Error: " + message);
}
void ddcRead() {
int blocks = 128 / BUFFER_LENGTH;
Serial.println("Reading DDC...");
Wire.beginTransmission(i2c_port);
Wire.write(0);
Wire.endTransmission();
for (int block = 0; block < blocks; block += BUFFER_LENGTH) {
Wire.requestFrom(i2c_port, BUFFER_LENGTH);
for (int i = 0; i < BUFFER_LENGTH; i++) {
//Serial.println(block + i, HEX);
byte x = Wire.read();
buffer[block + i] = x;
//Serial.print(x, HEX); Serial.print(" ");
}
}
Serial.println("Finished reading DDC.");
printData();
}
void printData() {
int rows = 128 / 16;
for (int row = 0; row < rows; row++) {
Serial.print(" (");
if (row == 0)
Serial.print(0, HEX);
Serial.print(row * 16, HEX);
Serial.print(") ");
for (int half_col = 0; half_col < 2; half_col++) {
for (int col = 0; col < 8; col++) {
int index = (row * 16) + (half_col * 8) + col;
byte b = buffer[index];
if (b < 16) {
Serial.print(0, HEX);
}
Serial.print(b, HEX);
Serial.print(" ");
// Serial.print("["); Serial.print(index, HEX); Serial.print("]");
}
if (half_col == 0) {
Serial.print("- ");
}
else {
Serial.println();
}
}
}
}
void getInput() {
int input_buffer_len = 16;
char input[input_buffer_len];
Serial.println("Enter a string. 32 chars max. Input not echoed.");
while (!Serial.available()) { ; }
int input_len = Serial.readBytes(&input[0], input_buffer_len);
Serial.print("Input is: ");
for (int i = 0; i < input_len; i++) {
Serial.write(input[i]);
}
Serial.println(".");
Serial.println("");
}
