//#define SLEEPMODE #ifdef SELLPMODE #include #include #endif #define CMDSET 0 #define DISPSET 1 #define DATAOUT 2 //電圧入力 #define AIN 3 #define WAIT 200 void setup() { pinMode(CMDSET, OUTPUT); pinMode(DISPSET, OUTPUT); pinMode(DATAOUT, OUTPUT); delay(500); SendByte(2, CMDSET); #ifdef SELLPMODE //1sごとに割り込み発生 WDTCR = _BV(WDTIE) | _BV(WDP2) | _BV(WDP1); sei(); //割り込み許可 //パワーダウンスリープ set_sleep_mode(SLEEP_MODE_PWR_DOWN); //set_sleep_mode(SLEEP_MODE_IDLE); #endif } void loop() { uint16_t value; value = analogRead(AIN); SendByte((value >> 8) & 0xff, DISPSET); delay(100); SendByte(value & 0xff, DISPSET); #ifdef SELLPMODE sleep_mode(); //スリープして割り込みを待つ #else delay(1000); #endif } void SendByte(byte code, byte port) { for(int i=0; i<8; i++) { digitalWrite(DATAOUT, (code >> i) & 1); digitalWrite(port, LOW); delayMicroseconds(WAIT); digitalWrite(port, HIGH); delayMicroseconds(WAIT); } }