gl gl en gl en gl gl gl gl gl gl gl gl gl gl gl gl gl gl en en en gl gl gl gl ia gl gl gl pt en gl uk gl gl gl gl es gl ja sl gl gl gl pt vi gl gl gl es gl gl gl gl gl gl gl gl gl en gl en en en pt gl gl gl gl gl gl gl gl it fr gl gl gl es es gl gl gl gl gl fr gl en en gl en en es gl pt en en gl gl es es es en gl gl gl gl gl gl gl gl it it gl en en gl fr gl gl gl gl gl es zh fr gl gl gl gl gl gl en it gl ca pt gl it gl gl es gl gl en en gl en en en en gl en en en en en en en en en en en gl gl en en en en en en en gl gl en en en en en en gl gl
Texto, figuras e debuxos – mClon Robot
Imos ver o que somos capaces de facer cunha matriz de LEDs no mClon. Nesta páxina tes as instrucións de montaxe e conexión.
— mClon (@mClonRobot) 15 de abril de 2019
Para facer os nosos programas debemos utilizar unha librería que nos facilite a tarefa. A que propoñemos aquí é a librería chamada LedControlMS (ligazón a GitHub. Ligazón directa ao ficheiro zip) Nela temos toda a programación necesaria para definir os caracteres na matriz, polo que aforramos moito traballo de programación.
Descargámola ao noso ordenador e desde o IDE seleccionamos Sketch → Incluír biblioteca → Engadir .zip
Todos os programas empezarán co seguinte código no que preparamos a matriz.
Nas vindeiras prácticas indicaremos unicamente o código que hai que engadir. Lémbrate de incluír a primeira parte do programa!
Selecciona a pestana coa práctica que che interese:
Imos escribir un texto no noso programa e vaise mostrar, carácter a carácter, na matriz de LEDs. Para iso utilizamos a función:   lc.writeString (0,”texto a escribir”);
Se o que queremos é que as letras se movan pola pantalla dun lado a outro (scroll) debemos utilizar unhas funcións que posibilitan ese desprazamento. O primeiro parámetro indica o carácter a desprazar e o segundo o intervalo de tempo entre as escrituras na pantalla, que inflúe na velocidade de desprazamento.
Scroll cara á esquerda: scrollLeft(carácter, tempo);
Scroll cara á dereita: scrollRight(carácter, tempo);
// Funcións: // Función scroll cara á esquerda void scrollLeft(char ch, int tempo){ int pos =lc.getCharArrayPosition(ch); for (int scroll=0; scroll<13; scroll++) { // Scroll de 0 a 13 pois o ancho da letra é de 5 columnas for (int i=7;i<13;i++){ // Escribe cada letra desde a posición marcada lc.setRow(0,i-scroll,alphabetBitmap[pos][i-7]); } delay(tempo); lc.clearDisplay(0); } } // Función scroll cara á dereita void scrollRight(char ch, int tempo){ int pos =lc.getCharArrayPosition(ch); for (int scroll=0; scroll<13; scroll++) { for (int i=0; i<6;i++) { lc.setRow(0, scroll+i-5, alphabetBitmap[pos][i]); } delay(tempo); lc.clearDisplay(0); } } // No loop indicamos os textos que queremos mostrar con scroll chamando ás anteriores funcións void loop() { // Scroll dun carácter scrollLeft('a', 200); delay(500); scrollRight('a', 100); delay(500); // Scroll dun texto (debemos ir collendo os caracteres un a un) String palabra="mclon"; for (int n=0; n<palabra.length();n++){ char c = palabra.charAt(n) ; scrollLeft(c, 150); }
Neste primeiro programa imos acender e apagar algúns LEDs indicando as súas coordenadas. Para iso utilizamos a función lc.setLed(matriz, fila, columna, estado).
Por exemplo:  lc.setLed(0,5,5,HIGH); // Acender o LED da posición (5, 5)
Para borrar toda a pantalla utilizamos a función:   lc.clearDisplay(0);
// Programa: void loop() { // void setLed(int addr, int row, int col, boolean state); // lc.setLed(matriz, fila, columna, estado) lc.setLed(0,0,0,HIGH); // Acendemos o LED (0,0) delay(500); lc.setLed(0,0,7,HIGH); // Acendemos o LED (0,7) delay(500); lc.setLed(0,7,0,HIGH); delay(500); lc.setLed(0,7,7,HIGH); delay(500); lc.setLed(0,0,0,LOW); delay(200); lc.setLed(0,0,7,LOW); delay(200); lc.setLed(0,7,0,LOW); delay(200); lc.setLed(0,7,7,LOW); delay(200); }
Tamén podemos ir movéndonos pola matriz:
// programa void loop() { for (int i=0; i<8; i++){ // Desprazamento na fila 2 lc.setLed(0,2,i,HIGH); delay(100); lc.setLed(0,2,i,LOW); } delay(100); for (int i=0; i<8; i++){ // Desprazamento na columna 2 lc.setLed(0,i,2,HIGH); delay(100); lc.setLed(0,i,2,LOW); } delay(100); for (int i=0; i<8; i++){ // Desprazamento continuo for (int j=0; j<8; j++){ lc.setLed(0,i,j,HIGH); delay(100); lc.setLed(0,i,j,LOW); } delay(100); } delay(1000); }
4. Filas e columnas
No caso anterior desprazamos un único bit. Se queremos desprazar un byte (conxunto de 8 bits) dun lado a outro utilizaremos as seguintes funcións:
Control das filas: lc.setRow(matriz, fila, valor)
Control das columnas:  lc.setColumn(matriz, columna, valor);
Podemos utilizar o valor en binario: Por exemplo con B10100101 (en binario) indicamos os LEDs que están acesos cun 1 e os apagados cun 0. Tamén podemos expresar o byte en decimal (0= todo apagado ata 255 todo aceso) ou en hexadecimal (0x00 todo apagado ata 0xFF todo aceso)
// Programa: void loop() { for (int i=0; i<8; i++){ // Desprazamento vertical dun byte lc.setColumn(0,i,B10100101); delay(100); lc.setColumn(0,i,LOW); } lc.clearDisplay(0); delay(1000); for (int i=0; i<8; i++){ // Desprazamento horizontal dun byte lc.setRow(0,i,B01011010); delay(100); lc.setRow(0,i,LOW); } lc.clearDisplay(0); delay(1000); for (int i=0; i<8; i++){ // Varrido continuo columnas lc.setColumn(0,i,255); delay(100); } lc.clearDisplay(0); delay(1000); for (int i=0; i<8; i++){ // Varrido de filas unha a unha lc.setRow(0,i,255); delay(100); lc.setRow(0,i,0); } lc.clearDisplay(0); delay(1000); }
Imos desprazar un byte cara á esquerda e cara á dereita utilizando o operador de desprazamento lóxico
<<  Despraza  cara á esquerda (multiplica por 2)
>> Despraza cara á dereita (divide entre 2)
// Programa: void loop() { int valor2=B11100000; for (int i=0; i >1; // Despraza os bits á dereita na columna 2 un a un delay(200); } lc.clearDisplay(0); delay(1000); int valor3=B00000111; for (int i=0; i<8; i++){ lc.setColumn(0,2,valor3); valor3=valor3<<1; // Despraza os bits á esquerda na columna 2 un a un delay(200); } lc.clearDisplay(0); delay(1000); }
Outra cousa que nos pode interesar é crear debuxos para mostrar na matriz. Para iso temos que definir cada debuxo cun array que conteña os valores dos LEDs (acesos e apagados). Existen aplicacións para facelo facilmente, como a que hai nesta ligazón ou nesta (aquí podes rotar os debuxos) Só hai que seleccionar os LEDs que queremos acender e xera automaticamente os valores en binario e hexadecimal. Revisa a orientación que deben ter os debuxos segundo a orientación da túa matriz de LEDs.
[Captura da aplicación led matrix generator]
Neste exemplo imos facer o latexo dun corazón. Para facer outras animacións só tes que modificar os arrays cos teus debuxos, xerar o patrón como se indica e programar o void loop() segundo as túas necesidades.
//Código dos frames que imos mostrar: byte corazon1[] = { B00011110, B00111111, B01111111, B11111110, B11111110, B01111111, B00111111, B00011110}; byte corazon2[] = { B00011110, B00100001, B01000001, B10000010, B10000010, B01000001, B00100001, B00011110}; //Función para transformar o array do debuxo nun patrón para a matriz void mostrar(String nome){ for (int i= 0; i<8; i++){ lc.setRow(0,i,nome[i]); } } void loop() { mostrar(corazon1); // Mostra o corazón1 delay(500); mostrar(corazon2); // Mostra o corazón2 delay(500); }
Agora só falta incorporar a matriz aos teus programas. Dá moito xogo! pic.twitter.com/EFjivafAEY
— mClon (@mClonRobot) 17 de abril de 2019
Inicio: Imos empezar os programas con luces. Fai que ao premer no pulsador a matriz de leds amose unha mensaxe ou debuxos. Crea unha función para que poidas incorporala facilmente noutros programas.
Debuxo: Fai que cada vez que o sensor ultrasónico detecte un obxecto apareza un debuxo na matriz de leds (un boneco, unha cara sorrinte, …). Se non ten un obxecto diante deberá desaparecer. Proba facer que o debuxo teña movemento mentres hai un obxecto diante do sensor, como fixemos co exemplo do corazón do inicio desta páxina.
Conta-latas: No programa no que o mClon vai por unha liña rodeando ou apartando latas engade un contador e amosa na matriz de leds o número de latas que leva atopado.
Saímos da liña?: No programa de seguir unha liña, cada vez que o mClon sae da liña deberán acenderse os leds da matriz da columna do lado polo que saíu. Se está completamente fóra deberán acenderse catro columnas.
Detector de nivel:  Fai que as filas da matriz se vaian acendendo en función do nivel detectado por un sensor. Por exemplo, co sensor ultrasónico, a medida que un obxecto se atopa máis cerca se irán acendendo máis filas.
Luces ao chou: Utiliza a función random para crear un patrón de luces aleatorio coma este:
O random mola! pic.twitter.com/NKKo4xgAey
— mClon (@mClonRobot) 16 de abril de 2019
O control dos motores
Os sensores IR de liña
O sensor de luz ou LDR
Matriz de leds 8×8
O robot en movemento
Seguir unha liña no chan
Programación co IDE de arduino
O IDE de Arduino
Probas de funcionamento IDE
O control dos motores
Luces de cores – IDE
Texto, figuras e debuxos
Ver a política de privacidade
O teu estado actual: Non se deu consentimento. Xestiona o teu consentimento.
Proxecto de A Industriosa
Copyright © 2022 mClon Robot. Todos os dereitos reservados.
Tema: ColorMag por ThemeGrill. Funciona con WordPress.
Usamos cookies para o correcto funcionamento do sitio web. Ao facer clic en Aceptar, aceptas o uso das cookies necesarias. Podes xestionar as cookies que queres activar.
Ler máis - Cookie Settings
This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
YouTube sets this cookie via embedded youtube-videos and registers anonymous statistical data.
Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.
NID cookie, set by Google, is used for advertising purposes; to limit the number of times the user sees an ad, to mute unwanted ads, and to measure the effectiveness of ads.
Other uncategorized cookies are those that are being analyzed and have not been classified into a category as yet.