Beep RTTL done + ints.
Dependencies: MCP23017 aconno_bsp beep_2
Fork of acd52832_beep_buzzer by
main.cpp
00001 #include "mbed.h" 00002 #include "beep.h" 00003 #include "acd52832_bsp.h" 00004 #include "notes.h" 00005 #include "MCP23017.h" 00006 00007 #define CENTER 7 00008 00009 00010 00011 Beep buzzer(PIN_BUZZER); 00012 //DigitalOut LED (p26); 00013 DigitalOut RED (PIN_LED_RED); 00014 DigitalOut GREEN (PIN_LED_GREEN); 00015 MCP23017 expdr = MCP23017(PIN_EXP_SDA, PIN_EXP_SCL, TWI_EXPANDER_ADDR); 00016 InterruptIn button(PIN_EXP_INT_A); 00017 InterruptIn button2(p26); 00018 00019 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"; 00020 00021 void toggle(){ 00022 00023 // Disable ints 00024 /* 00025 char cmd[3]; 00026 cmd[0] = GPINTEN; 00027 cmd[1] = 0x00; 00028 cmd[2] = 0x00; 00029 */ 00030 //i2c.write(addr, cmd, 2); 00031 buzzer.nobeep(); 00032 GREEN = !GREEN; 00033 setInt(); 00034 //i2c.write(TWI_EXPANDER_ADDR, cmd, 3, false); 00035 //expdr.writeRegister(GPINTEN, (unsigned short)0x0000); 00036 00037 return; 00038 //expdr.write_bit(0, 10); 00039 //wait(0.5); 00040 00041 00042 //expdr.readRegister(GPIO); 00043 //expdr.read_bit(CENTER); 00044 //expdr.readRegister(INTCAP); 00045 //wait(0.5); 00046 /* 00047 while (1){ 00048 GREEN = ! GREEN; 00049 wait(0.6); 00050 } 00051 */ 00052 00053 // Enable ints 00054 //expdr.writeRegister(GPINTEN, (unsigned short)0x0080); 00055 } 00056 00057 00058 int main(){ 00059 00060 // Init IO expander 00061 expdr.reset(); //Restarts the expander to return it to default states 00062 expdr.config(0x01F8, 0xFFFF, 0x0000); 00063 wait(0.1); 00064 // Configure interrupts on JOYSTICK_CENTER pin 00065 //expdr.writeRegister(IOCON, (unsigned char)0x26); 00066 expdr.writeRegister(INTCON, (unsigned short)0x00FF); 00067 expdr.writeRegister(DEFVAL, (unsigned short)0x0180); 00068 expdr.writeRegister(GPINTEN, (unsigned short)0x0080); 00069 00070 button.fall(&toggle); 00071 button.rise(&toggle); 00072 //button2.rise(&toggle); 00073 //button2.fall(&toggle); 00074 00075 RED = 1; 00076 GREEN = 1; 00077 buzzer.playRttl(song); 00078 RED = 0; 00079 00080 while(1){ 00081 RED = 0; 00082 wait(0.1); 00083 RED = 1; 00084 wait(0.1); 00085 } 00086 }
Generated on Thu Jul 21 2022 03:20:37 by 1.7.2