lunedì 4 febbraio 2013

Counter due + tre


Si imposta il valore di riferimento (Valore1) con un potenziometro.
Quando Valore2 è uguale a Valore1 un relè si innesca o disinnesca.

/* Impostare il valore con il potenziometro.
Quando il numero di impulsi di TASTO2 è
uguale al valore impostato il relè si innesca. */
   
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

 # define POT1      A0
 # define TASTO2   3
 # define RELE     6
 
 long Value1     = 0;
 long Value1a    = 0;
 int  Value2     =0;
 long Tempo1     = 0;
 long Tempo11    = 50; 

 void setup() 
     { pinMode(POT1,   INPUT); 
       pinMode(TASTO2,INPUT );
       pinMode(RELE,  OUTPUT);  
       lcd.begin(16, 2);
       lcd.setCursor(0,0);
       lcd.print ("Valore1");
       lcd.setCursor(0,1);
       lcd.print ("Valore2");
       Serial.begin(9600);    }

 void loop() {
  Value1a=analogRead(POT1);
  Value1 = (Value1a / 2);
  lcd.setCursor(10,0);
  lcd.print(Value1);
  delay(50);
  lcd.print("        ");
delay(10);

  
 //********** TASTO 2  ***************** 
  int StatoTasto2;             
  int StatoTasto2a = LOW;  
  int valoreTasto2 = digitalRead(TASTO2);
//-------- antirimbalzo2-----------
  if (valoreTasto2 != StatoTasto2a)
     {Tempo1 = millis();} 
  if ((millis() - Tempo1) > Tempo11)
      {StatoTasto2 = valoreTasto2;}
             StatoTasto2a = valoreTasto2;
//-------- esecuzione2 ------------  
  if (valoreTasto2 == HIGH)
       { Value2 = (Value2 + 1);
         Serial.println(Value2);
         lcd.setCursor(10,1);
         lcd.print(Value2);
         delay(50);         }
 
//---- CONFRONTO FRA I DUE DATI -------- 
  if (Value1 == Value2)
          { digitalWrite(RELE, HIGH);
            Serial.println("RELE ON");
            delay(30);          }
}


Di seguito è possibile variare il valore di rifimento da un minimo di 1023 a 1534. Per ciò basta collegare un resistore da 10K fra A1 e + Vcc.
/* Impostare il valore con il potenziometro.
Quando il numero di impulsi di TASTO2 è
uguale al valore impostato il relè si innesca.
L'impostazione di rifirmento minima è di 1023.
*/
   
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

 # define POT1    A0
 # define POT2    A1
 # define TASTO2   3
 # define RELE     6
 
 long Value1     =0;
 long Value1a    =0;
 int  Value2     =0;
 int Value2a     = 0;
 long Tempo1     =0;
 long Tempo11    =50; 

 void setup() 
     { pinMode(POT1,   INPUT); 
       pinMode(TASTO2,INPUT );
       pinMode(RELE,  OUTPUT);  
       lcd.begin(16, 2);
       lcd.setCursor(0,0);
       lcd.print ("Valore1");
       lcd.setCursor(0,1);
       lcd.print ("Valore2");
       Serial.begin(9600);    }

 void loop() {
  
  Value2a=analogRead(POT2);
  
  Value1a=analogRead(POT1);
  Value1 = ((Value1a / 2)+ Value2a);
  lcd.setCursor(10,0);
  lcd.print(Value1);
  delay(50);
  lcd.print("        ");
delay(10);

  
 //********** TASTO 2  ***************** 
  int StatoTasto2;             
  int StatoTasto2a = LOW;  
  int valoreTasto2 = digitalRead(TASTO2);
//-------- antirimbalzo2-----------
  if (valoreTasto2 != StatoTasto2a)
     {Tempo1 = millis();} 
  if ((millis() - Tempo1) > Tempo11)
      {StatoTasto2 = valoreTasto2;}
             StatoTasto2a = valoreTasto2;
//-------- esecuzione2 ------------  
  if (valoreTasto2 == HIGH)
       { Value2 = (Value2 + 1);
         Serial.println(Value2);
         lcd.setCursor(10,1);
         lcd.print(Value2);
         delay(50);         }
 
//---- CONFRONTO FRA I DUE DATI -------- 
  if (Value1 == Value2)
          { digitalWrite(RELE, HIGH);
            Serial.println("RELE ON");
            delay(30);          }
}



Nessun commento:

Posta un commento