void main(){
  set_tris_a(0x01);
  set_tris_b(0x00);
  setup_adc(adc_clock_internal);
  setup_adc_ports(AN0);
  Servo_init(48); //Coloca a +-90° los servos declarados

  while(true){
    set_adc_channel(0); //RA0 sensor del dedo pulgar
    delay_us(20);
    sensor_pulgar = getc_adc();
    sensor_pulgar = map(sensor_pulgar, 511, 1023, 0, 180);
    Servo_PWM(SERVO_DEDO_PULGAR, sensor_pulgar);
  }
}
Beispiel #2
0
void motorTest(SmartCar * smartCar) {
	int16_t speed = 300;

	Motor_Enable(&smartCar->motor);
	Servo_init(&smartCar->servo);
	Servo_runAs(&smartCar->servo,0);
	
	while (1) {
		Servo_runAs(&smartCar->servo,0);
			
		smartCar->motor.sendPID = 1;//for bluetooth send start
		Motor_runAs(&smartCar->motor, speed);

		Segment_print(&smartCar->segment[0], smartCar->motor.targetSpeed);
		Segment_print(&smartCar->segment[1], Encoder_get(&smartCar->encoder));
		Segment_print(&smartCar->segment[2], smartCar->motor.currentSpeed);
		
		switch (board.button.check()) {
		case 1: // fast
			if (speed < 2000) {
				speed = speed + 50;
			} else {
				speed = 2000;
			}
			break;

		case 2: // slow
			if (speed > -2000) {
				speed = speed - 50;
			} else {
				speed = -2000;
			}
			break;

		case 3: // reverse
			speed = -speed;
			break;

		case 4: //motor test end
			smartCar->motor.sendPID = 0;//for bluetooth send stop
			speed = 0;
			Motor_Disable(&smartCar->motor);
			Segment_print(&smartCar->segment[0], speed);
			Segment_print(&smartCar->segment[1], speed);
			return;
		}
	}
}
Beispiel #3
0
int main(void)
{
	IO_init();
	Timer1_init();
	ADC_init();

	Motor_stop();
	Servo_init();
	LCD_init();

	sei();

	while(1)
	{
		inherent_function();
	}
	
	while(1);
	return 0;
}
Beispiel #4
0
int main(void) {
	
	
	bt_init(BAUD_RATE);
	Sonar_init(CONTINUOUS);
	Servo_init(MANUAL, SCAN_AND_LOCK);
	motorDriverInit();
	
	while(1){ 
		bt_getStr( tab );								// Get string from buffer
		if(strlen( tab )){							// If isn't empty...
			//bt_sendStr( tab );						// ...send it back.
			if ( strcmp(tab, "w") == 0 ) {
				driveForward(speed);
			}
			else if ( strcmp(tab, "s") == 0) {
				driveReverse(speed);
			}
			else if ( strcmp(tab, " ") == 0) {
				stop();
			} 
			else if ( strcmp(tab, "a") == 0) {
				driveReverseLeftTrack(40); 
				driveForwardRightTrack(40);
			}
			else if ( strcmp(tab, "d") == 0) {
				driveForwardLeftTrack(40); 
				driveReverseRightTrack(40);
			}
			else if ( strcmp(tab, "ServoScanAndLock") == 0) {
				ServoChangeMode(SWEEP);
				ServoChangeSweepMode(SCAN_AND_LOCK);
			}
			else if ( strcmp(tab, "ServoScanAndGo") == 0) {
				ServoChangeMode(SWEEP);
				ServoChangeSweepMode(SCAN_AND_GO);
			}
			else if ( strcmp(tab, "ServoCenter") == 0) {
				ServoChangeMode(MANUAL);
				ServoMoveByDegree(0);
			}
			else if ( strncmp(tab, "SonarStartMeas",14) == 0) {
				int new_deg = ParseIntNumber(tab,14,3);
				SonarStartMeas(new_deg);
			}
			else if ( strncmp(tab, "SonarGetDistance",16) == 0) {
				char buffor[12];
				int new_deg = ParseIntNumber(tab,16,3);
				sprintf(buffor, "%04d,%04hu\n",new_deg,SonarGetDistance(new_deg));
				bt_sendStr(buffor);
			}
			else if ( strcmp(tab, "e") == 0) {
				if (speed<=90){
					speed+=10;
				}
			}
			else if ( strcmp(tab, "q") == 0) {
				if (speed>=10){
					speed-=10;
				}
			}
			else if (strncmp(tab, "speed",5) == 0){
				int new_speed = ParseIntNumber(tab,5,3);
				if (new_speed >= 0 && new_speed <= 100){
					speed = new_speed;
				}
			}
			else if ( strncmp(tab, "SonarLockRange",14) == 0) {
				int new_range = ParseIntNumber(tab,14,3);
				ServoChangeLockRange(new_range);
			}
		}
	} 
};