ARDUINO

Mi primer circuito con Arduino
un led que se enciende y se apaga con un temporizador realizado con el software de arduino



const int pinLED= 13;      //asignar variable led como 13
void setup() {                
  pinMode(pinLED, OUTPUT);      //definir pin 13 como salida  
}
void loop() {
  digitalWrite(pinLED, HIGH);   // encender LED
  delay(1000);                  // esperar un segundo
  digitalWrite(pinLED, LOW);    // apagar LED
  delay(1000);                  // esperar un segundo
}



Encender un pulsador con un botón y al volver a pulsarlo se apague




// Práctica encender LED con botón pulsador y luego apagar LED con el mismo//boton pulsadorconst int LED =13;const int BOTON = 7;int val = 0; //val se emplea para almacenar el estado del botonint state = 0; // 0 LED apagado, mientras que 1 encendidoint old_val = 0; // almacena el antiguo valor de valvoid setup(){  // definir si la variable es de entrada // o salida. pinMode(LED,OUTPUT); // establecer que el pin digital es una señal de salida pinMode(BOTON,INPUT); // y BOTON como señal de entrada}void loop() {       // loop = realice un lazo continuamenteval= digitalRead(BOTON); // lee el estado del Botonif ((val == HIGH) && (old_val == LOW)){state=1-state;delay(10);}old_val = val; // valor del antiguo estadoif (state==1){ digitalWrite(LED, HIGH); // enciende el LED}else{ digitalWrite(LED,LOW); // apagar el LED}}


Semáforo con Arduino: un semáforo





//** Definiciones **//
int rojo=2;      //definimos el valor del pin para el led rojo
int amarillo=4;  //definimos el valor del pin para el led amarillo
int verde=7;     //definimos el valor del pin para el led verde

//** Programa **//

void setup() {
  pinMode(verde,OUTPUT);   //declaramos el pin verde como salida  
  pinMode(amarillo,OUTPUT);//declaramos el pin amarillo como salida
  pinMode(rojo,OUTPUT);    //declaramos el pin rojo como salida  
}

void loop() {
 digitalWrite(verde,HIGH); //encendemos el led rojo
 delay(2000);             //esperamos 2 segundos
 digitalWrite(verde,LOW);  //apagamos el led rojo
 delay(500);              //esperamos medio segundo
 
 digitalWrite(amarillo,HIGH); //encendemos el led amarillo
 delay(2000);                 //esperamos 2 segundos
 digitalWrite(amarillo,LOW);  //apagamos el led amarillo
 delay(500);                  //esperamos medio segundo
 
 digitalWrite(rojo,HIGH); //encendemos el led verde
 delay(2000);              //esperamos 2 segundos
 digitalWrite(rojo,LOW);  //apagamos el led verde
 delay(500);               //esperamos medio segundo
}

Resistencia variable con la luz: Esta resistencia aumenta o disminuye con la luz haciendo que los leds se apaguen













int pinLed2 = 3; int pinLed3 = 4; // Pin analogico de entrada para el LDR int pinLDR = 0; // Variable donde se almacena el valor del LDR int valorLDR = 0; void setup() { // Configuramos como salidas los pines donde se conectan los led pinMode(pinLed1, OUTPUT); pinMode(pinLed2, OUTPUT); pinMode(pinLed3, OUTPUT); // Configurar el puerto serial Serial.begin(9600); } void loop() { // Apagar todos los leds siempre que se inicia el ciclo digitalWrite(pinLed1, LOW); digitalWrite(pinLed2, LOW); digitalWrite(pinLed3, LOW); // Guardamos el valor leido del ADC en una variable // El valor leido por el ADC (voltaje) aumenta de manera directamente proporcional // con respecto a la luz percibida por el LDR valorLDR= analogRead(pinLDR); // Devolver el valor leido a nuestro monitor serial en el IDE de Arduino Serial.println(valorLDR); // Encender los leds apropiados de acuerdo al valor de ADC if(valorLDR > 256) { digitalWrite(pinLed1, HIGH); } if(valorLDR > 512) { digitalWrite(pinLed2, HIGH); } if(valorLDR > 768) { digitalWrite(pinLed3, HIGH); } // Esperar unos milisegundos antes de actualizar delay(200); }

