Quiero hacer un programa en Arduino en el cual te pide cuatro valores. Esos valores son números a introducir por el monitor Serie de Arduino IDE.
Hice un ejemplo en C# modo consola para que se entienda lo que quiero decir.
Estos son los datos que te piden, solo cuatro y nada más.
Desde que pulse Enter con todo lo que indica arriba, en C# lo muestra como indica abajo. Lo que indica en laimagen de abajo, es el resultado que tiene que dar el monitor Serie.
Esto ya parece un reto.
Códido C#:
Código:
using System;
using System.Speech.Recognition; // No olvidar. Micro.
using System.Speech.Synthesis; // No olvidar. Altavoz.
// No olvidar añadir en "Referencias" Speech en el "Explorador de soluciones".
namespace Calculo_cilindro_voz_consola_02_cs
{
class Program
{
static void Main(string[] args)
{
// Mostrar título de la ventana.
Console.Title = "Cálculo litros de un depósito - By Meta. Electrónica PIC";
// Tamaño de la ventna. 55 X y 16 Y.
Console.SetWindowSize(55, 16);
#region Variables.
// Variables.
const double Pi = 3.14;
float PI = Convert.ToSingle(Pi);
float radio, altura, volumen, litros, nivelAgua, resultadoPorcentaje,
resultadoLitros, volumenLitros, mitadBarra, cantidadTubosLitros,
totalLitros;
float cantidadTubos;
#endregion
do
{
try
{
// Inicializar una nueva instancia de SpeechSynthesizer.
using (SpeechSynthesizer altavoz = new SpeechSynthesizer())
{
#region Introducción de datos en la pantalla.
// Configure la salida de audio.
altavoz.SetOutputToDefaultAudioDevice();
// Velocidad de la voz.
altavoz.Rate = -2; // Valores entre -10 a 10.
// Volumen de la voz.
altavoz.Volume = 100; // Valores entre 0 y 100.
// Limpiar pantalla.
Console.Clear();
// Cursor visible.
Console.CursorVisible = true;
// Introducción de datos.
Console.Write("Introduce el radio en m.: ");
altavoz.Speak("Introduce el radio en metros.");
radio = float.Parse(Console.ReadLine());
Console.Write("Introduce la altura del tubo en m.: ");
altavoz.Speak("Introduce la altura del tubo en metros.");
altura = float.Parse(Console.ReadLine());
Console.Write("Introduce altura del agua. Máximo es de {0} m.: ", altura);
altavoz.Speak("Introduce altura del agua. Máximo es de " + altura + "metros.");
nivelAgua = float.Parse(Console.ReadLine());
Console.Write("Introduce cantidad de tubos: ");
altavoz.Speak("Introduce cantidad de tubos.");
cantidadTubos = int.Parse(Console.ReadLine());
#endregion
#region Cálculos.
// Cálculo volumen.
volumen = PI * (radio * radio) * altura;
// Cálculo litros.
litros = volumen * 1000;
// Cálculo porcentaje en % del litro de agua.
resultadoPorcentaje = nivelAgua * (100 / altura);
// Cálculo litros de agua.
volumenLitros = PI * (radio * radio) * nivelAgua;
resultadoLitros = volumenLitros * 1000;
// Cálculo litros por cantidad de tubos
cantidadTubosLitros = cantidadTubos * resultadoLitros;
// Cálculo cantidad de litros con total de tubos.
totalLitros = litros * cantidadTubos;
#endregion
#region Dibujado barra de progreso.
// Posición.
Console.SetCursorPosition(0, 4);
// Dibujo de la barra.
Console.WriteLine();
Console.WriteLine("0 % 50 % 100 %");
Console.WriteLine("┌────────────────────────┬───────────────────────┐");
// Mitad de la barra para que no sea muy grande en la pantalla.
mitadBarra = resultadoPorcentaje / 2;
if (resultadoPorcentaje <= 15)
{
Console.ForegroundColor = ConsoleColor.Red;
}
else if (resultadoPorcentaje <= 40)
{
Console.ForegroundColor = ConsoleColor.Yellow;
}
else if (resultadoPorcentaje <= 100)
{
Console.ForegroundColor = ConsoleColor.Green;
}
if (mitadBarra > 50)
{
mitadBarra = 50;
}
Console.SetCursorPosition(0, 7);
// Rellenar la barra.
for (int i = 1; i <= mitadBarra; i++)
{
Console.Write("█");
}
Console.ForegroundColor = ConsoleColor.Gray;
// Si llega a 100 se pone el # en rojo.
if (resultadoPorcentaje > 100)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.Write("#");
Console.ForegroundColor = ConsoleColor.Gray;
}
#endregion
#region Mostrar textos en pantalla.
// Cursor invisible.
Console.CursorVisible = false;
// Pisición del texto a mostrar.
Console.SetCursorPosition(0, 9);
// Muestra porcentaje del depósito.
Console.ForegroundColor = ConsoleColor.Gray;
Console.Write("\nPorcentaje: ");
Console.ForegroundColor = ConsoleColor.Cyan;
Console.WriteLine(resultadoPorcentaje.ToString("N2") + " %.");
altavoz.Speak("Cantidad de agua que hay en el depósito es de " +
//resultadoPorcentaje.ToString("N2") + "%.");
resultadoPorcentaje + "%.");
// Muestra cantidad de agua que hay actualmente y el total.
Console.ForegroundColor = ConsoleColor.Gray;
Console.Write("\nLitros de agua: ");
Console.ForegroundColor = ConsoleColor.Cyan;
Console.Write(resultadoLitros.ToString("N2"));
Console.ForegroundColor = ConsoleColor.Gray;
Console.WriteLine(" / " + litros.ToString("N2") + " L. total de un tubo.");
altavoz.Speak("Cantidad de litros de agua en un tubo de " +
resultadoLitros.ToString("N2") + "de " +
litros.ToString("N2") + " litros total de un tubo.");
// Cantidad de tubos sin contar la base conectada, solo tubos independiente.
Console.ForegroundColor = ConsoleColor.Gray;
Console.Write("\nCantidad de Litros total por " + cantidadTubos + " tubos: ");
Console.ForegroundColor = ConsoleColor.Cyan;
Console.Write(cantidadTubosLitros.ToString("N2"));
Console.ForegroundColor = ConsoleColor.Gray;
Console.WriteLine(" / " + totalLitros.ToString("N2") + " L.");
altavoz.Speak("Cantidad de litros en total por " + cantidadTubos.ToString("N2") +
" tubos: " + cantidadTubosLitros.ToString("N2") +
" de " + totalLitros.ToString("N2") + " litros.");
#endregion
}
}
catch (FormatException)
{
Console.BackgroundColor = ConsoleColor.Gray;
Console.ForegroundColor = ConsoleColor.Red;
Console.Clear();
Console.SetCursorPosition(8, 5);
Console.Write(@"La cadena de entrada no tiene el
formato correcto.
Solo debes introducir números y comas.");
Console.CursorVisible = false;
Console.BackgroundColor = ConsoleColor.Black;
Console.ForegroundColor = ConsoleColor.Gray;
}
// Pulse cualquier tecla para continuar.
Console.ReadKey();
} while (true);
}
}
}
En resumen, quiero hacer lo mismo de C#, sin voz y lo más sencillo posible en Arduino IDE.
Saludos.