TCD1201D linear CCD connected to Arduino.
Pin map:
SS(2)=GND OD=5V 8=SH 9=CLK1 10=CLK2 11=BT 12=RS OS=A0.
tcd1201d.ino
#define TCD_SH 0x01
#define TCD_CLK1 0x02
#define TCD_CLK2 0x04
#define TCD_BT 0x08
#define TCD_RS 0x10
void tcd1201d_setup() {
DDRB = 0x1F;
}
unsigned char tcd1201d_out[1047];
int tcd1201d_dark;
void tcd1201d_read() {
PORTB = TCD_SH | TCD_CLK1;
PORTB = TCD_CLK1;
for (int i = 0; i < 1047; ++i) {
PORTB = TCD_CLK1;
PORTB = TCD_RS | TCD_CLK1;
PORTB = TCD_RS | TCD_BT | TCD_CLK1;
PORTB = TCD_BT | TCD_CLK1;
PORTB = TCD_BT | TCD_CLK2;
// Could read here too, but we'll skip half of them.
PORTB = TCD_CLK2;
PORTB = TCD_RS | TCD_CLK2;
PORTB = TCD_RS | TCD_BT | TCD_CLK2;
PORTB = TCD_BT | TCD_CLK2;
PORTB = TCD_BT | TCD_CLK1;
int v = analogRead(A0);
if (i == 14) tcd1201d_dark = v;
if (v > tcd1201d_dark) v = tcd1201d_dark;
v = (tcd1201d_dark - v) / 2;
if (v > 255) v = 255;
tcd1201d_out[i] = v;
}
}
void setup() {
analogReference(DEFAULT);
tcd1201d_setup();
Serial.begin(115200);
}
void loop() {
tcd1201d_read();
tcd1201d_read();
for (int i = 0; i < 1047; ++i) {
Serial.print(tcd1201d_out[i], HEX);
}
Serial.println();
}
TCD1209DG 정보 (0) | 2022.04.01 |
---|---|
아두이노 Linear CCD project (0) | 2022.04.01 |
TCD1304AP + 아두이노 자료 (0) | 2022.04.01 |
TCD1201 이미지 센서 (0) | 2022.04.01 |
[비] FCCD 143A PDF 관련 자료 모음 (2) | 2022.04.01 |