Beep RTTL done + ints.

Dependencies:   MCP23017 aconno_bsp beep_2

Fork of acd52832_beep_buzzer by Jurica Resetar

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

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 }