CrossRoads:
{
digitalWrite(pin_cs, LOW);
digitalWrite(pin_sck, LOW); << not needed - is controlled by SPI mode
digitalWrite(pin_sdi, LOW); << not needed - pin is ignore when CS is High
digitalWrite(pin_sck, HIGH); << not needed
SPI.transfer(cmd); << SCK & SDI are toggled here
digitalWrite(pin_cs, HIGH);
}
Why do you think the extra control changes are needed?
thanks for your comments.
because i have tested this LCD with normal I/O pin by output HIGH/LOW and it works, but the display speed is toooo slowly, so, i try the SPI way and i want to port this code ]![]()
int pin_bl = 3;
int pin_cs = 4;
int pin_sdi = 5;
int pin_sck = 6;
int pin_rst = 7;
//write one byte by SPI
void TFT_SPI_Write_Byte(byte num)
{
int count=0;
for( count=0; count<8; count++ )
{
digitalWrite(pin_sck, LOW);
if(num&0x80)
{
digitalWrite(pin_sdi, HIGH);
}
else
{
digitalWrite(pin_sdi, LOW);
}
num<<=1;
digitalWrite(pin_sck, HIGH);
}
}
// write command one byte
void LCD_WR_REG(byte cmd)
{
digitalWrite(pin_cs, LOW);
digitalWrite(pin_sck, LOW);
digitalWrite(pin_sdi, LOW);
digitalWrite(pin_sck, HIGH);
TFT_SPI_Write_Byte(cmd);
digitalWrite(pin_cs, HIGH);
}
.....
.....
void setup()
{
// arduino pin setting, IO for SPI
pinMode(pin_bl, OUTPUT);
pinMode(pin_cs, OUTPUT);
pinMode(pin_sdi, OUTPUT);
pinMode(pin_sck, OUTPUT);
pinMode(pin_rst, OUTPUT);
// clear and reset LCD buffer
digitalWrite(pin_bl, LOW);
digitalWrite(pin_rst, LOW);
delay(10);
digitalWrite(pin_rst, HIGH);
// init lcd
lcd_init();
LCD_Clear(0x0000);
//line
LCD_DrawLine(0, 0, 240, 320);
}