int main(void) { //allow everything to settle/boot/etc //(mainly the mp3 chip takes a while to boot up) _delay_ms(2000); servo_init(); keypad_init(); display_init(); thermistor_init(); ssr_init(); init_timers(); mp3_init(); tea_off(); PMIC.CTRL |= PMIC_MEDLVLEN_bm | PMIC_LOLVLEN_bm | PMIC_HILVLEN_bm; sei(); //another 100 for things to settle _delay_ms(100); //welcome mp3_play(10); while (1) { char key; if ((key = keypad_getc())) handle_key(key); } }
void SoundManagerClass::play(int num) { if (SystemConfig.getSoundParams().isOn == true) { //setVolume(SystemConfig.getSoundParams().volume); mp3_play(num); } }
void* playmp3_thread(void* arg) { struct audiotest_thread_context *context = (struct audiotest_thread_context*) arg; int ret_val; ret_val = mp3_play(&context->config); free_context(context); pthread_exit((void*) ret_val); return NULL; }
/** * Handle all key presses */ static void handle_key(const char key) { keypad_int_disable(); if (device_state == DEV_STATE_BREW) { if (key == '*') tea_off(); mp3_play(5); } else if (device_state == DEV_STATE_IDLE) { handle_key_idle(key); } else { //What? there is no else! } keypad_int_enable(); }
int main(int argc, char **argv) { fd_set read_fd_set; struct timeval tv; tv.tv_sec = 0; tv.tv_usec = 0; int input_fd = serial_init("/dev/tty.usbserial-A4013GAY", 9600); // int input_fd = STDIN_FILENO; // -- Initialize -- // ao_initialize(); sin_init(); mp3_init("hey.mp3", "ho.mp3"); write(input_fd, "s", 1); for (;;) { FD_ZERO(&read_fd_set); FD_SET(input_fd, &read_fd_set); if (select(FD_SETSIZE, &read_fd_set, NULL, NULL, &tv) < 0) { perror("select"); exit(1); } if (FD_ISSET(input_fd, &read_fd_set)) { handleInput(input_fd); } switch (global_mode) { case SQUARE_WAVE_MODE: case SAWTOOTH_WAV_MODE: case MP3_MODE: mp3_play(); break; case SIN_WAVE_MODE: default: sin_play(); break; } } ao_shutdown(); return 0; }
int main(int argc, char **argv) { const char *fn = 0; int play = 1; unsigned channels = 1; unsigned rate = 44100; argc--; argv++; while (argc > 0) { if (!strcmp(argv[0],"-rec")) { play = 0; } else if (!strcmp(argv[0],"-play")) { play = 1; } else if (!strcmp(argv[0],"-stereo")) { channels = 2; } else if (!strcmp(argv[0],"-mono")) { channels = 1; } else if (!strcmp(argv[0],"-rate")) { argc--; argv++; if (argc == 0) { fprintf(stderr,"playwav: -rate requires a parameter\n"); return -1; } rate = atoi(argv[0]); } else { fn = argv[0]; } argc--; argv++; } if (fn == 0) { fn = play ? "/data/out.wav" : "/data/rec.wav"; } if (play) { const char *dot = strrchr(fn, '.'); if (dot && !strcmp(dot,".mp3")) { return mp3_play(fn); } else { return wav_play(fn); } } else { return wav_rec(fn, channels, rate); } return 0; }
static void tea_tick(void) { if (tea_state == TEA_STATE_HEAT) { uint8_t temp = thermistor_read_temp(); display_puti(temp); if (temp >= tea_set_point) { ssr_off(); servo_set_angle(180); tea_state = TEA_STATE_STEEP; tea_ticks = TEA_STEEP_TIME; } } else if (tea_state == TEA_STATE_STEEP) { //tea done display_puti(tea_ticks); if (tea_ticks == 0) { tea_off(); mp3_play(6); } else { --tea_ticks; } } }
static void tea_set_temperature(uint16_t temp) { //001_180-190.mp3 002_190-200.mp3 003_200-212.mp3 004_212+.mp3 005_buttons.mp3 006_done.mp3 007_stop.mp3 008_success.mp3 009_under180.mp3 010_welcome.mp3 // if (temp < TEA_TEMP_MIN || temp > TEA_TEMP_MAX) { display_puts("Err"); if (temp < 180) { mp3_play(9); } else if (temp < 190) { mp3_play(1); } else if (temp < 200) { mp3_play(2); } else if (temp < 212) { mp3_play(3); } else if (temp >= 212) { mp3_play(4); } } else { tea_set_point = temp; display_puti(temp); mp3_play(8); } }
// jemand hat den knopf gedrueckt - los geht's! void start(char sync) { uint8_t motor; // das modell ist beschaeftigt: lock lock = 1; // LEDs fuer lichtschranken einschalten PORTA |= (1 << M1_LICHTSCHRANKE_LED | 1 << M2_LICHTSCHRANKE_LED); LED_PORT |= (1 << LED); // unsere aufgabenliste zuruecksetzen - wir haben noch nichts abgearbeitet tasklist_reset(); if(sync == 0) time = 0; else time = SYNC_TIME - 2; // mp3-player zuruecksetzen: brauchen wir nicht, weil nur ein song auf dem // mp3-player ist // mp3_back(); // wir haben noch keine aktuelle aufgabe, also evtl. noch verbleibende alte // zuruecksetzen for(motor = 0; motor < 3; motor++) { cur_task[motor].steps = 0; cur_task[motor].modulo = 0; cur_task[motor].ccw = 0; cur_task[motor].idle = 0; } // prescaler 64: // 16'000kHz/1024 = 15,625kHz; d.h.: alle 64 mikrosekunden TCCR2 = (1 << CS20 | 1 << CS22 | 1 << WGM21); // bis 200 hochzaehlen: // 15'625Hz/200 = 78 Hz; d.h. jede 12,8te milisekunde OCR2 = 250; TCNT2 = 0; // interrupt enable: die ISR wird jede halbe milisekunde aufgerufen TIMSK |= (1 << OCIE2); if(sync == 0) { // und action! mp3-player faengt an zu spielen... mp3_play(); } //else //{ // warten bis LEDs an sind // sleep(100); //} // alle interrupts global aktivieren sei(); }