Esempio n. 1
0
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);
	}
}
Esempio n. 3
0
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;
}
Esempio n. 4
0
/**
 * 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();
}
Esempio n. 5
0
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;
}
Esempio n. 6
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;
}
Esempio n. 7
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;
		}
	}
}
Esempio n. 8
0
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);
	}
}
Esempio n. 9
0
// 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();
}