Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

projets:afficheur-defilant [2016/11/25 15:50]
admin
projets:afficheur-defilant [2019/03/12 19:52]
Ligne 1: Ligne 1:
-====== Afficheur défillant à matrices de 8*8 LED ====== 
  
-C'est un petit test fait à l'​arrache mais avec brio et toute berzingue par Remy et Josselin. 
- 
-Du coup on a commandé une palanqué de resistances pour les LEDs. On va aussi tenter de soigner la police de caractères,​ finir le montage sur breakboard et lancer le design que qqch bien packagé avec un zoli PCB. 
- 
-===== Le premier jet en image ===== 
- 
-<​HTML>​ 
-<​blockquote class="​twitter-video"​ data-lang="​fr"><​p lang="​fr"​ dir="​ltr">​Petit test d&#​39;​affichage ! 😀 <a href="​https://​twitter.com/​web5_fablab">​@web5_fablab</​a>​ <a href="​https://​t.co/​9aDGFEMut9">​pic.twitter.com/​9aDGFEMut9</​a></​p>&​mdash;​ Alegri Rémy (@wootou) <a href="​https://​twitter.com/​wootou/​status/​799382997682139136">​17 novembre 2016</​a></​blockquote>​ 
-<script async src="//​platform.twitter.com/​widgets.js"​ charset="​utf-8"></​script>​ 
-</​HTML>​ 
- 
-===== Le premier jet en code ===== 
- 
-<code c> 
-#include <​TimerOne.h>​ 
-  
-unsigned char col[8]={2,​3,​4,​5,​6,​7,​8,​9};​ // pins for columns 
-unsigned char row[8]={10,​11,​12,​13,​14,​15,​16,​17};​ // pins for rows 
-unsigned char refreshRow=0;​ // set index 
-unsigned char lastRefreshRow=7;​ // for the refresh 
-unsigned int scrollIndex=0;​ // render starting column in bigMatrix 
-bool matrix [8] [8]; // image of the screen 
-bool bigMatrix [112] [8]; // image of complete message 
-  
-// character set 
-unsigned char carSp[8]={0,​0,​0,​0,​0,​0,​0,​0};​ // Space 
-unsigned char carEx[8]={24,​24,​24,​24,​24,​0,​24,​0};​ // ! 
-unsigned char carH[8]={102,​102,​102,​126,​102,​102,​102,​0};​ // H 
-unsigned char care[8]={0,​0,​60,​102,​126,​96,​60,​0};​ // e 
-unsigned char carl[8]={56,​24,​24,​24,​24,​24,​60,​0};​ // l 
-unsigned char caro[8]={0,​0,​60,​102,​102,​102,​60,​0};​ // o 
-unsigned char carw[8]={0,​0,​198,​214,​214,​254,​108,​0};​ // w 
-unsigned char carr[8]={0,​0,​216,​108,​96,​96,​240,​0};​ // r 
-unsigned char card[8]={28,​12,​124,​204,​204,​204,​118,​0};​ // d 
-unsigned char carF[8]={254,​98,​104,​120,​104,​96,​120,​0};​ // F 
-unsigned char cara[8]={0,​0,​120,​12,​124,​204,​118,​0};​ // a 
-unsigned char carb[8]={224,​224,​124,​102,​102,​102,​188,​0};​ // b 
-unsigned char car5[8]={126,​98,​96,​60,​12,​108,​60,​0};​ // 5 
- 
-// fablab_web_5 
-  
-  
-void setup() { 
-Timer1.initialize(2500);​ // initialize the timer to refresh the screen (in microsecond) 
-test_matrix(10);​ // do a matrix led test 
-  
-// write message " Hello world !" in BigMatrix table 
-char2BigMatrix(carSp,​0);​ // [Space] 
-char2BigMatrix(carF,​8);​ // F 
-char2BigMatrix(cara,​16);​ // a 
-char2BigMatrix(carb,​24);​ // b 
-char2BigMatrix(carl,​32);​ // l 
-char2BigMatrix(cara,​40);​ // a 
-char2BigMatrix(carb,​48);​ //b 
-char2BigMatrix(carSp,​56);​ // [Space] 
-char2BigMatrix(carw,​64);​ // w 
-char2BigMatrix(care,​72);​ // e 
-char2BigMatrix(carb,​80);​ // b 
-char2BigMatrix(carSp,​88);​ // [Space] 
-char2BigMatrix(car5,​96);​ // 5 
-char2BigMatrix(carEx,​104);​ // !( 
-Timer1.attachInterrupt(refresh_matrix);​ // rely interruption to refresh_matrix function and start the timer 
-  
-  
-} 
-  
-void loop() { 
-  // put your main code here, to run repeatedly: 
-bigMatrice2matrice(scrollIndex);​ // take 8 columns of bigMatrix and send them to matrix 
-scrollIndex+=1;​ // shift one column for next call 
-if(scrollIndex>​111){ // if end of big matrix reached 
-  scrollIndex=0;​ // return to start 
-} 
-delay(100); // delay in ms between one column scrolling 
-} 
-  
-void init_matrix(){ // set power for each rows and columns 
-  for (int i=0;​i<​8;​i++){ 
-  pinMode(col[i],​OUTPUT);​ 
-  digitalWrite(col[i],​HIGH);​ 
-  pinMode(row[i],​OUTPUT);​ 
-  digitalWrite(row[i],​LOW);​ 
-} 
-} 
-  
-void test_matrix(int lasting){ // light up each led alternatively 
-    init_matrix();​ 
-    for (int y=0;​y<​8;​y++){ 
-  digitalWrite(row[y],​HIGH);​ 
-  for (int x=0;​x<​8;​x++){ 
-    digitalWrite(col[x],​LOW);​ 
-    delay(lasting);​ 
-    digitalWrite(col[x],​HIGH);​ 
-  } 
-  digitalWrite(row[y],​LOW);​ 
-  } 
-} 
-  
-void char2BigMatrix(unsigned char character[8],​unsigned char colInsert){ // insert a character in specified column of bigMatrix 
-  for(int x=colInsert;​x<​colInsert+8;​x++){ 
-    for(int y=0;​y<​8;​y++){ 
-      bigMatrix[x][y]=!(bitRead(character[y],​7-(x-colInsert)));​ 
-    } 
-  } 
-} 
-  
-void refresh_matrix(){ // draw matrix state on physical leds 
-  digitalWrite(row[lastRefreshRow],​LOW);​ 
-  for (int i=0;​i<​8;​i++){ 
-    digitalWrite(col[i],​matrix[i][refreshRow]);​ 
-  } 
-  digitalWrite(row[refreshRow],​HIGH);​ 
- ​refreshRow++;​ 
- if (refreshRow>​7){ 
- ​refreshRow=0;​ 
- ​lastRefreshRow=7; ​ 
- ​}else{ 
-  lastRefreshRow=refreshRow-1;​ 
- } 
-} 
-  
-void bigMatrice2matrice(unsigned int colStart){ // copy part of bigMatrix to matrix 
-  for(int x=0;​x<​8;​x++){ 
-    for(int y=0;​y<​8;​y++){ 
-      if (x+colStart>​111){ 
-        colStart=-x;​ 
-      } 
-      matrix[x][y]=bigMatrix[x+colStart][y];​ 
-    } 
-  } 
-} 
-</​code>​ 
- 
-lien : http://​www.blogule.net/​index.php/​2016/​01/​30/​scrolling-sur-matrice-a-led/​