Pages: [1]   Go Down
Author Topic: contar monedas  (Read 79 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hola a todos!!  smiley
soy nuevo en esto y estoy aprendiendo poco a poco a usar el arduino y me gustaria obtener un empujon ya que tengo un problema  smiley-cry con un proyecto que estoy armando, les explico.
Quiero hacer el llenado de 3 envases de agua de 1 galon de  3 y de 5 galones y cada una con su respetivo precio es decir: 1galon = a 3 monedas, 3 galones = a 5 monedas y 5 galones a 6 monedas
el cobro se hara por medio de un pulsador que contara las monedas entrantes despues de contar se enviara el pulso a la valvula
 
mi problema es que solo puedo programar el de un tipo de llenado y no los otros dos, es decir, me cuenta solo el de 1 galon y quiero los demas  smiley-confuse  cuando el cliente seleccione A sea para 1 galon, B para 3 galones y C para 5
intente con esto
 void loop(){
   char dato;
  if
  (Serial.available())
   dato=Serial.read();
  if(dato=='a'){
    primer_llenado();
  }
   while
   (Serial.available())
   dato=Serial.read();
  if(dato=='b'){
    segundo_llenado();
 }
 }


Pero no funciona no cuenta ningun dato, aqui les dejo el de contador de pulsos de monedas :


int CV = 7;        // Control de valvula
int MS = 12;       // Pulsador o Micro-Swiche Activa (Monedero)
int SM=6;          // Salida Para Activar valvula
int contadorM = 0; // Variable para almacenar el conteo de monedas (si la maquina
                         // funciona con una o dos o tres monedas etc.)
int contadorV =0;               // Variable para desctivar la valvula
boolean anteriorMS = LOW;  // Estado anterior pulsador Activa valvula
boolean actualMS = LOW;    // Estado actual pulsador Activa valvula
boolean anteriorCV = LOW;  // Estado anterior fin de llenado Vueltas
boolean actualCV = LOW;    // Estado actual fin de llenado Vueltas

void setup() {
  Serial.begin(9600);   //Inicia comunicación serial
  pinMode(CV,INPUT);
  pinMode(MS,INPUT);
  pinMode(SM,OUTPUT);
 

}

boolean antireboteMS (boolean anteriorMS) // Función antirebote
 
 {
   boolean actualMS = digitalRead(MS);

   if (anteriorMS != actualMS)
   {
     delay(5);
     actualMS = digitalRead(MS);
   }
     return actualMS;
 }

boolean antireboteCV (boolean anteriorCV) // Función antirebote
 
 {
   boolean actualCV = digitalRead(CV);

   if (anteriorCV != actualCV)
   {
     delay(5);
     actualCV = digitalRead(CV);
   }
  return actualCV;
 }
void loop() {

  actualMS = antireboteMS (anteriorMS); // Eliminación de rebote
 
    if ( anteriorMS == LOW && actualMS == HIGH) // Si hay cambio de estado en el botón
   
     {
         contadorM++;               //Incrementa el contador
         delay (1000);           // Retardo
         Serial.println (contadorM);
     }
 
  if (contadorM==5)   // En este caso se programo para que funcionara a 5 monedas
 
  {
     digitalWrite(SM,HIGH); // Se activa luego la valvula
     contadorM=0;           // contador de monedas vuelve a 0 para el proximo evento
  }
 
 
   actualCV = antireboteCV (anteriorCV); // Eliminación de rebote
 
   if ( anteriorCV == LOW && actualCV == HIGH) // Si hay cambio de estado fin de llenado
     
      {
         contadorV++;               //Incrementa el contador
         delay (1000);                // Retardo
        Serial.println (contadorV); 
     }
 
  if (contadorV==1)             // se programa para que de 1 pulso se apague
 
  {
       
       digitalWrite(SM,LOW); // Se apaga la valvula
       delay (200);     
       contadorV=0;        // el contador de vueltas vuelve a 0 para un proximo evento
     
     }
 
  anteriorCV = actualCV; // Actualiza El Estado del fin de llenado
  anteriorMS = actualMS; // Actualiza El Estado Del Pulsador Activa valvula
 
  }
   

Espero obtener sugerencia o ideas cualquiera es bienvenida y de antemanos gracias por tomarse el tiempo de ayudar  smiley smiley-lol
Logged

Pages: [1]   Go Up
Jump to: