Beep RTTL done + ints.
Dependencies: MCP23017 aconno_bsp beep_2
Fork of acd52832_beep_buzzer by
Diff: main.cpp
- Revision:
- 2:bc9245345c12
- Parent:
- 0:79fc9d7d880f
--- a/main.cpp Thu Sep 22 18:13:53 2016 +0000 +++ b/main.cpp Fri Sep 23 12:13:42 2016 +0000 @@ -1,31 +1,86 @@ - - #include "mbed.h" + #include "mbed.h" #include "beep.h" #include "acd52832_bsp.h" #include "notes.h" + #include "MCP23017.h" + + #define CENTER 7 + Beep buzzer(PIN_BUZZER); - DigitalOut LED (p26); + //DigitalOut LED (p26); DigitalOut RED (PIN_LED_RED); - - + DigitalOut GREEN (PIN_LED_GREEN); + MCP23017 expdr = MCP23017(PIN_EXP_SDA, PIN_EXP_SCL, TWI_EXPANDER_ADDR); + InterruptIn button(PIN_EXP_INT_A); + InterruptIn button2(p26); char *song = "Greensleaves:d=4,o=5,b=140:g,2a#,c6,d.6,8d#6,d6,2c6,a,f.,8g,a,2a#,g,g.,8f,g,2a,f,2d,g,2a#,c6,d.6,8e6,d6,2c6,a,f.,8g,a,a#.,8a,g,f#.,8e,f#,2g"; - +void toggle(){ + + // Disable ints + /* + char cmd[3]; + cmd[0] = GPINTEN; + cmd[1] = 0x00; + cmd[2] = 0x00; + */ + //i2c.write(addr, cmd, 2); + buzzer.nobeep(); + GREEN = !GREEN; + setInt(); + //i2c.write(TWI_EXPANDER_ADDR, cmd, 3, false); + //expdr.writeRegister(GPINTEN, (unsigned short)0x0000); + + return; + //expdr.write_bit(0, 10); + //wait(0.5); + + + //expdr.readRegister(GPIO); + //expdr.read_bit(CENTER); + //expdr.readRegister(INTCAP); + //wait(0.5); + /* + while (1){ + GREEN = ! GREEN; + wait(0.6); + } + */ + + // Enable ints + //expdr.writeRegister(GPINTEN, (unsigned short)0x0080); + } + int main(){ + + // Init IO expander + expdr.reset(); //Restarts the expander to return it to default states + expdr.config(0x01F8, 0xFFFF, 0x0000); + wait(0.1); + // Configure interrupts on JOYSTICK_CENTER pin + //expdr.writeRegister(IOCON, (unsigned char)0x26); + expdr.writeRegister(INTCON, (unsigned short)0x00FF); + expdr.writeRegister(DEFVAL, (unsigned short)0x0180); + expdr.writeRegister(GPINTEN, (unsigned short)0x0080); + + button.fall(&toggle); + button.rise(&toggle); + //button2.rise(&toggle); + //button2.fall(&toggle); - LED = 1; RED = 1; + GREEN = 1; buzzer.playRttl(song); RED = 0; while(1){ - LED = 0; + RED = 0; wait(0.1); - LED = 1; + RED = 1; wait(0.1); } } \ No newline at end of file