Interruptor de moviment

En aquest projecte farem un circuit elèctric que portarà una peça específica amb la qual apagar uns LEDs amb la inclinació de tot el circuit. Això ho farem gràcies a un actuador anomenat pulsador. Com tots ja sabeu, un pulsador és una peça que quan es clica deixa passar corrent, i quan no es clica no en deixa passar. Doncs bé, en aquest projecte utilitzarem un actuador una mica especial, sensor d'inclinació, però que també es pot utilitzar perfectament com a pulsador. Aquest actuador és com una caixeta a on en el seu interior hi ha una boleta metàl·lica, i de com s'inclini aquesta caixeta la boleta pot donar contacte elèctric i no. Per tant depenent de com estigui aquesta caixeta, el pulsador estarà clicat o no. Per tant el projecte que realitzarem constarà bàsicament de set LEDs i un sensor d'inclinació. El primer LED s'encendrà quan hagin passat 10 segons, el segon quan n'agin passat 20, el tercer quan n'agin passat 30... i així amb tots els LEDs. Sembla fàcil oi? Doncs la cosa no acaba aquí. El fet és que aun s'hagin si el sensor d'inclinació detecta que el circuit s'ha mogut, tots els LEDs s'apagaran i tornarà a començar la succeció d'encendre LEDs.





Una vegada fets l'explicació, disposem-nos a construir el circuit elèctric. Els elements necessaris per a construir-lo són:

  • 1xAduino UNO
  • 1xProtoboard
  • 7xLEDs del color que es vulgui
  • 7xresistències de 220ohms
  • 1xsensor d'inclinació
  • 1xresistència de 10k ohms
  • cables

Una vegada realitzat el circuit elèctric, és hora de passar a programar. El programa a realitzar és el següent:

const int PinInterruptor = 8;         //Creem una variable per al pin on connectem el pulsador

unsigned long TiempoPrevio = 0;       //Creem una variable unsigned long que es digui tiempo previo
int EstadodelInterruptor = 0;         //Creem una variable per guardar com està l'interruptor
int EstadoPreviodelInterruptor = 0;   //Creem una variable per guardar com estava abans l'interruptor
int Led = 2;                          //Creem una variable per guardar a on està el primer LED
int Led_2 = 7;                        //Creem una variable per guardar a on està l'ultim LED

long TiempoIntervalocadaLed = 1000;   //Temps indicat en milisegons, que són 10 segons

void setup() {
  //A partir del for, configurem tots els LEDs com OUTPUT
  for(int x = 2;x<8;x++){
    pinMode(x, OUTPUT);
   }
    pinMode(PinInterruptor, INPUT);   //Li diem que el pin a on està l'interruptor és d'entrada
}
    

void loop() {
  //Creem una variable que es digui TiempoActual, i així comencem a comptar desde que arrenca el programa
  unsigned long TiempoActual = millis();

  /*Li diem a la placa que si des de que ha comencat a comptar, han passat 10 segons,
   que torni a posar el comptador a 0 (ja que TiempoPrevio val 0), que encengui el LED
   del nombre de la variable Led, i que quan ho ha fet, que aquesta li sumi un més 
   (d'aquesta manera el nombre de la variable Led serà el següent LED). També li diem
   que si la variable Led val 7 (quan ja estan tots els leds encesos), que no fagi res
   */
    if(TiempoActual - TiempoPrevio > TiempoIntervalocadaLed){
    TiempoPrevio = TiempoActual;
    digitalWrite(Led, HIGH);
    Led++;
    if(Led == 7){
      

      }
    }

    /*A partir d'aquí, quan ja ha fet el procés anterior (ha comprobat el temps, ha 
     encès o no un LED...) li diem que comprovi l'estat de l'interruptor. Si aquest és
     diferent a l'estat anterior (per tant l'interruptor de moviment s'ha mogut que apagui
     tots els LEDs, i que a la variable Led li torni a donar el valor inicial (2) i també
     torni a posar el comptador a 0. Quan ja ho ha fet, li diem que l'estat de
     l'interruptor sigui el mateix que el que estava abans; d'aquesta manera quan
     es torni a moure la placa ho detectarà.
     */
  EstadodelInterruptor = digitalRead(PinInterruptor);
  if(EstadodelInterruptor != EstadoPreviodelInterruptor){
    for(int x = 2;x<8;x++){
      digitalWrite(x, LOW);
    }
    Led = 2;
    TiempoPrevio = TiempoActual;
  }
  EstadoPreviodelInterruptor = EstadodelInterruptor;
}  
// Volver al comienzo del programa


Una vegada ja fet el programa, ja tenim un circuit elèctric el qual podem apagar uns LEDs només amb el simple gest d'inclinar una mica la protoboard. Com sempre, a continuació teniu un botó per a descarregar l'arxiu Arduino.




Cap comentari:

Publica un comentari a l'entrada

↓↓↓ Si vols deixar un comentari fes-ho aquí ↓↓↓