#define pinPWM 5
#define LONGITUD_ARREGLO 3 //4 valores
char Dato;
int valorPWM = 0;
char valorPWM_Arreglo[LONGITUD_ARREGLO];
int ElementoArreglo = 0;
void setup() {
Serial.begin(115200);
Serial.println("---------------------------------------------------------");
Serial.println("¡Bienvenido a la simulación!");
Serial.println("Ingrese un valor PWM entre 0 y 255");
Serial.println("---------------------------------------------------------");
}
void loop() {
if(Serial.available()>0){ //Se trabaja dato por dato
Dato = Serial.read(); //1 dígito como carácter
if(Dato == '\n'){
valorPWM = atoi(valorPWM_Arreglo);
if(valorPWM >= 0 && valorPWM <= 255){
Serial.print("Valor PWM: ");
Serial.println(valorPWM);
analogWrite(pinPWM,valorPWM);
}else{
Serial.println("---------------------------------------------------------");
Serial.print("Error: ");
}
//PreguntarPorLaContinuacion();
Serial.println("---------------------------------------------------------");
Serial.println("Ingrese un valor PWM entre 0 y 255");
Reinicializar();
}else{
if(ValidarSiEsDigito(Dato)){
if(ElementoArreglo < LONGITUD_ARREGLO){ //Solo se admiten 3 dígitos
valorPWM_Arreglo[ElementoArreglo] = Dato;
ElementoArreglo ++;
}else{
Serial.println("---------------------------------------------------------");
Serial.println("Error: El valor PWM debe ser de máximo 3 dígitos");
LimpiarDatosSeriales(); //Hay un dígitos extra, se reinicia el proceso
Reinicializar();
}
}else{
Serial.println("---------------------------------------------------------");
Serial.println("Error: Ingresa solo números");
LimpiarDatosSeriales(); //Hay un dígitos que no es un número, se reinicia el proceso
Reinicializar();
}
}
}
delay(10);
}
int ValidarSiEsDigito(char Dato){
return Dato >= 48 && Dato <= 57;
}
void LimpiarDatosSeriales(){
while(Serial.available()){ //Se lee todos los valores y por lo tanto ya no hay valores en la entrada serial
Serial.read();
}
Serial.println("---------------------------------------------------------");
Serial.println("Ingrese un valor PWM entre 0 y 255");
}
void Reinicializar(){
for(ElementoArreglo = 0; ElementoArreglo <= LONGITUD_ARREGLO; ElementoArreglo++){
valorPWM_Arreglo[ElementoArreglo] = 0;
}
ElementoArreglo = 0;
}