#define ledPin 2
#define max_elementos 4
char numero_arreglo[max_elementos];
const char* morsedigitos[]={".----", "..---","...--","....-",".....","-....","--...","---..","----.","-----"};
int cont = 0;
bool led_estado = LOW;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(ledPin, OUTPUT); // Configura el pin del LED como salida
digitalWrite(ledPin, LOW); // Asegura que el LED esté apagado inicialmente
Serial.println("\nBienvenido. Ingreseun número no mayor a 3 dígitos.");
}
void loop() {
// put your main code here, to run repeatedly:
delay(10); // this speeds up the simulation
if (Serial.available()) {
char c = Serial.read();
if (c == '\n') {
numero_arreglo[cont] = '\0';
int numero = atoi(numero_arreglo);
if (numero >= 0 && numero <= 999) {
Serial.print( "numero es: ");
Serial.print(numero);
for(int i=0;i<=3;i++){
numero_arreglo[i];
switch(numero_arreglo[i]){
case '1':
parpadearpunto();
parpadearraya();
parpadearraya();
parpadearraya();
parpadearraya();
break;
case '2':
parpadearpunto();
parpadearpunto();
parpadearraya();
parpadearraya();
parpadearraya();
break;
case '3':
parpadearpunto();
parpadearpunto();
parpadearpunto();
parpadearraya();
parpadearraya();
break;
case '4':
parpadearpunto();
parpadearpunto();
parpadearpunto();
parpadearpunto();
parpadearraya();
break;
case '5':
parpadearpunto();
parpadearpunto();
parpadearpunto();
parpadearpunto();
parpadearpunto();
break;
case '6':
parpadearraya();
parpadearpunto();
parpadearpunto();
parpadearpunto();
parpadearpunto();
break;
case '7':
parpadearraya();
parpadearraya();
parpadearpunto();
parpadearpunto();
parpadearpunto();
break;
case '8':
parpadearraya();
parpadearraya();
parpadearraya();
parpadearpunto();
parpadearpunto();
break;
case '9':
parpadearraya();
parpadearraya();
parpadearraya();
parpadearraya();
parpadearpunto();
break;
case '0':
parpadearraya();
parpadearraya();
parpadearraya();
parpadearraya();
parpadearraya();
break;
}
int digito = numero_arreglo[i] - '1';
Serial.println("el numero morse es:");
Serial.println(morsedigitos[digito]);
}
} else {
Serial.println("Error: Ingresa un número válido entre 0 y 999.");
}
cont = 0;
Serial.println("Ingresa un nuevo número:");
}
else if (isdigit(c)) { // Almacena el carácter si es un número
if (cont < max_elementos - 1) {
numero_arreglo[cont++] = c;
} else { // Manejo en caso los digitos sean mayores a 3.
Serial.println("\nError: El numero debe tener máximo 3 dígitos.");
cont = 0; // Reiniciar el índice para la siguiente entrada
reiniciar_buffer();
}
}else { // Manejo de caracteres no válidos
Serial.println("\nError: Ingresa solo números.");
cont = 0; // Reiniciar el índice
reiniciar_buffer();
}
}
}
void reiniciar_buffer() {
// Limpiar buffer de entrada
while (Serial.available()){
Serial.read();
}
Serial.println("Ingresa un nuevo numero:");
}
void parpadearraya(){
digitalWrite(ledPin, HIGH);
delay(600);
digitalWrite(ledPin, LOW);
delay(200);
}
void parpadearpunto(){
digitalWrite(ledPin, HIGH);
delay(200);
digitalWrite(ledPin, LOW);
delay(200);
}