Simply demo how to interface STM32F401RE to 8x8 led array with Max7219

Dependencies:   mbed

Fork of max7219ledarray by Andrea Corrado

Files at this revision

API Documentation at this revision

Comitter:
lore71
Date:
Fri Feb 17 07:21:00 2017 +0000
Parent:
7:1f26417a6f51
Commit message:
Max7219 8x8 led array with STM32F401RE

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r 1f26417a6f51 -r 880fd42755ca main.cpp
--- a/main.cpp	Tue Jan 20 11:37:10 2015 +0000
+++ b/main.cpp	Fri Feb 17 07:21:00 2017 +0000
@@ -1,8 +1,13 @@
 #include "mbed.h"
 
-// p5: DIN, p7: CLK, p8: LOAD/CS
-SPI max72_spi(p5, NC, p7);
-DigitalOut load(p8);
+// Questo FUNZIONA !!!!
+
+
+// SPI D11 --> DIN
+// SPI D13 --> CLK
+// SPI D10 --> LOAD/CS
+SPI max72_spi(D11, NC, D13);
+DigitalOut load(D10);
 
 int maxInUse = 1;    //change this variable to set how many MAX7219's you'll use
 
@@ -27,26 +32,25 @@
 #define MHZ 1000000
 
 void maxSingle( int reg, int col) {
-//maxSingle is the "easy"  function to use for a
-//single max7219
+    //maxSingle is the "easy"  function to use for a single max7219
     load = LOW;            // begin
     max72_spi.write(reg);  // specify register
     max72_spi.write(col);  // put data
     load = HIGH;           // make sure data is loaded (on rising edge of LOAD/CS)
 }
 
-void maxAll (int reg, int col) {    // initialize  all  MAX7219's in the system
-    load = LOW;                    // begin
+void maxAll (int reg, int col) {    
+    // initialize  all  MAX7219's in the system
+    load = LOW;                         // begin
     for ( int c=1; c<= maxInUse; c++) {
-        max72_spi.write(reg);  // specify register
-        max72_spi.write(col);  // put data
+        max72_spi.write(reg);           // specify register
+        max72_spi.write(col);           // put data
     }
     load = HIGH;
 }
 
 void maxOne(int maxNr, int reg, int col) {
-//maxOne is for adressing different MAX7219's,
-//while having a couple of them cascaded
+    //maxOne is for adressing different MAX7219's, while having a couple of them cascaded
     int c = 0;
     load = LOW;
 
@@ -75,19 +79,17 @@
     // max72_spi.frequency(10*MHZ);
     
     maxAll(max7219_reg_scanLimit, 0x07);
-    maxAll(max7219_reg_decodeMode, 0x00);  // using an led matrix (not digits)
-    maxAll(max7219_reg_shutdown, 0x01);    // not in shutdown mode
-    maxAll(max7219_reg_displayTest, 0x00); // no display test
-    for (int e=1; e<=8; e++) {    // empty registers, turn all LEDs off
+    maxAll(max7219_reg_decodeMode, 0x00);   // using an led matrix (not digits)
+    maxAll(max7219_reg_shutdown, 0x01);     // not in shutdown mode
+    maxAll(max7219_reg_displayTest, 0x00);  // no display test
+    for (int e=1; e<=8; e++) {              // empty registers, turn all LEDs off
         maxAll(e,0);
     }
-    maxAll(max7219_reg_intensity, 0x0f & 0x0f);    // the first 0x0f is the value you can set
-    // range: 0x00 to 0x0f
+    maxAll(max7219_reg_intensity, 0x00 & 0x0f);    // the first 0x0f is the value you can set range: 0x00 to 0x0f
 }
 
 void loop () {
 
-
 //    //if you use just one MAX7219 it should look like this
 //     maxSingle(1,1);                       //  + - - - - - - -
 //     maxSingle(2,2);                       //  - + - - - - - -
@@ -101,8 +103,6 @@
 //
 //wait(2);
 //    //if you use more than one MAX7219, it should look like this
-//
-//    
 //    maxAll(1,1);                       //  + - - - - - - -
 //    maxAll(2,3);                       //  + + - - - - - -
 //    maxAll(3,7);                       //  + + + - - - - -
@@ -115,26 +115,28 @@
 //wait(2);
 //maxSingle(11, 7);
 
-for (int i=0; i<8;i++){
-    load = LOW;            // begin
-    max72_spi.write(i);  // specify register
+// Accendo i Leds
+for (int i=0; i<=8;i++){
+    load = LOW;             // begin
+    max72_spi.write(i);     // specify register
     max72_spi.write(0xff);  // put data
-    load = HIGH;           // make sure data is loaded (on rising edge of LOAD/CS)
-    //
-    wait(0.02);
+    load = HIGH;            // make sure data is loaded (on rising edge of LOAD/CS)
+    wait(0.3);
+}
+      
+// Spengo i Leds
+for (int i=8; i>0;i--){
+    load = LOW;             // begin
+    max72_spi.write(i);     // specify register
+    max72_spi.write(0x00);  // put data
+    load = HIGH;            // make sure data is loaded (on rising edge of LOAD/CS)
+    wait(0.01);   
 }
 
-for (int i=8; i>0;i--){
-    load = LOW;            // begin
-    max72_spi.write(i);  // specify register
-    max72_spi.write(0x00);  // put data
-    load = HIGH;           // make sure data is loaded (on rising edge of LOAD/CS)
-    //
-    wait(0.02);
-}
-    //if you use more then one max7219 the second one should look like this
 
 
+
+    //if you use more then one max7219 the second one should look like this
     /*
     maxOne(2,1,1);                       //  + - - - - - - -
     maxOne(2,2,2);                       //  - + - - - - - -
@@ -144,11 +146,7 @@
     maxOne(2,6,32);                      //  - - - - - + - -
     maxOne(2,7,64);                      //  - - - - - - + -
     maxOne(2,8,128);                     //  - - - - - - - +
-
     */
-    
-    //
-
 }
 
 int main() {