giovedì 29 novembre 2012

Set Reset


  # define TASTOSET   6
  # define TASTORESET   7
  # define RELE       8

  int ValueRELE    =  0;

 void setup() 
     { pinMode(TASTOSET,  INPUT );
       pinMode(TASTORESET,  INPUT );
       pinMode(RELE,      OUTPUT);
       Serial.begin(9600);  }

 void loop() {
//********** TASTO SET  ******************** 
      int valoreTastoSET = digitalRead(TASTOSET);

      if (valoreTastoSET == HIGH)
         {digitalWrite(RELE, HIGH);}
   
//********** TASTO RESET  ******************** 
      int valoreTastoRESET = digitalRead(TASTORESET);

      if (valoreTastoRESET == HIGH)
         {digitalWrite(RELE, LOW);}
    }

3 commenti:

  1. Ciao, mi sa non corrisponde ad un vero Set/Reset. Penso che il relè resta eccitato solo finché il Tasto set è attivo, non appena viene rilasciato si diseccita anche il relè. E' corretta la mia interpretazione? Ciao

    RispondiElimina
  2. E' da molto che un uso più Arduino....ma mi pare di averlo testato.Provalo. Ciao

    RispondiElimina
  3. Ciao, io l'ho pensato ispirandomi a quanto riportato sul progetto 10 dello starter-kit: collego un pulsante al pin 5 ed uno pin 7 utilizzati come input e poi un led al pin 9 configurato come output. Uso una variabile di controllo "controlVar" per azionare o meno l'output. Ad ogni ciclo le variabili "previousOn" e "previousOff" vengono aggiornate ed utilizzate per rilevare il cambiamento di stato dei pulsanti. Il programma è il seguente:

    const int inputOnPin = 5;//pulsante On
    const int inputOffPin = 7;//pulsante Off
    const int outputPin = 9;
    int controlVar = 0;// variabile di controllo inizializzata a 0
    int On;
    int Off;
    int previousOn = 0;
    int previousOff = 0;

    void setup() {
    // put your setup code here, to run once:
    pinMode(inputOnPin, INPUT);
    pinMode(inputOffPin, INPUT);
    pinMode(outputPin, OUTPUT);

    digitalWrite(outputPin,LOW);// led inizialmente spento
    }

    void loop() {
    // put your main code here, to run repeatedly:
    On = digitalRead(inputOnPin);
    delay(1);
    Off = digitalRead( inputOffPin );

    if (On != previousOn) {
    if (On == HIGH){
    controlVar = 1; //set
    }
    }

    if (Off != previousOff) {
    if (Off == HIGH){
    controlVar = 0; //reset
    }
    }

    if (controlVar == 1) {
    digitalWrite(outputPin,HIGH);
    } else if( controlVar == 0) {
    digitalWrite(outputPin,LOW);
    }

    previousOn = On;
    previousOff = Off;
    }

    RispondiElimina