Cuenta atrás con un 7 segmentos


#define A 2
#define B 3

#define C 4
#define D 5
#define E 6
#define Z 7
#define G 8
// Botones de pulsación analógicos
#define BTN1 14
#define BTN2 15
#define BTN3 16 // Este es el botón que quiero para hacer la cuenta regresiva
// Comunes para ánodos o cátodos, según leds
#define CC1 9
#define CC2 10
#define CC3 11
#define CC4 12

// Secuencia de leds para A, B, C, D, E, Z, G
const int segs[7] = { 2, 3, 4, 5, 6, 7, 8 };

//Números multiplexados
  const byte numbers[10] = { 0b1000000, 0b1111001, 0b0100100, 0b0110000, 0b0011001, 0b0010010, 0b0000010, 0b1111000, 0b0000000, 0b0010000};

int estadobtn1 = 0;
int estadobtn2 = 0;
int digit1 = 0;
int digit2 = 0;
int digit3 = 0;
int digit4 = 0;
int count = 0;
int val;
int val2;

void setup() {
  pinMode(A, OUTPUT);
  pinMode(B, OUTPUT);
  pinMode(C, OUTPUT);
  pinMode(D, OUTPUT);
  pinMode(E, OUTPUT);
  pinMode(Z, OUTPUT);
  pinMode(G, OUTPUT);
  pinMode(BTN1, INPUT);
  pinMode(BTN2, INPUT);
  digitalWrite(BTN1, HIGH); 
  digitalWrite(BTN2, HIGH); 
  pinMode(CC1, OUTPUT);
  pinMode(CC2, OUTPUT);
  pinMode(CC3, OUTPUT);
  pinMode(CC4, OUTPUT);
  count = 0;
}

void loop() {
   
  val = digitalRead(BTN1); 
  if (val != estadobtn1) 
  {
    if (val == LOW) 
    {
      
      count++;
      count %= 10000;
    } 
    
  }
  
  estadobtn1=val;

  val = digitalRead(BTN2); 
  if (val != estadobtn2)
  {
    if (val == LOW)
    {
      if (count == 0)
    {
      count=9999;
    } else {
      count--;
      }
    }
    estadobtn2=val;
  }
// display number
digit1=count / 1000;
digit2=(count - (digit1 * 1000)) / 100;
digit3=(count - (digit1*1000) - (digit2*100)) / 10;
digit4=count % 10;

lightDigit1(numbers[digit1]);
  delay(2);
  lightDigit2(numbers[digit2]);
  delay(2);
  lightDigit3(numbers[digit3]);
  delay(2);
  lightDigit4(numbers[digit4]);
  delay(2);
}

void lightDigit1(byte number) {
  digitalWrite(CC1, HIGH);
  digitalWrite(CC2, LOW);
  digitalWrite(CC3, LOW);
  digitalWrite(CC4, LOW);
  lightSegments(number);
}

void lightDigit2(byte number) {
  digitalWrite(CC1, LOW);
  digitalWrite(CC2, HIGH);
  digitalWrite(CC3, LOW);
  digitalWrite(CC4, LOW);
  lightSegments(number);
}

void lightDigit3(byte number) {
  digitalWrite(CC1, LOW);
  digitalWrite(CC2, LOW);
  digitalWrite(CC3, HIGH);
  digitalWrite(CC4, LOW);
  lightSegments(number);
}

void lightDigit4(byte number) {
  digitalWrite(CC1, LOW);
  digitalWrite(CC2, LOW);
  digitalWrite(CC3, LOW);
  digitalWrite(CC4, HIGH);
  lightSegments(number);
}

