Arduino - Problemas con setCursor();

 
Vista:
Imágen de perfil de Omar
Val: 1
Ha disminuido su posición en 6 puestos en Arduino (en relación al último mes)
Gráfica de Arduino

Problemas con setCursor();

Publicado por Omar (1 intervención) el 25/11/2017 22:03:10
Hola, buena tarde, tengo una pequeña duda, estoy intentando implementar la funcion setCursor para ir presentando un texto con las instrucciones de mi programa, con este codigo intento crear una interfaz de control por angulo de disparo, para controlar la velocidad de un motor AC, con una LCD y un teclado matricial, donde el usuario ingresa un porcentaje del 0-100% y el micro debe mandar un pulso a cierto periodo a una etapa de potencia y sicronizado con un pulso que entra al micro el cual viene directamente de un detector de cruze en cero de la red domestica AC. apenas estoy empezando con el codigo y la verdad no se si este bien estructurado, pero me esta funcionando, las primeras pruebas las hize con un led y un push boton pero usaba la ventana de comando de arduino, mi problema es ahora que todo ese texto lo quiero desplegar en la pantalla LCD, no me respeta la funcion de setCursor y amontona todo el texto, ya le carge otro codigo de ejemplo y si realiza perfectamente la funcion, no se cual sea el problema que ya montando el mismo bloque en mi codigo ya no funciona.

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
#include<Keypad.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int Z;
int i;
int a,b,c;
int prc;
char tecla,letter;
char bandera = 'A';
char bandera2 = '*';
String v1;
String v2;
String v3;
String v4;
char value[3];
 
const byte filas    = 4;
const byte columnas = 4;
byte pinesF[filas] =    {A0, A1, A2, A3};
//                       f1,f2,f3,f4
byte pinesC[columnas] = {10, 9, 8, 7};
 
char teclas[filas][columnas] = {
 
 {'1','2','3','A'},
 {'4','5','6','B'},
 {'7','8','9','C'},
 {'*','0','#','D'}
};
 
Keypad teclado = Keypad(makeKeymap(teclas), pinesF, pinesC, filas, columnas);
 
 
void setup() {
 //lcd.begin(16, 2);
 
 pinMode(12, INPUT); //Pulso del Cruze por cero
 pinMode(13, OUTPUT); //Pulso que va a el moc que activa el triac
 
 
}
 
 
 
 
void loop()
{
 
 
 
 
 
while(bandera == 'A')
{
 
 
 
  lcd.print("Ingresa la"); // Imprime "LCD Tutorial" sobre el LCD
  delay(2000);   // 3 segundos de espera
  lcd.setCursor(0,4); // Seteamos la ubicacion texto 0 linea 1 que sera escrita sobre el LCD
 
  lcd.print("Velocidad:");
  delay(3000);
  lcd.clear(); // Limpia la pantalla
  delay(1500);
 
 
 
 
 
for(i=0;i<3;i++)
{
 tecla = teclado.waitForKey();
 //Serial.print(tecla);
 if (tecla != 0)
 {
  value[i] = tecla;
 }
 
 
 }
Serial.println();
 
v1 = value[0];
v2 = value[1];
v3 = value[2];
v4 = value[3];
 
//Serial.println();
 
int x1 = v1.toInt();
int x2 = v2.toInt();
int x3 = v3.toInt();
int x4 = v4.toInt();
 
a = x1 * 100;
b = x2 * 10;
c = x3 * 1;
 
prc = a+b+c;
 
 
lcd.clear();
//lcd.setCursor(16,2);
lcd.print("Porcentaje:");
//lcd.setCursor(0,1);
lcd.print(prc);
 
 
switch (prc) {
    case 100:
      Serial.println("Velocidad:100% ");
      while(letter != '#'){
      letter = teclado.getKey();
      Z = digitalRead(12);
      if(Z == HIGH){
        digitalWrite(13,HIGH);
        delay(1000);
        digitalWrite(13,LOW);
       }
      }
      break;
 
     case 50:
      Serial.println("Velocidad:50% ");
      while(letter != '#'){
      letter = teclado.getKey();
      Z = digitalRead(12);
      if(Z == HIGH){
        digitalWrite(13,HIGH);
        delay(500);
        digitalWrite(13,LOW);
       }
      }
      break;
 
      case 98:
      Serial.println("Velocidad:50% ");
      while(letter != '#'){
      letter = teclado.getKey();
      Z = digitalRead(12);
      if(Z == HIGH){
        digitalWrite(13,HIGH);
        delay(500);
        digitalWrite(13,LOW);
       }
      }
      break;
 
 
 
 
    default:
      Serial.println("Opcion no valida");
      break;
  }// FIN DEL SWITCH
 
letter = '*';
bandera2 = '*';
 
 
 
 
while(bandera2 != 'A'){
Serial.println("Desea ingrasar otra velocidad?   A = SI    B = NO");
bandera = teclado.waitForKey();
bandera2 = bandera;
 
}
 
 
 
}
 
 
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder