How should I add a condition inside of switch case to use the function ultra ().
#include <Wire.h>
#include <Servo.h> //Biblioteca de controle servo
int lamp=12; //lâmpada
int EN2 = 2;
int EN3 = 3;
int EN4 = 4;
int EN5 = 5;
int val;
int valor = 15;
int lx=90;
const int pingPin = 11;
const int start_signal = 12;
long duration, inches, cm;
//2-way servo
Servo servoX; //Servo eixo X movimento da cabeca esquerdo direito
Servo servoY; //Servo eixo Y movimento de cima para baixo
///////////////////////////////////////
void ting(void)
{
digitalWrite(EN2,LOW);
digitalWrite(EN3,LOW);
digitalWrite(EN4,LOW);
digitalWrite(EN5,LOW);
}
void qian(void)
{
digitalWrite(EN2,LOW);
digitalWrite(EN3,HIGH);
digitalWrite(EN4,LOW);
digitalWrite(EN5,HIGH);
}
void hou(void)
{
digitalWrite(EN2,HIGH);
digitalWrite(EN3,LOW);
digitalWrite(EN4,HIGH);
digitalWrite(EN5,LOW);
}
void zuo(void)
{
digitalWrite(EN2,LOW);
digitalWrite(EN3,HIGH);
digitalWrite(EN4,HIGH);
digitalWrite(EN5,LOW);
}
void you(void)
{
digitalWrite(EN2,HIGH);
digitalWrite(EN3,LOW);
digitalWrite(EN4,LOW);
digitalWrite(EN5,HIGH);
}
void ultra() // Ultrasonic sensor
{
//long duration, inches, cm;
pinMode(pingPin, OUTPUT);
pinMode(start_signal, OUTPUT);
digitalWrite(start_signal, HIGH);
delayMicroseconds(20);
digitalWrite(start_signal, LOW);
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(5);
digitalWrite(pingPin, LOW);
pinMode(pingPin, INPUT);
duration = pulseIn(pingPin, HIGH);
inches = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();
delay(80);
}
long microsecondsToInches(long microseconds)
{
return microseconds / 74 / 2;
}
long microsecondsToCentimeters(long microseconds)
{
return microseconds / 29 / 2;
}
//Servo virar a esquerda
void servo_left()
{
int servotemp=servoX.read();//Obter o valor atual do ângulo do servo
servotemp-=2;//Movimento do servo de 1 grau
if(servotemp<170&&servotemp>10) //definir o ângulo de rotação da direcção de engrenagem de 10 graus a 170 graus
servoX.write(servotemp);
else if (servotemp<=10) servoX.write(10);
else servoX.write(170);
}
//Servo virar à direita
void servo_right()
{
int servotemp=servoX.read();//Obter o valor atual do ângulo do servo
servotemp+=2;//Movimento do servo de 1 grau
if(servotemp<170&&servotemp>10)//definir o ângulo de rotação da direcção de engrenagem de 10 graus a 170 graus
servoX.write(servotemp);
else if (servotemp<=10) servoX.write(10);
else servoX.write(170);
}
//servo Carregar
void servo_up()
{
int servotemp1=servoY.read();//Obter o valor atual do ângulo do leme
servotemp1+=2;//Obter o valor atual do ângulo do servo
if(servotemp1<170&&servotemp1>10)//definir o ângulo de rotação da direcção de engrenagem de 10 graus a 170 graus
servoY.write(servotemp1);
else if (servotemp1<=10) servoY.write(10);
else servoY.write(170);
}
//Servo próximo turno
void servo_down()
{
int servotemp1=servoY.read();//Obter o valor atual do ângulo do servo
servotemp1-=2;//Movimento do servo de 1 grau
if(servotemp1<170&&servotemp1>10)//definir o ângulo de rotação da direcção de engrenagem de 10 graus a 170 graus
servoY.write(servotemp1);
else if (servotemp1<=10) servoY.write(10);
else servoY.write(170);
}
void setup()
{
delay(35000);//Um atraso de 35 segundos, para evitar a interferência emitida pela inicialização do roteador porta WF171
Serial.begin(9600);//Definir a taxa de transmissão de 9600bps
servoX.attach(8);//Servo horizontal por 10 metros
servoY.attach(9);//Superior e inferior de engrenagem de direção, em seguida, 11 pés
servoX.write(90);//A posição X de saída servos inicial de 90 graus
servoY.write(90);//A posição Y de saída servos inicial de 90 graus
pinMode(lamp,OUTPUT);
pinMode(EN2,OUTPUT);
pinMode(EN3,OUTPUT);
pinMode(EN4,OUTPUT);
pinMode(EN5,OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
}
void loop()
{
if (Serial.available())
{ val = Serial.read();
switch(val)
{
case 'a':
servoX.write(lx);
qian();
break;
case 'b':
hou();
break;
case 'c':
zuo();
break;
case 'd':
you();
break;
case 'e':
ting();
break;
case 'j':
servo_left();
break;
case 'l':
servo_right();
break;
case 'k':
servo_up();
break;
case 'i':
servo_down();
break;
case 'n':
digitalWrite(lamp,HIGH);
break;
case 'm':
digitalWrite(lamp,LOW);
break;
}
}
}