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
int val; //El valor a leer por el puerto análogo
void setup()
{
ServoPablo.attach(9); //El pin al cual conectaremos nuestro Servo
}
{
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);
}
{
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