#include <Arduino.h>
#define ANALOG_REG_PIN A0 // アナログ入力
#define DS_PIN 2 // シリアルデータ
#define SHCP_PIN 3 // シリアルクロック
#define STCP_PIN 4 // ラッチ
union SendData {
uint16_t data_16;
uint8_t data_8[2];
};
void setup() {
//Serial.begin(115200);
pinMode(ANALOG_REG_PIN, INPUT);
pinMode(DS_PIN, OUTPUT);
pinMode(SHCP_PIN, OUTPUT);
pinMode(STCP_PIN, OUTPUT);
}
void loop() {
uint8_t regVal = map(analogRead(ANALOG_REG_PIN), 0, 1023, 0, 10);
SendData data= { 0 };
if (regVal) {
for (uint8_t i = 0; i < regVal; i++) {
data.data_16 |= 0x0001 << i;
}
}
digitalWrite(STCP_PIN, LOW);
for (int8_t i = (sizeof(data) / sizeof(uint8_t)); i >= 0 ; i--) {
shiftOut(DS_PIN, SHCP_PIN, MSBFIRST, data.data_8[i]);
}
digitalWrite(STCP_PIN, HIGH);
delay(100);
}