splash screen and pulse working

Dependencies:   mbed

Revision:
0:850d65a7d593
Child:
1:82127072abb8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Jan 31 14:49:42 2018 +0000
@@ -0,0 +1,122 @@
+#include "mbed.h"
+
+
+#define max7219_reg_noop         0x00
+#define max7219_reg_digit0       0x01
+#define max7219_reg_digit1       0x02
+#define max7219_reg_digit2       0x03
+#define max7219_reg_digit3       0x04
+#define max7219_reg_digit4       0x05
+#define max7219_reg_digit5       0x06
+#define max7219_reg_digit6       0x07
+#define max7219_reg_digit7       0x08
+#define max7219_reg_decodeMode   0x09
+#define max7219_reg_intensity    0x0a
+#define max7219_reg_scanLimit    0x0b
+#define max7219_reg_shutdown     0x0c
+#define max7219_reg_displayTest  0x0f
+
+
+
+
+
+Ticker pulse;
+AnalogIn pulse_in(PTB0);
+AnalogOut o(PTE30);
+DigitalOut led(LED1);
+void get_pulse()
+{
+    o=pulse_in;
+}
+
+
+
+
+#define LOW 0
+#define HIGH 1
+
+SPI max72_spi(PTD2, NC, PTD1);
+DigitalOut load(PTD0); //will provide the load signal
+
+
+char  heart[8] = {0x00,0x36,0x7f,0x7f,0x3e,0x1c,0x08,0x00};
+char  pattern_square[8] = { 0xff, 0x81,0x81,0x81,0x81,0x81,0x81,0xff};  
+char  pattern_star[8] = { 0x04, 0x15, 0x0e, 0x1f, 0x0e, 0x15, 0x04, 0x00};
+
+
+/*
+Write to the maxim via SPI
+args register and the column data
+*/
+void write_to_max( int reg, int col)
+{
+    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)
+}
+
+//writes 8 bytes to the display  
+void pattern_to_display(char *testdata){
+    int cdata; 
+    for(int idx = 0; idx <= 7; idx++) {
+        cdata = testdata[idx]; 
+        write_to_max(idx+1,cdata);
+    }
+} 
+ 
+
+void setup_dot_matrix ()
+{
+    // initiation of the max 7219
+    // SPI setup: 8 bits, mode 0
+    max72_spi.format(8, 0);
+     
+  
+  
+       max72_spi.frequency(100000); //down to 100khx easier to scope ;-)
+      
+
+    write_to_max(max7219_reg_scanLimit, 0x07);
+    write_to_max(max7219_reg_decodeMode, 0x00);  // using an led matrix (not digits)
+    write_to_max(max7219_reg_shutdown, 0x01);    // not in shutdown mode
+    write_to_max(max7219_reg_displayTest, 0x00); // no display test
+    for (int e=1; e<=8; e++) {    // empty registers, turn all LEDs off
+        write_to_max(e,0);
+    }
+   // maxAll(max7219_reg_intensity, 0x0f & 0x0f);    // the first 0x0f is the value you can set
+     write_to_max(max7219_reg_intensity,  0x08);     
+ 
+}
+
+void clear(){
+     for (int e=1; e<=8; e++) {    // empty registers, turn all LEDs off
+        write_to_max(e,0);
+    }
+}
+int main()
+{
+    pulse.attach(&get_pulse,0.125);
+    setup_dot_matrix ();      /* setup matric */
+    while(1){
+    //da_star();
+    pattern_to_display(heart);
+    wait_ms(1000);
+    heart[7]=0x01;heart[0]=0x01;
+    for(int i=1;i<=8;++i)
+    {
+        pattern_to_display(heart);
+        wait(0.2);
+        heart[7]<<=1;
+        heart[7]|=1;
+        heart[0]=heart[7];
+    }
+    for(int i=1;i<=6;++i)
+    {
+        heart[i]=~heart[i];
+        }
+    pattern_to_display(heart);
+    wait(1.6);
+    clear();
+}
+}
\ No newline at end of file