Calculo realizar al Monitor Serie
Publicado por Meta (29 intervenciones) el 28/07/2020 09:56:19
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#:
En resumen, quiero hacer lo mismo de C#, sin voz y lo más sencillo posible en Arduino IDE.
Saludos.
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#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
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.
Valora esta pregunta


0