void lightSegments(byte number) {
  for (int i = 0; i < 7; i++) {
    int bit = bitRead(number, i);
    digitalWrite(segs, bit);
  }
}

Sensor de proximidad este sensor funciona con la proximidad de los objetos haciendo que cuando algo se acerque, el led se encienda y se apague cuando no detecte nada

Leemos la salida del PIR, y hacemos parpadear el LED mientras la señal esté activa.
const int LEDPin= 13;
const int PIRPin= 2;
void setup()
{
  pinMode(LEDPin, OUTPUT);
  pinMode(PIRPin, INPUT);
}
void loop()
{
  int value= digitalRead(PIRPin);
  if (value == HIGH)
  {
    digitalWrite(LEDPin, HIGH);
    delay(50);
    digitalWrite(LEDPin, LOW);
    delay(50);
  }
  else
  {
    digitalWrite(LEDPin, LOW);
  }
}

Sensor de distancia: este sensor se engarga de medir la distancia entre el objeto y el sensor el cual mide la distancia en cm 

const int EchoPin = 5;
const int TriggerPin = 6;
const int LedPin = 13;
void setup() {
   Serial.begin(9600);
   pinMode(LedPin, OUTPUT);
   pinMode(TriggerPin, OUTPUT);
   pinMode(EchoPin, INPUT);
}
void loop() {
   int cm = ping(TriggerPin, EchoPin);
   Serial.print("Distancia: ");
   Serial.println(cm);
   delay(1000);
}
int ping(int TriggerPin, int EchoPin) {
   long duration, distanceCm;
   
   digitalWrite(TriggerPin, LOW);  //para generar un pulso limpio ponemos a LOW 4us
   delayMicroseconds(4);
   digitalWrite(TriggerPin, HIGH);  //generamos Trigger (disparo) de 10us
   delayMicroseconds(10);
   digitalWrite(TriggerPin, LOW);
   
   duration = pulseIn(EchoPin, HIGH);  //medimos el tiempo entre pulsos, en microsegundos
   
   distanceCm = duration * 10 / 292/ 2;   //convertimos a distancia, en cm
   return distanceCm;
}

Sensor de temperatura y humedad: este sensor mide la temperatura ambiental y la humedad del aire 

#include <DHT11.h>

int pin=2;
DHT11 dht11(pin);

void setup()
   {
       Serial.begin(9600);
   }

void loop()
   {
       int err;
       float temp, hum;
       if((err = dht11.read(hum, temp)) == 0)    // Si devuelve 0 es que ha leido bien
          {
             Serial.print("Temperatura: ");
             Serial.print(temp);
             Serial.print(" Humedad: ");
             Serial.print(hum);
             Serial.println();
          }
       else
          {
             Serial.println();
             Serial.print("Error Num :");
             Serial.print(err);
             Serial.println();
          }
       delay(1000);            //Recordad que solo lee una vez por segundo
   }

Con este conseguimos que este sensor nos de la temperatura y la humedad de esta manera

En esta practica conseguimos hacer funcionar un servomotor con un potencio-metro de forma que podemos controlar la velocidad del giro y la rotación
 

#include <Servo.h>
Servo ServoPablo; //Declaramos que queremos controlar un Servo, al cual le vamos a poner un nombre cualquiera
int pot = 0; //El pin análogo donde va conectado el Potenciómetro
int val; //El valor a leer por el puerto análogo
void setup()
{
ServoPablo.attach(9); //El pin al cual conectaremos nuestro Servo
}
void loop()
{
val = analogRead(pot); //Aquí le decimos que lea el valor del potenciómetro, valor el cual oscila entre 0 y 1023
val = map(val, 0 ,1023, 0, 180); //Traduce la lectura análga (0, 1023) a grados (0°, 180°)
ServoPablo.write(val); //Mueve el Servo según la lectura análoga
delay(15);
}

No hay comentarios:

Publicar un comentario