Con este circuito vimos el uso de la resistencia, aprendimos que esta va al negativo y también vimos cómo conectar la placa arduino.
Semáforo
Se creo un circuito mediante códigos, en el cual el color de los semáforos cambia en dirección contraria, es decir cuando en una está roja en otra verde y viceversa.
Código:
int ROJO1 = 7;
int AMARILLO1 = 6;
int VERDE1 = 5;
int ROJO2 = 10;
int AMARILLO2 = 9;
int VERDE2 = 8;
void setup()
{
pinMode(ROJO1, OUTPUT);
pinMode(AMARILLO1, OUTPUT);
pinMode(VERDE1, OUTPUT);
pinMode(ROJO2, OUTPUT);
pinMode(AMARILLO2, OUTPUT);
pinMode(VERDE2, OUTPUT);
}
void loop()
{
digitalWrite(ROJO2, HIGH);
digitalWrite(AMARILLO2, LOW);
digitalWrite(VERDE2, LOW);
digitalWrite(ROJO1, LOW);
digitalWrite(AMARILLO1, LOW);
digitalWrite(VERDE1, HIGH);
delay(3000);
digitalWrite(VERDE1, LOW);
delay(500);
digitalWrite(VERDE1, HIGH);
delay(500);
digitalWrite(VERDE1, LOW);
delay(500);
digitalWrite(VERDE1, HIGH);
delay(500);
digitalWrite(VERDE1, LOW);
digitalWrite(AMARILLO1, HIGH);
delay(1000);
digitalWrite(AMARILLO1, LOW);
digitalWrite(ROJO1, HIGH);
digitalWrite(ROJO2, LOW);
digitalWrite(AMARILLO2, LOW);
digitalWrite(VERDE2, HIGH);
delay(3000);
digitalWrite(VERDE2, LOW);
delay(500);
digitalWrite(VERDE2, HIGH);
delay(500);
digitalWrite(VERDE2, LOW);
delay(500);
digitalWrite(VERDE2, HIGH);
delay(500);
digitalWrite(VERDE2, LOW);
digitalWrite(AMARILLO2, HIGH);
delay(1000);
digitalWrite(AMARILLO2, LOW);
digitalWrite(ROJO2, HIGH);
}
Led normal e intermitente
Para este circuito se utilizó una placa arduino, una de pruebas y 2 leds, luego se creó un código, en el cual un led mantiene luz fija y el otro intermitente.
Código:
// C++ code
//
void setup()
{
pinMode(LED_BUILTIN, OUTPUT);
}
void loop()
{
digitalWrite(LED_BUILTIN, HIGH);//Puerto 13 en estado alto
delay(1000); // Wait for 1000 millisecond(s)
digitalWrite(LED_BUILTIN, LOW);
delay(1000); // Wait for 1000 millisecond(s)
}
Cadena servo
Se juntaron tres servomotores en una placa para crear un circuito en el cual los tres tenían el mismo ángulo de rotación y velocidad, se me movían todos igual y al mismo tiempo.
Código:
#include <Servo.h> // libreria para servo
Servo servo1;
Servo servo2;
Servo servo3;
int angulo = 0; //variable con valor de 0 para giro de motores
// angulos de 45,60,90,120,135, 150,180 grados
void setup()
{
servo1.attach(3);// señal del pin 3
servo2.attach(5);// señal del pin 3
servo3.attach(6);// señal del pin 3
}
void loop()
{
for (angulo = 0; angulo < 180; angulo = angulo +10)
{
servo1.write(angulo); // motor se mueve de 0 a 180
servo2.write(angulo);
servo3.write(angulo);
delay(1000);
}
for (angulo = 180; angulo < 0; angulo --)
{
servo1.write(angulo); // motor se mueve de 0 a 180
servo2.write(angulo);
servo3.write(angulo);
delay(1000);
}
}
Botones IO
Para este código en ves de utilizar la placa de pruebas, se uso una mini placa, en el cual se realizó un circuito con dos leds y dos botones donde estos se apagan y se prenden, dejando presionado un botón por cierto tiempo.
Código:
const int led_rojo = 3;
const int led_verde = 4; //Declarar Variables y Constantes
const int ent_pulsador = 7;
const int ent_pullDown = 8; //en este caso variables tipo entero
int lectura;
int lectura_pull;
void setup()
{
pinMode(led_rojo, OUTPUT);
pinMode(led_verde, OUTPUT); // Asignación de puertos como entrada/salida
pinMode(ent_pulsador, INPUT_PULLUP); //Se utiliza la resistencia
pinMode(ent_pullDown, INPUT); // interna de Pull_Up
}
void loop()
{
lectura = digitalRead(ent_pulsador); //Se lee el estado del pulsador
lectura_pull = digitalRead(ent_pullDown); //Se lee el estado del pulsador/resistencia
digitalWrite(led_rojo, lectura); //Se escribe en el puerto 3 el estado de la
//la lectura del pulsador
digitalWrite(led_verde, lectura_pull); ////Se escribe en el puerto 4 el estado de
//la lectura del pulsador/resistencia de
//Pull-Up
}
Circuito de proximidad
Aprendimos a usar un sensor de distancia ultra sónico en uña circuito junto a leds que indicaban que tan lejos se esta del objeto.
Código:
const int led_rojo = 2;
const int led_amarillo = 3;
const int led_verde = 4;
const int parlante = 9;
void setup()
{
pinMode(led_rojo,OUTPUT);
pinMode(led_amarillo,OUTPUT);
pinMode(led_verde,OUTPUT); Serial.begin(9600);
}
void loop()
{
long distancia = 0.01723 * readUltrasonicDistance(5, 6);
delay(10);
Serial.println(distancia);
if((distancia>0)and(distancia<100))
{
digitalWrite(led_rojo,HIGH);
digitalWrite(led_amarillo,LOW);
digitalWrite(led_verde,LOW); tone(parlante,200,300);
}
if((distancia>100)and(distancia<200))
{
digitalWrite(led_rojo,LOW);
digitalWrite(led_amarillo,HIGH);
digitalWrite(led_verde,LOW);
tone(parlante,200,300);
delay(400);
} if((distancia>200)and(distancia<300))
{
digitalWrite(led_rojo,LOW);
digitalWrite(led_amarillo,LOW);
digitalWrite(led_verde,HIGH);
tone(parlante,200,300);
delay(700);
}
if(distancia>300)
{
digitalWrite(led_rojo,LOW);
digitalWrite(led_amarillo,LOW);
digitalWrite(led_verde,LOW);
}
}
long readUltrasonicDistance(int triggerPin, int echoPin)
{
pinMode(triggerPin, OUTPUT); // Clear the trigger
digitalWrite(triggerPin, LOW);
delayMicroseconds(2);
// Sets the trigger pin to HIGH state for 10 microseconds
digitalWrite(triggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);
pinMode(echoPin, INPUT);
// Reads the echo pin, and returns the sound wave travel time in microseconds
return pulseIn(echoPin, HIGH);
}
Uso del servomotor
Ahí usamos servomotores y creamos un circuito en el que se podía controla la velocidad y el movimiento de ellos.
Código:
#include <Servo.h> // libreria para servo
Servo servo1;
Servo servo2;
Servo servo3;
int angulo = 0; //variable con valor de 0 para giro de motores
// angulos de 45,60,90,120,135, 150,180 grados
void setup()
{
servo1.attach(3);// señal del pin 3
servo2.attach(5);// señal del pin 3
servo3.attach(6);// señal del pin 3
}
void loop()
{
for (angulo = 0; angulo < 180; angulo = angulo +10)
{
servo1.write(angulo); // motor se mueve de 0 a 180
servo2.write(angulo);
servo3.write(angulo);
delay(1000);
}
for (angulo = 180; angulo < 0; angulo --)
{
servo1.write(angulo); // motor se mueve de 0 a 180
servo2.write(angulo);
servo3.write(angulo);
delay(1000);
}
}
No hay comentarios:
Publicar un comentario