<<Arduino_EDID_Show_LCD>>
搭配公司高高手設計出來的HDTV-SDI,用來燒EDID的治具,因他還需接GProbe,才能看它燒錄狀況,因此利用Arduino來讀取他的訊息,因它只會有兩種情況,分別是失敗的"********edid fail!******"和成功的"********edid ok!********",利用LCD(LCD Keypad Shieid)來做顯示,但又擔心判斷會有錯誤,所已LCD的第一行是直接Print它給我的Message,第二行才是判斷後的訊息,希望有機會可以將它做得更詳細更完善,如還未燒錄EDID時,有啥咪東西可以提醒在待機狀況或是忙碌狀態,在燒錄下一次是否可以更清楚判斷,或和藍芽APP做GUI界面。
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
int LED=2;
void setup()
{
pinMode(LED,OUTPUT);
Serial.begin(9600); 因治具的Baud rate:9600,因此選用
Serial.println("EDID Copy Test ");
lcd.begin(16, 2);
lcd.print("EDID Copy Test");
lcd.setCursor(0, 1);
lcd.print(".................");
}
void loop()
{
String s = "";
while (Serial.available()) {
char c = (char) Serial.read();
if(c!='\n'){
s += c;
}
delay(10); 一定需要加延遲,反則會抓不到訊息
}
if(s!=""){
Serial.println(s);
lcd.setCursor(0, 0);
lcd.print(s);
}
if(s=="********edid fail!******")
{
digitalWrite(LED,LOW);
Serial.println("LED Status:LOW"); 純粹拿來是否有同步,是否正確
delay(1000);
lcd.setCursor(0, 1);
lcd.print("Copy EDID Faill!!!");
}
if(s=="********edid ok!********")
{
digitalWrite(LED,HIGH);
delay(1000);
lcd.setCursor(0, 1);
lcd.print("Copy EDID OK!!!");
}
}
=======================================================================
在使用上發現,在坐下台機器燒錄時,常常會造成誤解,是否已經燒入,因此加了燒完過兩秒會有其他訊息蓋過判斷後的狀態。
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
int LED=2;
void setup()
{
pinMode(LED,OUTPUT);
Serial.begin(9600);
Serial.println("EDID Copy Test ");
lcd.begin(16, 2);
lcd.print("EDID Copy Test");
lcd.setCursor(0, 1);
lcd.print(".................");
}
void loop()
{
String s = "";
while (Serial.available()) {
char c = (char) Serial.read();
if(c!='\n'){
s += c;
}
delay(10);
}
if(s!=""){
Serial.println(s);
lcd.setCursor(0, 0);
lcd.print(s);
}
if(s=="********edid fail!******")
{
digitalWrite(LED,LOW);
Serial.println("LED Status:LOW");
delay(1000);
lcd.setCursor(0, 1);
lcd.print("Copy EDID Faill!!!");
delay(2000);
lcd.setCursor(0, 1);
lcd.print("~~0");
delay(1000);
lcd.print("~~0~~0");
delay(1000);
lcd.print("~~0~~0~~0~~0");
}
if(s=="********edid ok!********")
{
digitalWrite(LED,HIGH);
delay(1000);
lcd.setCursor(0, 1);
lcd.print("Copy EDID OK!!!");
lcd.setCursor(0, 1);
delay(2000);
lcd.print("~~0");
delay(1000);
lcd.print("~~0~~0");
delay(1000);
lcd.print("~~0~~0~~0~~0");
}
}
