Cálculo a realizar

Iniciado por Meta, 28 Julio 2020, 09:58 AM

0 Miembros y 1 Visitante están viendo este tema.

Meta

Hola:

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#:
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.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/