splash screen and pulse working
Dependencies: mbed
Diff: main.cpp
- 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