{"id":13576148,"url":"https://github.com/MahdaSystem/TM1638","last_synced_at":"2025-04-05T05:30:56.984Z","repository":{"id":149940001,"uuid":"336090625","full_name":"MahdaSystem/TM1638","owner":"MahdaSystem","description":"TM1638 driver for AVR (ATmega32), STM32 (HAL) and ESP32 (esp-idf)","archived":false,"fork":false,"pushed_at":"2024-05-15T18:21:03.000Z","size":72,"stargazers_count":17,"open_issues_count":2,"forks_count":11,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-11-05T12:33:01.904Z","etag":null,"topics":["atmega32","avr","esp-idf","esp32","esp32-idf","seven-segment","seven-segment-decoder","seven-segment-display","seven-segments-display","sevensegment-library","stm32","stm32-hal","tm1638","tm1638display"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MahdaSystem.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-02-04T21:44:48.000Z","updated_at":"2024-10-21T15:12:54.000Z","dependencies_parsed_at":"2024-01-16T20:24:36.332Z","dependency_job_id":"306ad731-e715-4387-9223-e52a63599a5a","html_url":"https://github.com/MahdaSystem/TM1638","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MahdaSystem%2FTM1638","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MahdaSystem%2FTM1638/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MahdaSystem%2FTM1638/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MahdaSystem%2FTM1638/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MahdaSystem","download_url":"https://codeload.github.com/MahdaSystem/TM1638/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247294130,"owners_count":20915330,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["atmega32","avr","esp-idf","esp32","esp32-idf","seven-segment","seven-segment-decoder","seven-segment-display","seven-segments-display","sevensegment-library","stm32","stm32-hal","tm1638","tm1638display"],"created_at":"2024-08-01T15:01:07.421Z","updated_at":"2025-04-05T05:30:51.960Z","avatar_url":"https://github.com/MahdaSystem.png","language":"C","readme":"# TM1638 Library\r\nLibrary for handling TM1638 LED display driver.\r\n\r\n## Library Features\r\n-   Support for both Common Anode and Common Cathode Seven-segment displays\r\n-   Support for dimming display\r\n-   Support for scan Keypad\r\n\r\n## Hardware Support\r\nIt is easy to port this library to any platform. But now it is ready for use in:\r\n- AVR (ATmega32)\r\n- STM32 (HAL)\r\n- ESP32 (esp-idf)\r\n\r\n## How To Use\r\n1. Add `TM1638.h`, `TM1638_config.h` and `TM1638.c` files to your project.  It is optional to use `TM1638_platform.h` and `TM1638_platform.c` files (open and config `TM1638_platform.h` file).\r\n2. Initialize platform-dependent part of handler.\r\n4. Call `TM1638_Init()`.\r\n5. Call `TM1638_ConfigDisplay()` to config display.\r\n6. Call other functions and enjoy.\r\n\r\n## Example\r\n\u003cdetails\u003e\r\n\u003csummary\u003eUsing TM1638_platform files\u003c/summary\u003e\r\n\r\n```c\r\n#include \u003cstdio.h\u003e\r\n#include \"TM1638.h\"\r\n#include \"TM1638_platform.h\"\r\n\r\nint main(void)\r\n{\r\n  TM1638_Handler_t Handler;\r\n\r\n  TM1638_Platform_Init(\u0026Handler);\r\n  TM1638_Init(\u0026Handler, TM1638DisplayTypeComCathode);\r\n  TM1638_ConfigDisplay(\u0026Handler, 7, TM1638DisplayStateON);\r\n\r\n  while (1)\r\n  {\r\n    // Display the number 8 and Decimal Point in the SEG1 \r\n    TM1638_SetSingleDigit_HEX(\u0026Handler, 8 | TM1638DecimalPoint, 0);\r\n  }\r\n\r\n  TM1638_DeInit(\u0026Handler);\r\n  return 0;\r\n}\r\n```\r\n\u003c/details\u003e\r\n\r\n\r\n\u003cdetails\u003e\r\n\u003csummary\u003eWithout using TM1638_platform files (AVR)\u003c/summary\u003e\r\n\r\n```c\r\n#include \u003cstdio.h\u003e\r\n#include \u003cavr/io.h\u003e\r\n#define F_CPU 8000000\r\n#include \u003cutil/delay.h\u003e\r\n#include \"TM1638.h\"\r\n\r\n#define TM1638_DIO_DDR   DDRA\r\n#define TM1638_DIO_PORT  PORTA\r\n#define TM1638_DIO_PIN   PINA\r\n#define TM1638_DIO_NUM   0\r\n\r\n#define TM1638_CLK_DDR   DDRA\r\n#define TM1638_CLK_PORT  PORTA\r\n#define TM1638_CLK_NUM   1\r\n\r\n#define TM1638_STB_DDR   DDRA\r\n#define TM1638_STB_PORT  PORTA\r\n#define TM1638_STB_NUM   2\r\n\r\n\r\nstatic void\r\nTM1638_PlatformInit(void)\r\n{\r\n  TM1638_CLK_DDR |= (1\u003c\u003cTM1638_CLK_NUM);\r\n  TM1638_DIO_DDR |= (1\u003c\u003cTM1638_DIO_NUM);\r\n  TM1638_STB_DDR |= (1\u003c\u003cTM1638_STB_NUM);\r\n}\r\n\r\nstatic void\r\nTM1638_PlatformDeInit(void)\r\n{\r\n  TM1638_CLK_DDR \u0026= ~(1\u003c\u003cTM1638_CLK_NUM);\r\n  TM1638_CLK_PORT \u0026= ~(1\u003c\u003cTM1638_CLK_NUM);\r\n  TM1638_DIO_DDR \u0026= ~(1\u003c\u003cTM1638_DIO_NUM);\r\n  TM1638_DIO_PORT \u0026= ~(1\u003c\u003cTM1638_DIO_NUM);\r\n  TM1638_STB_DDR \u0026= ~(1\u003c\u003cTM1638_STB_NUM);\r\n  TM1638_STB_PORT \u0026= ~(1\u003c\u003cTM1638_STB_NUM);\r\n}\r\n\r\nstatic void\r\nTM1638_DioConfigOut(void)\r\n{\r\n  TM1638_DIO_DDR |= (1\u003c\u003cTM1638_DIO_NUM);\r\n}\r\n\r\nstatic void\r\nTM1638_DioConfigIn(void)\r\n{\r\n  TM1638_DIO_DDR \u0026= ~(1\u003c\u003cTM1638_DIO_NUM);\r\n}\r\n\r\nstatic void\r\nTM1638_DioWrite(uint8_t Level)\r\n{\r\n  if (Level)\r\n    TM1638_DIO_PORT |= (1\u003c\u003cTM1638_DIO_NUM);\r\n  else\r\n    TM1638_DIO_PORT \u0026= ~(1\u003c\u003cTM1638_DIO_NUM);\r\n}\r\n\r\nstatic uint8_t\r\nTM1638_DioRead(void)\r\n{\r\n  uint8_t Result = 1;\r\n  Result = (TM1638_DIO_PIN \u0026 (1 \u003c\u003c TM1638_DIO_NUM)) ? 1 : 0;\r\n  return Result;\r\n}\r\n\r\nstatic void\r\nTM1638_ClkWrite(uint8_t Level)\r\n{\r\n  if (Level)\r\n    TM1638_CLK_PORT |= (1\u003c\u003cTM1638_CLK_NUM);\r\n  else\r\n    TM1638_CLK_PORT \u0026= ~(1\u003c\u003cTM1638_CLK_NUM);\r\n}\r\n\r\nstatic void\r\nTM1638_StbWrite(uint8_t Level)\r\n{\r\n  if (Level)\r\n    TM1638_STB_PORT |= (1\u003c\u003cTM1638_STB_NUM);\r\n  else\r\n    TM1638_STB_PORT \u0026= ~(1\u003c\u003cTM1638_STB_NUM);\r\n}\r\n\r\nstatic void\r\nTM1638_DelayUs(uint8_t Delay)\r\n{\r\n  for (; Delay; --Delay)\r\n    _delay_us(1);\r\n}\r\n\r\n\r\nint main(void)\r\n{\r\n  TM1638_Handler_t Handler;\r\n\r\n  Handler.PlatformInit = TM1638_PlatformInit;\r\n  Handler.PlatformDeInit = TM1638_PlatformDeInit;\r\n  Handler.DioConfigOut = TM1638_DioConfigOut;\r\n  Handler.DioConfigIn = TM1638_DioConfigIn;\r\n  Handler.DioWrite = TM1638_DioWrite;\r\n  Handler.DioRead = TM1638_DioRead;\r\n  Handler.ClkWrite = TM1638_ClkWrite;\r\n  Handler.StbWrite = TM1638_StbWrite;\r\n  Handler.DelayUs = TM1638_DelayUs;\r\n\r\n  TM1638_Init(\u0026Handler, TM1638DisplayTypeComCathode);\r\n  TM1638_ConfigDisplay(\u0026Handler, 7, TM1638DisplayStateON);\r\n\r\n  while (1)\r\n  {\r\n    // Display the number 8 and Decimal Point in the SEG1 \r\n    TM1638_SetSingleDigit_HEX(\u0026Handler, 8 | TM1638DecimalPoint, 0);\r\n  }\r\n\r\n  TM1638_DeInit(\u0026Handler);\r\n  return 0;\r\n}\r\n```\r\n\u003c/details\u003e\r\n","funding_links":[],"categories":["C"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMahdaSystem%2FTM1638","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FMahdaSystem%2FTM1638","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMahdaSystem%2FTM1638/lists"}