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); } }
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); //} */ }
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); } }
void ESP32PWM::setDir(unsigned char dir) { this->fullstop(true, true); motorGo(MOTOR_NR, dir ? CW : CCW); }