Пример #1
0
void doState2() {

	bool wiiSeesBall = (imagingInfo.WiicamAvgX > 0 &&  imagingInfo.WiicamAvgX < 255);
	bool irSeesBall = ( abs(int(imagingInfo.IRDetectorsDir) - 128 ) < 5 );

	bool seeBall = wiiSeesBall;

	if (!seeBall)
	{
		state = 1;
		return;
	}

	if (wiiSeesBall)
	{

		if (imagingInfo.WiicamAvgX > 100)
		{
			motorGo(30, 190, 130 );
		}
		else if (imagingInfo.WiicamAvgX <  150)
		{
			motorGo(30, 120, 130 );
		}
		else
		{
			motorGo(200, 0, 130 );
		}
	}
	else
	{
		int rot = imagingInfo.IRDetectorsDir;
		motorGo(5, rot, 180);
	}
}
Пример #2
0
void loop()                          // Programa roda dentro do loop
{
    //while(i<25)
    //    {
    //    motorGo(0, CW, i);             // Aumento do o PWM do motor até 255
    //    motorGo(1, CW, i);             // Aumento do o PWM do motor até 255
    //    delay(50);                          // Se o motor travar ele desliga o motor e
    //    i++;                                  // Reinicia o processo de aumento do PWM
    //    leitura_corrente_m0 = analogRead(cspin[0]);
    //    Serial.println("leitura de corrente motor0: ");
    //    Serial.println(leitura_corrente_m0);
    //    if (leitura_corrente_m0 > CS_THRESHOLD)
    //    motorOff(0);
    //    Serial.println("leitura de corrente motor1: ");
    //    leitura_corrente_m1 = analogRead(cspin[1]);
    //    if (leitura_corrente_m1 > CS_THRESHOLD)
    //    motorOff(1);
    //    Serial.println(i);
    //    digitalWrite(statpin, LOW);
    //    }
    //i=1;
    //while(i!=0)
    //{                                      // Mantém o PWM em 255 (Velocidade Máxima do Motor)
    motorGo(0, CW, 30);       // Se o motor travar ele desliga o motor e
    motorGo(1, CW, 30);       // Se o motor travar ele desliga o motor e
    leitura_adc_m0 = analogRead(cspin[0]);
    Serial.println("leitura de corrente motor0: ");
    float voltage_m0= (leitura_adc_m0*3.0)/4096;//ajuste de fundo de escala do ADC 3300 (3V0)    4095 - 12 bits ADC A2to A5
    printf("ADC%d= %d\tvoltage=%.4f\n",cspin[0], leitura_adc_m0,voltage_m0);
    float valor_corrente_m0 = (voltage_m0*11370)/1500; //11370 valor tipico no datasheet, 1500 eh o valor de 1.5k do resistor de leitura de corrente R6
    printf("valor de corrente lido(mA): %3.3f\n", valor_corrente_m0);
    delay(2000);
    //if (leitura_adc_m0 > CS_THRESHOLD)              // Reinicia o processo de aumento do PWM
    //    motorOff(0);
    /*
    Serial.println("leitura de corrente motor1: ");
    leitura_corrente_m1 = analogRead(cspin[1]);
    float voltage_m1= leitura_corrente_m1*3.0/4095.0;//ajuste de fundo de escala do ADC 3300 (3V3)    4095 - 12 bits ADC A2to A5
    //Serial.println(leitura_corrente_m1);
    printf("ADC%d= %d\tvoltage=%1.3f\n",cspin[1], leitura_corrente_m1,voltage_m1);
    if (leitura_corrente_m1 > CS_THRESHOLD)              // Reinicia o processo de aumento do PWM
        motorOff(1);
    //}
    */
}
Пример #3
0
void doState1() {
	if (imagingInfo.WiicamAvgX > 0 &&  imagingInfo.WiicamAvgX < 255)
	{
		state = 2;
	}
//	else if ( abs(int(imagingInfo.IRDetectorsDir) - 128 ) < 5  )
//	{
//		state = 2;
//	}
	else
	{
		motorGo(50, 250, 200);
	}
}
Пример #4
0
void ESP32PWM::setDir(unsigned char dir) {
  this->fullstop(true, true);
	motorGo(MOTOR_NR, dir ? CW : CCW);
}