Led display TM1637 4 digits decimaal I²C
Simpele sketch voor 5 pins versie
//Begin
unsigned char LED_0F[] =
{// 0 1 2 3 4 5 6 7 8 9 A b C d E F -
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x8C,0xBF,0xC6,0xA1,0x86,0xFF,0xbf
};
unsigned char LED[4]; //We hebben 4 led displays ter beschikking
int SCLK = 3; //(Digitale pin voor sclk. U mag dat zelf aan passen als u maar niet pin 0 of 1 gebruikt.)
int RCLK = 5; //Idem voor rclk
int DIO = 4; //En natuurlijk DIO
//In de setup() komt alles wat we maar 1x nodig hebben om de boel aan de gang te helpen
void setup ()
{
pinMode(SCLK,OUTPUT);
pinMode(RCLK,OUTPUT);
pinMode(DIO,OUTPUT);
}
/* In de loop voeren we het programma uit
Voor nu zetten we er hardcoded wat cijfers in.
U kunt dit later zelf aansturen met een sensor of een meting.
De leds zijn genummerd van RECHTS naar LINKS!!
*/
void loop()
{
LED[0]=3;
LED[1]=7;
LED[2]=0;
LED[3]=8;
while(1)
{
LED4_Display ();
}
}
//Hieronder wat functies waardoor alles werkt..
//Vergelijkbaar met een library, alleen wat kleiner
void LED4_Display (void)
{
unsigned char *led_table;
unsigned char i;
led_table = LED_0F + LED[0];
i = *led_table;
LED_OUT(i);
LED_OUT(0x01);
digitalWrite(RCLK,LOW);
digitalWrite(RCLK,HIGH);
led_table = LED_0F + LED[1];
i = *led_table;
LED_OUT(i);
LED_OUT(0x02);
digitalWrite(RCLK,LOW);
digitalWrite(RCLK,HIGH);
led_table = LED_0F + LED[2];
i = *led_table;
LED_OUT(i);
LED_OUT(0x04);
digitalWrite(RCLK,LOW);
digitalWrite(RCLK,HIGH);
led_table = LED_0F + LED[3];
i = *led_table;
LED_OUT(i);
LED_OUT(0x08);
digitalWrite(RCLK,LOW);
digitalWrite(RCLK,HIGH);
}
void LED_OUT(unsigned char X)
{
unsigned char i;
for(i=8;i>=1;i--)
{
if (X&0x80)
{
digitalWrite(DIO,HIGH);
}
else
{
digitalWrite(DIO,LOW);
}
X<<=1;
digitalWrite(SCLK,LOW);
digitalWrite(SCLK,HIGH);
}
}