double dac(point_t *p, int l, int r) {
  double d = 10e100;
  if (r - l <= 3) {
    for (int i = l; i <= r; ++i) {
      for (int j = i + 1; j <= r; ++j) {
        d = min(d, dist2(p[i], p[j]));
      }
    }
    sort(p + l, p + r + 1, cmpY);
  } else {
    int mid = (l + r) / 2;
    d = min(dac(p, l, mid), dac(p, mid + 1, r));
    inplace_merge(p + l, p + mid + 1, p + r + 1, cmpY);
    static point_t tmp[maxN]; int cnt = 0;
    for (int i = l; i <= r; ++i) {
      if ((p[i].x - p[mid].x) * (p[i].x - p[mid].x) <= d) tmp[++cnt] = p[i];
    }
    for (int i = 1; i <= cnt; ++i) {
      for (int j = 1; j <= 8 && j + i <= cnt; ++j) {
        d = min(d, dist2(tmp[i], tmp[j + i]));
      }
    }
  }
  return d;
}
Ejemplo n.º 2
0
void dac_volts(float val)
{
	uint8_t r_val=0;
	if(((int)((val * 255)/DAC_V_REF)) > 255){
		r_val = 255;
	}
	else r_val = (int)((val * 255)/DAC_V_REF);
	dac(r_val);
}
Ejemplo n.º 3
0
// ----------------------------------------------------------------------
void makeAll() {

  noise();

  for (int i = 400; i < 800; i +=100) {
    nmod(i); 
  }

  for (int i = 4000; i < 4300; i +=100) {
    dac(i); 
  }

}
//This is main()
int main()
{
	setup();
	
#ifdef MAXIMILIAN_PORTAUDIO
	PaStream *stream;
	PaError err;
	err = Pa_Initialize();
	if( err != paNoError )
		std::cout <<   "PortAudio error: " << Pa_GetErrorText( err ) << std::endl;
	
	double data[maxiSettings::channels];
	
	err = Pa_OpenDefaultStream( &stream,
							   0,          /* no input channels */
							   maxiSettings::channels,          /* stereo output */
							   paFloat32,  /* 64 bit floating point output */
							   maxiSettings::sampleRate,
							   maxiSettings::bufferSize,        /* frames per buffer, i.e. the number
												   of sample frames that PortAudio will
												   request from the callback. Many apps
												   may want to use
												   paFramesPerBufferUnspecified, which
												   tells PortAudio to pick the best,
												   possibly changing, buffer size.*/
							   &routing, /* this is your callback function */
							   &data ); /*This is a pointer that will be passed to
										 your callback*/
	
	//PaAlsa_EnableRealtimeScheduling(stream,true);
	
	err = Pa_StartStream( stream );
	if( err != paNoError )
		std::cout <<   "PortAudio error: " << Pa_GetErrorText( err ) << std::endl;
	
	
	char input;
	std::cout << "\nMaximilian is playing ... press <enter> to quit.\n";
	std::cin.get( input );
	
	
	
	err = Pa_Terminate();
	if( err != paNoError )
		std::cout <<  "PortAudio error: "<< Pa_GetErrorText( err ) << std::endl;
	
#elif defined(MAXIMILIAN_RT_AUDIO)
	RtAudio dac(RtAudio::WINDOWS_DS);
	if ( dac.getDeviceCount() < 1 ) {
		std::cout << "\nNo audio devices found!\n";
		char input;
		std::cin.get( input );
		exit( 0 );
	}
	
	RtAudio::StreamParameters parameters;
	parameters.deviceId = dac.getDefaultOutputDevice();
	parameters.nChannels = maxiSettings::channels;
	parameters.firstChannel = 0;
	unsigned int sampleRate = maxiSettings::sampleRate;
	unsigned int bufferFrames = maxiSettings::bufferSize; 
	//double data[maxiSettings::channels];
	vector<double> data(maxiSettings::channels,0);
	
	try {
		dac.openStream( &parameters, NULL, RTAUDIO_FLOAT64,
					   sampleRate, &bufferFrames, &routing, (void *)&(data[0]));
		
		dac.startStream();
	}
	catch ( RtError& e ) {
		e.printMessage();
		exit( 0 );
	}
	
	char input;
	std::cout << "\nMaximilian is playing ... press <enter> to quit.\n";
	std::cin.get( input );
	
	try {
		// Stop the stream
		dac.stopStream();
	}
	catch (RtError& e) {
		e.printMessage();
	}
	
	if ( dac.isStreamOpen() ) dac.closeStream();
#endif
	
	return 0;
}
Ejemplo n.º 5
0
int main(void)
{
	int16_t dac_val=511;
	int16_t cnt;
	int8_t dac_dir=0;
	char out_buf[21];
	DDRD|= (1<<DDD0); // LED, enable PD0, LED as output
	LEDOFF;
	init_dac();
	lcd_init();
	lcd_clrscr();
	lcd_puts("use U+/U-");
	lcd_gotoxy(0,1);
	lcd_puts("and store");
	init_kbd();
	delay_ms(500);
	delay_ms(500);
	lcd_clrscr();
	lcd_puts_p(PSTR("pause"));
	while (1) {
		if (dac_dir==1){
			dac_val++;
		}
		if (dac_dir==-1){
			dac_val--;
		}
		if (dac_val>0xFFF){
			dac_val=0xFFF; //max, 13bit
		}
		if (dac_val<0){
			dac_val=0;
		}
		lcd_gotoxy(0,1);
		itoa(dac_val,out_buf,10);
		lcd_puts(out_buf);
		lcd_puts("    ");
		dac(dac_val);
		cnt=1;
		check_u_button(&cnt);
		if (cnt>1){
			lcd_clrscr();
			// u+ pressed
			lcd_puts_p(PSTR("up"));
			dac_dir=1;
			LEDOFF;
		}
		if (cnt<1){
			lcd_clrscr();
			// u- pressed
			lcd_puts_p(PSTR("down"));
			dac_dir=-1;
			LEDON;
		}
		if (check_store_button()){
			lcd_clrscr();
			lcd_puts_p(PSTR("pause"));
			dac_dir=0;
		}
		delay_ms(100);
		cnt=1;
		check_u_button(&cnt);
		if (cnt>1){
			lcd_clrscr();
			// u+ pressed
			lcd_puts_p(PSTR("up"));
			dac_dir=1;
			LEDOFF;
		}
		if (cnt<1){
			lcd_clrscr();
			// u- pressed
			lcd_puts_p(PSTR("down"));
			dac_dir=-1;
			LEDON;
		}
		if (check_store_button()){
			lcd_clrscr();
			lcd_puts_p(PSTR("pause"));
			dac_dir=0;
		}
		delay_ms(100);
	}
	return(0);
}
double cal(point_t *p, int n) {
  sort(p + 1, p + 1 + n, cmpX);
  return sqrt(dac(p, 1, n));
}