![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
ese519 hw2 part 4
main.cpp
- Committer:
- wenrui
- Date:
- 2015-02-17
- Revision:
- 0:cfa060762ad7
- Child:
- 1:e004fff01d0d
File content as of revision 0:cfa060762ad7:
#include "mbed.h" PwmOut buzzer(p21); PwmOut speaker(p26); Serial pc(USBTX, USBRX); DigitalOut cols[4]= {p20,p19,p18,p17}; InterruptIn rows[4]={p25,p22,p23,p24}; double HZc[] = { 1209.0, 1336.0, 1477.0, 1633.0}; // Colum double HZr[] = {697.0, 770.0, 852.0, 941.0}; //Row char Keytable[] = { '1', '2', '3', 'A', '4', '5', '6', 'B', '7', '8', '9', 'C', '*', '0', '#', 'D' }; void start(int row){ double high = 0, low = 0; if(rows[row].read() == 0) return; for(int i = 0; i < 4; ++i){ cols[i].write(0); if(rows[row].read() == 0){ high = HZc[i]; low = HZr[row]; pc.printf("input row %d col %d %c \n", row, i, Keytable[row * 4 + i]); break; } } buzzer.period(low); speaker.period(high); buzzer = 0.5; speaker = 0.5; } void stop(){ buzzer.period(0); speaker.period(0); buzzer = 0; speaker = 0; for(int i = 0; i < 4; ++i) cols[i] = 1; } void row0Rise(){ start(0); } void row1Rise(){ start(1); } void row2Rise(){ start(2); } void row3Rise(){ start(3); } void rowFall(){ stop(); } int main() { rows[0].rise(&row0Rise); rows[1].rise(&row1Rise); rows[2].rise(&row2Rise); rows[3].rise(&row3Rise); for(int i = 0; i < 4; ++i) rows[i].fall(&rowFall); while(1) { ; } }