Arduino Nano Clock com matriz de LED 4x64 (nova versão)
Componentes e suprimentos
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Aplicativos e serviços online
|
Sobre este projeto
Ler um display de relógio em uma sala a vários metros requer tal display de matriz de LED.
Tendo comprado por um bom preço um display de 4 células, procurei no Hackster os projetos disponíveis:existem vários, para o Arduino Nano. Se você quiser ver horas, minutos e segundos simultaneamente:apenas alguns projetos funcionam, porque você precisa de dígitos menores do que os amplamente disponíveis com 5x7 pixels por dígito. Uma opção é usar a biblioteca MD_Parola, mas o tamanho do código é muito grande para um relógio simples. A outra opção testada foi a biblioteca Max72xxPanel, mas ela é muito antiga e chama outras bibliotecas. Finalmente, o projeto é baseado na biblioteca de interface básica MD_MAX722XX, incluída em todas as outras.
As observações deste site me fizeram revisar os aspectos de hardware e o código.
- Existem muitas bibliotecas chamadas DS3231. Eu uso este:http://www.rinkydinkelectronics.com/library.php?id=73
Suporte da biblioteca Arduino / chipKit para DS3231 I2C Real-Time ClockCopyright (C) 2015 Rinky-Dink Electronics, Henning Karlsen. Todos os direitos reservados
- Primeiro:o display de matriz de LED. Existem vários modelos no mercado, então é muito provável que a tela mostre coisas estranhas depois que você carregar este código. Solução:carregue este exemplo da biblioteca "MD_MAX72xx_lib.h":"MD_MAX72xx_HW_Mapper.ino" e encontre o modelo do seu hardware. No meu código, o modelo foi definido:#define HARDWARE_TYPE MD_MAX72XX ::ICSTATION_HW, mas isso pode não funcionar até que você defina o modelo certo!
- Os pequenos segundos agradáveis não apareceram ultimamente? Agora (v2), as fontes para esses segundos estão incluídas no código, portanto, não há necessidade de alterar nenhuma outra biblioteca.
- Uma longa lista de advertência de compilação ocorreu devido às atualizações do Arduino. Agora, os meses estão em uma matriz de char bidimensional e não usam mais um ponteiro. Quaisquer outros avisos vêm da biblioteca DS3231.h, mas podem ser ignorados.
- Os pontos piscando agora são apenas 2 pontos! Os segundos precisos são mostrados, usando minhas fontes 3x5, após "hh:mm". Além disso, os pontos da coluna ":" piscam quase duas vezes por segundo, só para mostrar que está vivo!
- Atender um pedido:a hora é mostrada durante 53 segundos a cada minuto e durante os últimos 7 segundos são mostradas a data e a temperatura.
- O dia da semana também pode ser mostrado, se você descomentar duas linhas no loop (). Nesse caso, você pode preferir reduzir o intervalo de 53 segundos para 51.
- Se você preferir o formato de 12 horas, veja uma das minhas respostas mais antigas.
- A hora RTC pode ser definida no Monitor Serial Arduino escrevendo na área de entrada DD / MM / AAAA hh:mm:ss (não se esqueça do espaço entre) e pressione Enter / Send. Isso pode ser feito sempre que um cabo USB estiver conectado e o Serial Monitor estiver funcionando (COM e taxa de transmissão corretos).
O novo código usa 13558 bytes (44%) e 372 bytes (18%) para variáveis, por isso é um pouco mais curto!
A data é mostrada como "dd Seg" e a temperatura ambiente em graus. Celsius (estimado usando o sensor interno RTC) é mostrado em uma página separada. O brilho é controlado por um resistor fotográfico. O código funciona, porém, mesmo sem sensor de luz.
Obrigado pelo seu interesse, demonstrado pelo botão “respeito”!
Código
- Versão ANTIGA - relógio Arduino Nano Dot Matrix
- Nova versão (v2) - relógio Arduino Nano Dot Matrix
Versão ANTIGA - relógio Arduino Nano Dot Matrix Arduino
Como muitas bibliotecas mudaram desde o lançamento inicial, este código está obsoleto. Use a nova versão Todas as conexões são descritas no código. Para fontes pequenas, altere algumas linhas em MD_MAX72xx_font.cpp, conforme explicado no código./ * AVISO:o código inicial agora está obsoleto. Use o novo (versão 2) * Relógio Arduino Nano DS3231 com LED Matrix 4x (8x8) SPI * * Arduino Nano 5V lógico - 32kB prog. espaço * Ferramentas:Placa:Arduino Nano; Processador:ATmega328P (Old Bootloader) !! * LED Matrix 4x (8x8) SPI com conector do lado direito (último módulo) * https://www.banggood.com/MAX7219-Dot-Matrix-Module-4-in- 1-Display-For-Arduino-p-1072083.html? Rmmds =myorder &cur_warehouse =CN * * CONEXÕES:*>> LCD 4x64 -> Arduino Nano:(usando Hardware SPI):* 5V -> pino 5V * GND -> GND pin * CLK_PIN -> 13 // ou SCK * DATA_PIN -> 11 // ou MOSI * CS_PIN -> 10 // ou SS * *>> DS3231 RTC -> Arduino Nano:* SDA (DAT) -> A4 * SCL ( CLK) -> A5 * Inspirado por:1) Arduino Clock da AnthoTRONICS Última edição:22 de março de 2019 * mas sem MD_parola por causa de sua grande pegada! Nova função getdate. * 2) O relógio digital UNO mais simples de todos os tempos por plouc68000:* https://create.arduino.cc/projecthub/plouc68000/simplest-uno-digital-clock-ever-4613aa?ref=user&ref_id=680368&offset=1* 3) LEDDotMatrixClock.ino de Leonardo Sposina, mas aqui sem "Max72xxPanel.h" * https://github.com/leonardosposina/arduino-led-dot-matrix-clock/blob/master/LEDDotMatrixClock/LEDDotMatrixClock.ino* Sem uso Max72xxPanel.h, mas ainda são usados dígitos de tamanho pequeno. Código de pegada pequena aqui. * Substitua na biblioteca MD_MAX72XX / src / MD_MAX72xx_font.cpp:* 1) #define USE_NEW_FONT 1 * 2) as fontes # 148 ... 158 devem ser substituídas por fontes 3x5:3, 248, 136, 248, / / 48 0 3, 144, 248, 128, // 49 1 3, 200, 168, 184, // 50 2 3, 136, 168, 248, // 51 3 3, 112, 72, 224, // 52 4 3, 184, 168, 232, // 53 5 3, 248, 168, 232, // 54 6 3, 8, 232, 24, // 55 7 3, 248, 168, 248, // 56 8 3 , 184, 168, 248, // 57 9 1, 80, // 58:* * projeto:13790 bytes (44%); variáveis 361 bytes (17%) * Autor:MVP https://www.hackster.io/MVP*/#include#include "DS3231.h" #include "MD_MAX72xx_lib.h" // # include " Font_Data.h "DS3231 rtc (SDA, SCL); // Byte do relógio em tempo real LDR_PIN =A2; // Sensor LDR pin # define MAX_DEVICES 4 // Define pins # define CLK_PIN 13 // ou SCK # define DATA_PIN 11 // ou MOSI # define CS_PIN 10 // ou SS # define HARDWARE_TYPE MD_MAX72XX ::ICSTATION_HW # define USE_NEW_FONT 1 # define BUF_SIZE 20 // tamanho do buffer de texto # define CHAR_SPACING 1 // pixels entre caracteres char buf [BUF_SIZE], secs [4]; uint8_t dots; // interface de hardware SPI // matriz Max72xxPanel =Max72xxPanel (CS_PIN, H_DISPLAYS, V_DISPLAYS72); =MD_MAX72XX (HARDWARE_TYPE, CS_PIN, MAX_DEVICES); const byte WAIT =100; const byte SPACER =1; byte FONT_WIDTH; bool timeset =false; void AdjustClock (String data) {byte _day =data.substring (0,2) .toInt (); byte _month =data.substring (3,5) .toInt (); int _ano =dados.substring (6,10) .toInt (); byte _hour =data.substring (11,13) .toInt (); byte _min =data.substring (14,16) .toInt (); byte _sec =data.substring (17,19) .toInt (); rtc.setTime (_hour, _min, _sec); rtc.setDate (_day, _month, _year); Serial.println (F (">> Data e hora configurada com sucesso!")); timeset =true;} byte ledintensitySelect (int light) {byte _value =0; if (luz> =0 &&luz <=127) {_valor =12; } else if (light> =128 &&light <=319) {_value =3; } else if (light> =320 &&light <=512) {_value =0; } return _value;}; void printText (uint8_t modStart, uint8_t modEnd, char * pMsg) // Imprime a string de texto para os módulos de matriz de LED especificados.// A área de mensagem é preenchida com colunas em branco após a impressão. {uint8_t state =0; uint8_t curLen; uint16_t showLen; uint8_t cBuf [FONT_WIDTH]; int16_t col =((modEnd + 1) * COL_SIZE) - 1; matrix.control (modStart, modEnd, MD_MAX72XX ::UPDATE, MD_MAX72XX ::OFF); do // máquina de estados finitos para imprimir os caracteres no espaço disponível {switch (state) {case 0:// Carrega o próximo caractere da tabela de fontes // se alcançamos o final da mensagem, zera o ponteiro da mensagem if (* pMsg =='\ 0') {showLen =col - (modEnd * COL_SIZE); // caracteres de preenchimento state =2; pausa; } // recupera o próximo caractere do arquivo de fonte showLen =matrix.getChar (* pMsg ++, sizeof (cBuf) / sizeof (cBuf [0]), cBuf); curLen =0; state ++; // !! cair deliberadamente para o próximo estado para começar a exibir o caso 1:// exibir a próxima parte da matriz de caracteres.setColumn (col--, cBuf [curLen ++]); // feito com o caractere da fonte, agora exibe o espaço entre os caracteres if (curLen ==showLen) {showLen =CHAR_SPACING; estado =2; } pausa; caso 2:// inicializa o estado para exibir colunas vazias curLen =0; state ++; // caem no caso 3:// exibe o espaçamento entre caracteres ou o preenchimento do final da mensagem (colunas em branco) matrix.setColumn (col--, 0); curLen ++; if (curLen ==showLen) state =0; pausa; padrão:col =-1; // isso definitivamente termina o loop do}} while (col> =(modStart * COL_SIZE)); matrix.control (modStart, modEnd, MD_MAX72XX ::UPDATE, MD_MAX72XX ::ON);} void setup () {pinMode (LDR_PIN, INPUT_PULLUP); Serial.begin (9600); Serial.println (F (">> Arduino 32x8 LED Dot Matrix Clock!")); Serial.println (F (">> Use o formato para definir a data e a hora do relógio!")); rtc.begin (); matrix.begin (); matrix.clear (); FONT_WIDTH =5 + ESPAÇADOR; // A largura da fonte é de 5 pixels matrix.control (MD_MAX72XX ::INTENSITY, 2);; // Use um valor entre 0 e 15 para o brilho} void getDate () // Configuração de data:Código para ler a data do relógio {char * meses [] ={"Jan", "Feb", "Mar", "Abr", "Maio", "junho", "julho", "agosto", "setembro", "outubro", "novembro", "dezembro"}; String dts =rtc.getDateStr (); // Obter string dd / mm / aaaa String dds =dts.substring (0,2); // Extrair data String mms =dts.substring (3,5); // Extrair mês int mm =mms.toInt (); // Converter para o número do mês dds.concat (""); dds.concat (String (meses [mm-1])); // Reconstruir string de data como "dd Mmm" dds.toCharArray (buf, sizeof (buf)); // buffer de retorno} void getHour () // Configuração da data:Código para ler a data do relógio {String dts =rtc.getTimeStr (); // Obter hh:mm:ss string String hhs =dts.substring (0,2); // Extrair hora int hh =hhs.toInt (); // Converter para número if (hh <10) dots =7; if (hh> 19 &&hh <24) dots =13; if ((hh> 9 &&hh <20) || (hh ==21)) pontos =11; se (hh ==1) pontos =5; se (hh ==11) pontos =10; // String outmsg =dts.substring (0,5); // Extrair hh:mm (opcional) String outmsg =String (hh); // Extraia h se h <10 outmsg.concat (":"); // adicione:outmsg.concat (dts.substring (3,5)); // adiciona mm outmsg.toCharArray (buf, BUF_SIZE);} void showsec () {String dts =rtc.getTimeStr (); // Obter hh:mm:ss string String scs1 =dts.substring (6,7); String scs2 =dts.substring (7); char sc1 =148 + scs1.toInt (); // Converter para o índice de char char sc2 =148 + scs2.toInt (); // Converter para o índice de char matrix.setChar (6, sc1); matrix.setChar (2, sc2);} void loop () {byte ledIntensity =ledintensitySelect (analogRead (LDR_PIN)); matrix.control (MD_MAX72XX ::INTENSITY, ledIntensity);; // Use um valor entre 0 e 15 para o brilho // Mostra hh:mm de buf getHour (); printText (0, MAX_DEVICES-1, buf); atraso (ESPERA); // Dois pontos piscando:for (uint8_t i =0; i <8; i ++) {matrix.setColumn (MAX_DEVICES * 8-dots, 36); showsec (); atraso (250); matrix.setColumn (MAX_DEVICES * 8 pontos, 0); showsec (); atraso (250); } // Saia rolando para cima:for (uint8_t i =0; i <8; i ++) {matrix.transform (MD_MAX72XX ::TSU); atraso (2 * ESPERA); atraso (ESPERA); } getDate (); printText (0, MAX_DEVICES-1, buf); atraso (20 * ESPERA); int temp =rtc.getTemp (); temp =temp-1; // Offset -1 C String outmsg =String (temp); outmsg.concat ("C"); outmsg.toCharArray (buf, BUF_SIZE); printText (0, MAX_DEVICES-1, buf); atraso (20 * ESPERA); // Configuração de tempo em RTC:if (Serial.available ()> 0 &×et ==false) {AdjustClock (Serial.readString ()); }}
Nova versão (v2) - relógio Arduino Nano Dot Matrix Arduino
Atualizado de acordo com as novas bibliotecas./ * Relógio Arduino Nano DS3231 com LED Matrix 4x (8x8) SPI * Versão 2 - atualizado 15/05 / 2-21 * Arduino Nano 5V lógico - 32kB prog. espaço * Ferramentas:Placa:Arduino Nano; Processador:ATmega328P (Old Bootloader) !! * LED Matrix 4x (8x8) SPI com conector do lado direito (último módulo) * https://www.banggood.com/MAX7219-Dot-Matrix-Module-4-in- 1-Display-For-Arduino-p-1072083.html? Rmmds =myorder &cur_warehouse =CN * * CONEXÕES:*>> LCD 4x64 -> Arduino Nano:(usando Hardware SPI):* 5V -> pino 5V * GND -> GND pin * CLK_PIN -> 13 // ou SCK * DATA_PIN -> 11 // ou MOSI * CS_PIN -> 10 // ou SS * *>> DS3231 RTC -> Arduino Nano:* SDA (DAT) -> A4 * SCL ( CLK) -> A5 * Inspirado por:1) Arduino Clock da AnthoTRONICS Última edição:22 de março de 2019 * mas sem MD_parola por causa de sua grande pegada! Nova função getdate. * 2) O relógio digital UNO mais simples de todos os tempos por plouc68000:* https://create.arduino.cc/projecthub/plouc68000/simplest-uno-digital-clock-ever-4613aa?ref=user&ref_id=680368&offset=1* 3) LEDDotMatrixClock.ino de Leonardo Sposina, mas aqui sem "Max72xxPanel.h" * https://github.com/leonardosposina/arduino-led-dot-matrix-clock/blob/master/LEDDotMatrixClock/LEDDotMatrixClock.ino* Sem uso Max72xxPanel.h, mas ainda são usados dígitos de tamanho pequeno. Código de pegada pequena aqui. * * Projeto:113558 bytes (44%); variáveis 372 bytes (17%) * Autor:MVP https://www.hackster.io/MVP*/#include#include "DS3231.h" #include "MD_MAX72xx_lib.h" // # include " Font_Data.h "DS3231 rtc (SDA, SCL); // Byte do relógio em tempo real LDR_PIN =A2; // Pino do sensor LDR # define MAX_DEVICES 4 // Define os pinos # define CLK_PIN 13 // ou SCK # define DATA_PIN 11 // ou MOSI # define CS_PIN 10 // ou SS // Defina abaixo seu modelo de hardware de matriz de LED:// # define HARDWARE_TYPE MD_MAX72XX ::ICSTATION_HW # define HARDWARE_TYPE MD_MAX72XX ::FC16_HW # define USE_NEW_FONT 1 # define BUF_SIZE 20 // tamanho do buffer de texto # define CHAR_SPACING 1 // pixels entre caracterescharf [BUF_SIZE], segundos [4] ss, dots; // Definição das fontes pequenas:uint8_t Font3x5 [10] [3] ={{248, 136, 248}, // 48 0 {144, 248, 128}, // 49 1 {200, 168 , 184}, // 50 2 {136, 168, 248}, // 51 3 {112, 72, 224}, // 52 4 {184, 168, 232}, // 53 5 {248, 168, 232 }, // 54 6 {8, 232, 24}, // 55 7 {248, 168, 248}, // 56 8 {184, 168, 248}}; // 57 meses de 9 caracteres [12] [4] ={"janeiro", "fevereiro", "março", "abril", "maio", "junho", "julho", "agosto", "setembro", " Out "," Nov "," Dez "}; char * wday; // Interface de hardware SPI // Matriz Max72xxPanel =Max72xxPanel (CS_PIN, H_DISPLAYS, V_DISPLAYS); MD_MAX72XX matriz =MD_MAX72XX (HARDWARE_TYPE, CS_PIN, MAX_DEVICES); const byte WAte =100; const byte SPACER =1; byte FONT_WIDTH; bool timeset =false; void AdjustClock (String data) {byte _day =data.substring (0,2) .toInt (); byte _month =data.substring (3,5) .toInt (); int _ano =dados.substring (6,10) .toInt (); byte _hour =data.substring (11,13) .toInt (); byte _min =data.substring (14,16) .toInt (); byte _sec =data.substring (17,19) .toInt (); rtc.setTime (_hour, _min, _sec); rtc.setDate (_day, _month, _year); Serial.println (F (">> Data e hora configurada com sucesso!")); timeset =true;} byte ledintensitySelect (int light) {byte _value =0; if (luz> =0 &&luz <=127) {_valor =12; } else if (light> =128 &&light <=319) {_value =3; } else if (light> =320 &&light <=512) {_value =0; } return _value;}; void printText (uint8_t modStart, uint8_t modEnd, char * pMsg) // Imprime a string de texto para os módulos de matriz de LED especificados.// A área de mensagem é preenchida com colunas em branco após a impressão. {uint8_t state =0; uint8_t curLen; uint16_t showLen; uint8_t cBuf [FONT_WIDTH]; int16_t col =((modEnd + 1) * COL_SIZE) - 1; matrix.control (modStart, modEnd, MD_MAX72XX ::UPDATE, MD_MAX72XX ::OFF); do // máquina de estados finitos para imprimir os caracteres no espaço disponível {switch (state) {case 0:// Carrega o próximo caractere da tabela de fontes // se alcançamos o final da mensagem, zera o ponteiro da mensagem if (* pMsg =='\ 0') {showLen =col - (modEnd * COL_SIZE); // caracteres de preenchimento state =2; pausa; } // recupera o próximo caractere do arquivo de fonte showLen =matrix.getChar (* pMsg ++, sizeof (cBuf) / sizeof (cBuf [0]), cBuf); curLen =0; state ++; // !! cair deliberadamente para o próximo estado para começar a exibir o caso 1:// exibir a próxima parte da matriz de caracteres.setColumn (col--, cBuf [curLen ++]); // feito com o caractere da fonte, agora exibe o espaço entre os caracteres if (curLen ==showLen) {showLen =CHAR_SPACING; estado =2; } pausa; caso 2:// inicializa o estado para exibir colunas vazias curLen =0; state ++; // caem no caso 3:// exibe o espaçamento entre caracteres ou o preenchimento do final da mensagem (colunas em branco) matrix.setColumn (col--, 0); curLen ++; if (curLen ==showLen) state =0; pausa; padrão:col =-1; // isso definitivamente termina o loop do}} while (col> =(modStart * COL_SIZE)); matrix.control (modStart, modEnd, MD_MAX72XX ::UPDATE, MD_MAX72XX ::ON);} void setup () {pinMode (LDR_PIN, INPUT_PULLUP); Serial.begin (9600); Serial.println (F (">> Arduino 32x8 LED Dot Matrix Clock!")); Serial.println (F (">> Use o formato para definir a data e a hora do relógio!")); rtc.begin (); matrix.begin (); matrix.clear (); FONT_WIDTH =5 + ESPAÇADOR; // A largura da fonte é de 5 pixels matrix.control (MD_MAX72XX ::INTENSITY, 2);; // Use um valor entre 0 e 15 para o brilho rtc.setDOW (); // Requerido para um novo RTC} void getDate () // Configuração de data:Código para ler a data do relógio {String dts =rtc.getDateStr (); // Obter string dd / mm / aaaa String dds =dts.substring (0,2); // Extrair data String mms =dts.substring (3,5); // Extrair mês int mm =mms.toInt (); // Converter para o número do mês dds.concat (""); dds.concat (String (meses [mm-1])); // Reconstruir string de data como "dd Mmm" dds.toCharArray (buf, sizeof (buf)); // buffer de retorno wday =rtc.getDOWStr (2);} void getHour () // Configuração de data:Código para ler a data do relógio {String dts =rtc.getTimeStr (); // Obter hh:mm:ss string String hhs =dts.substring (0,2); // Extrair hora String mms =dts.substring (3,5); // Extraia os minutos hh =hhs.toInt (); // Converter para o número mm =mms.toInt (); // Converter para o número mm ss =(dts.substring (6,8)). ToInt (); // Extraia os segundos como um número if (hh> =0 &&hh <10) dots =7; if (hh> 9 &&hh <20) pontos =11; if (hh> 19 &&hh <25) dots =13; if (hh% 10 ==1) dots- =2; // String outmsg =dts.substring (0,5); // Extrair hh:mm (opcional) String outmsg =String (hh); // Extraia h se h <10 // outmsg.concat (":"); // adicionar:mas em 2 colunas !! outmsg.concat (char (124)); // adiciona 1 coluna completa entre os números outmsg.concat (dts.substring (3,5)); // adiciona mm outmsg.toCharArray (buf, BUF_SIZE);} // Nova versão da função, usando o pequeno fontsvoid showsec (uint8_t secs) {uint8_t secs1 =secs% 10; uint8_t secs2 =secs / 10; para (uint8_t k =0; k <3; k ++) {matrix.setColumn (MAX_DEVICES * 8-26-k, Font3x5 [secs2] [k]); matrix.setColumn (MAX_DEVICES * 8-30-k, Font3x5 [secs1] [k]); }} void loop () {byte ledIntensity =ledintensitySelect (analogRead (LDR_PIN)); matrix.control (MD_MAX72XX ::INTENSITY, ledIntensity);; // Use um valor entre 0 e 15 para o brilho getHour (); // Tempo de leitura do RTC printText (0, MAX_DEVICES-1, buf); // Mostra hh | mm de buf matrix.setColumn (MAX_DEVICES * 8-dots, 0); // Limpe o | inst longo sem sinal =millis (); // marcar este momento while (ss <53) {// Primeiros 53 segundos de cada minuto do tempo de exibição while (millis () - inst> 1000) {inst =millis (); ss ++; // Aumenta os segundos showsec (ss); // Mostra os segundos para (uint8_t i =0; i <2; i ++) {matrix.setColumn (MAX_DEVICES * 8-dots, 36); // Dois pontos piscando:delay (240); matrix.setColumn (MAX_DEVICES * 8 pontos, 0); atraso (240); }}} // Então "tempo" está rolando para cima:for (uint8_t i =0; i <8; i ++) {matrix.transform (MD_MAX72XX ::TSU); atraso (3 * ESPERA); } // Escreva a data atual:getDate (); printText (0, MAX_DEVICES-1, buf); atraso (20 * ESPERA); // Escreva o dia da semana (se não for comentado):// printText (0, MAX_DEVICES-1, wday); // atraso (20 * WAIT); // Escreva a temperatura ambiente estimada do sensor RTC int temp =rtc.getTemp (); temp =temp-1; // Offset -1 C String outmsg =String (temp); outmsg.concat ("C"); outmsg.toCharArray (buf, BUF_SIZE); printText (0, MAX_DEVICES-1, buf); atraso (20 * ESPERA); // Configuração de tempo no RTC se o monitor serial estiver ativado no IDE do Arduino:if (Serial.available ()> 0 &×et ==false) {AdjustClock (Serial.readString ()); }}
Esquemas
Inspirado em Leonardo Sposina, mas #define CS_PIN (Matrix) <--> 10 (Nano)
O esquema é QUASE o mesmo para todos os projetos Matrix. Aqui, o foto-resistor é original. Conforme mencionado no código:#define CS_PIN (Matrix) <--> 10 (Nano) https://github.com/leonardosposina/arduino-led-dot-matrix-clockProcesso de manufatura
- Relógio Arduino com horas de oração islâmica
- Arduino Temp. Monitor e relógio em tempo real com tela 3.2
- Arduino com Bluetooth para controlar um LED!
- Brincando com Nextion Display
- Matriz LED + Display da porta do sensor de movimento [Arduino Holiday]
- Arduino Nano:Controle 2 motores de passo com joystick
- Relógio giratório Arduino de matriz de LED único
- Controlando uma matriz de LED com Arduino Uno
- Contador Geiger portátil com Arduino Nano
- Multiplexador de carregador de bateria inteligente com Smart Display