12/09/2018
Código Arduino
int IN1 = 2; //H bridge IN1 pin
int IN2 = 4; //H bridge IN2 pin
int motor=3; // PWM H Bridge
int leitura_sensor=0; //
const byte SENSOR=A0;// Posiçao do postenciometro(Manete) - potenciometro 50K porta A0
const byte COMANDO=A1;//dados que virao do simulador, indicando a posicao da manete
int val;
String v1; // recebe os dados da posição da manete
int v1i; // variavel inteira que receberá o valor de V1
int CodeIn;// used on all serial reads
void setup()
{
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(3, OUTPUT);
Serial.begin(115200);
}
void loop() {
if (Serial.available()) {
CodeIn = getChar();
if (CodeIn == '<') {LESSTHAN();} //verifica se o caracter vindo vindo da serial é <
}
leitura_sensor=analogRead(SENSOR); //le a posicao do servo
val=leitura_sensor;
val = map(val, 0, 1024, 0, 100); // cria uma escala compativel com o potenciometro e a posicao da manete
Serial.println(val); // somente para testes
Serial.flush(); // limpa a serial
delay(10);
if(val < v1i -2) { // -2 para criar uma zona de tolerancia
digitalWrite(IN1,HIGH); //
digitalWrite(IN2,LOW);
analogWrite(3,80); // pulso PWM na porta digial 3, com velocidade de 80. e a minima possivel para o motor
}
if( val > v1i +2){
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(3,80);
}
if (val +2 == v1i || val -2 ==v1i ){
digitalWrite(IN1,LOW); //motor parado
digitalWrite(IN2,LOW);
}}
void LESSTHAN(){ // The first identifier was "<"
CodeIn = getChar(); // Get another character
switch(CodeIn) {// Now lets find what to do with it
case 'V'://Found the second identifier "v1"
v1 = "";
v1 += getChar();
v1 += getChar();
v1 += getChar();
v1 += getChar();
v1i = v1.toInt();
Serial.flush();
break;
}
}
char getChar()// Get a character from the serial buffer
{
while(Serial.available() == 0);// wait for data
return((char)Serial.read());// Thanks Doug
}
Ligando a Ponte H
Nenhum comentário:
Postar um comentário