Pages: [1]   Go Down
Author Topic: Ayuda incrementar variable con if...else Arduino UNO  (Read 760 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola a todos, soy algo nueva en esto de la programación en Arduino. Estoy haciendo un proyecto que aunque parezca sencillo me ha llevado un par de dificultades.

La idea general es leer entradas digitales y mandar a imprimir en pantalla un texto. Pero mi problema se da cuando la variable se debe incrementar... Adjunto algo del código para que me entiendan...

/**
Prueba de Pull System
Se realiza la rutina de insersion de circuitos.

La rutina se programa de forma estatica dentro del programa.
**/
// Incluir librerias
#include <LiquidCrystal.h>
int sc=9;// Indice del mensaje puesto en pantalla
LiquidCrystal lcd(7,10,9, 11, 12, 13);
/*The circuit:
 * LCD RS pin to digital pin 7
 * LCD Enable pin to digital pin 10
 * LCD D4 pin to digital pin 9
 * LCD D5 pin to digital pin 11
 * LCD D6 pin to digital pin 12
 * LCD D7 pin to digital pin 13
 * 10K resistor:
 * ends to +5V and ground
 * wiper to LCD VO pin (pin 3)*/
 
//Variables
int proceso=0;
int checkpull=0;
int n_jalon=0;
int closeCont=0;
int showmsg=1;

//Constantes
const int bocina=8;
const int led1=3; //caña1
const int led2=4; //caña2
const int pull=2;
const int pull2=14;
const int poste=15; //poste
const int via1=5;   //continuidad
const int via2=6;   //continuidad
const int error=16; //led error

// Funcion que genera una alerta sonora
void soundBit(int t=100){tone(bocina,5000,t);}

void setup(){
  pinMode(pull,INPUT);
  pinMode(pull2,INPUT);
  pinMode(led1,OUTPUT);
  pinMode(via1,OUTPUT);
  pinMode(via2,INPUT);
  pinMode(poste,OUTPUT);
  pinMode(error,OUTPUT);
  // configuramos las columna y filas que tendra la pantalla
  lcd.begin(20, 4);
 // Mostar un mensaje en la pantalla
  lcd.print("Iniciando ....");
 //Ubicamos el cursor en la segunda linea
  lcd.setCursor(0,1);
  lcd.print(" Pull System");
  lcd.setCursor(0,2);
  lcd.print("Inserte, jale, jale");
  delay(500);
}

void loop(){   
  switch(proceso){
    case 0:
      digitalWrite(led1,HIGH);
       if(showmsg){
        showmsg=0;
        lcd.clear();
        lcd.print("Insertar y Pull");
        lcd.setCursor(0,1);
        lcd.print("CNC 1 - Cav:1");
        lcd.setCursor(0,2);
        lcd.print("Color: V/B");
      }
      checkpull=digitalRead(pull);      // Esperar el jalon
      if(checkpull==HIGH){   
            n_jalon++;
            if(n_jalon==2){lcd.setCursor(0,3);lcd.print("error!");delay(100); proceso++;showmsg=1;n_jalon=0;}
            delay(200);
     }      else if(n_jalon==3){lcd.setCursor(0,3);lcd.print("error!");}
     break;
  }
}


La variable n_jalon me incrementa cuando la señal de entrada (pull = 1), cuando se hace por 2 veces pasa al siguiente proceso (no está descrito en el código), pero cuando se hace 3 veces no logro detectarlo ya que primero tuvo que haber por 2 y se queda en el proceso de   if(n_jalon==2){lcd.setCursor(0,3);lcd.print("error!");delay(100); proceso++;showmsg=1;n_jalon=0;}.

Se les agradece mucho la colaboración.

Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Buenas.
Soy novato, pero me ha parecido ver que tienes el problema de utilizar "else" o en igualar n_jalon a 0 en la condicion que njalon valga 2 .

   if(checkpull==HIGH){   
            n_jalon++;
            if(n_jalon==2){
                  lcd.setCursor(0,3)
                  lcd.print("error!")
                  delay(100)
                  proceso++
                  showmsg=1
                  n_jalon=0     <------------
             }
            delay(200);
            if(n_jalon==3){
                   lcd.setCursor(0,3)
                   lcd.print("error!")
             }
    }
     break;

En el caso que n_jalon valga 2, lo pones a 0, así que nunca pasara al 3 si primero pasa por 2.

De esto no estoy seguro del tema de poner solo if:
Así te leera los dos "if" y te hara una cosa en cada uno
Ahora te pregunto: qué pasa cuando n_jalon tiene otro valor que no sea 2 ó 3??
Un saludo
Logged

Pages: [1]   Go Up
Jump to: