#define CLK 0 #define DAT 1 #define WAIT 30 #define sendCommand(X) sendChar(X) #define ADIN 3 int ain; char str[] = "000"; void setup() { analogReference(DEFAULT); pinMode(CLK, OUTPUT); pinMode(DAT, OUTPUT); digitalWrite(CLK, HIGH); digitalWrite(DAT, HIGH); delay(200); // LCD準備待ち } void loop() { ain = analogRead(ADIN); hexString(ain); sendCommand(0x80); sendStr(str); delay(1000); } // 10ビット値を16進文字列に void hexString(int d) { byte b; for(int i=0; i<3; i++) { b = (d >> (i * 4)) & 0xf; if(b > 9) b = b - 10 + 'A'; else b = b + '0'; str[2 - i] = b; } } // LCD1文字表示 void sendChar(uint8_t chr) { for(int n = 0; n < 8; n++) { digitalWrite(DAT, (chr >> n) & 1); delayMicroseconds(WAIT); digitalWrite(CLK, LOW); delayMicroseconds(WAIT); digitalWrite(CLK, HIGH); } } // LCD文字列表示 void sendStr(char* str) { char* p; p = str; while(*p != 0) sendChar(*(p++)); }