Jump to content

Recommended Posts

Do you understand the port salute code ?

#define TCD_SH 0x01  //====> What means this port
#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();
}

tcd1201.ino

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×