Вы находитесь на странице: 1из 7

SEGUNDA PRACTICA SEMESTRE 2014-I

INGENIERIA BASICA

1. Se desea controlar va bluetooth el encendido y apagado de las lmparas
de tres habitaciones de una vivienda, empleando la tarjeta ARDUINO UNO.

a) Determine las entradas y salidas de la tarjeta ARDUINO UNO.
b) Escribir el programa de App inventor.
c) Dibujar el circuito de conexin y escribir el programa en ARDUINO.



















2. Se trata de construir un robot seguidor de lnea utilizando la tarjeta
ARDUINO UNO.

a) Determinar las entradas y salidas de la tarjeta ARDUINO UNO.
b) Dibujar el circuito de conexin y escribir el programa.


Sol.-

Entradas: Pulsador Entrada, Sensor derecho e izquierdo
Salidas: motores A, B, C y D

PROGRAMA:
Byte i; // variable global
Void setup () {
// Declaracin de pines de entrada y salida

pinMode(12, INPUT); // Pulsador entrada
pinMode(2, INPUT); // Sensor Derecho
pinMode(4, INPUT); // Sensor izquierdo
pinMode(3, OUTPUT); // Motor A atrs
pinMode(5, OUTPUT); // Motor A adelante
pinMode(6, OUTPUT); // Motor B adelante
pinMode(9, OUTPUT); // Motor B Atrs
digitalWrite(12, HIGH); // Pull up para pulsador
}
void loop() {

Inicio: // etiqueta de inicio del programa por uso de saltos

analogWrite(5, 0); // Velocidad 0
analogWrite(6, 0); // Velocidad 0
analogWrite(3, 0); // Velocidad 0
analogWrite(9, 0); // Velocidad 0

while (digitalRead(12)==1); // Pulsador para inicio de
ejecucion, el programa solo iniciara cuando se pulse
while (digitalRead(12)==0); // una vez sea pulsado se
espera a que se deje de presionar para iniciar
delay(100); // retardo de 100ms se evitan
rebotes
For (;;)
{
if (digitalRead(4) && digitalRead(2)) // Lectura de las seales
digitales y ejecucin cuando los dos sensores estn en blanco
{ analogWrite(5, 80); // Movimiento adelante
analogWrite(6, 80);
analogWrite(3, 0);
analogWrite(9, 0);
}
else if (!digitalRead(2) && digitalRead(4)) // Lectura de las seales
digitales y ejecucion cuando el sensor izquierdo entra a la lnea negra
{ analogWrite(5, 23);
analogWrite(6, 0);
analogWrite(3, 0);
analogWrite(9, 23);
}
else if (digitalRead(2) && !digitalRead(4)) // Lectura de las seales
digitales y ejecucion cuando el sensor derecho entra a la lnea negra
{ analogWrite(5, 0);
analogWrite(6, 23);
analogWrite(3, 23);
analogWrite(9, 0);
}
else // Lectura de las seales
digitales y ejecucin cuando los dos sensores estn en lnea negra
{ analogWrite(5, 0);
analogWrite(6, 0);
analogWrite(3, 0);
analogWrite(9, 0);
}
if (digitalRead(12)==0) // Lectura del pulsador de
arranque y parada
{ while (digitalRead(12)==0); // Si fue pulsado espera
a que se deje de presionar y para
delay(100); // retardo de 100ms se evitan
rebotes
goto inicio;} // Vuelve a inicio a esperar
pulso para arranque
}

}




















3. Se trata de construir un indicador de nivel (vmetro con diodos leds) que
sea capaz de medir el valor de una seal de entrada por un potencimetro
desde una entrada analgica. Se establecern 3 diodos leds conectados a
las salidas PIN3, PIN4 Y PIN5. La entrada la conectaremos en la entrada
analgica PIN2 (analog IN2).
a) Determinar las entradas y salidas de la tarjeta arduino uno.
b) Dibujar el circuito de conexin y escribir el programa.

Sol.-
Entradas: inPIN
Salidas: ledPIN1, ledPIN2, ledPIN

Programa:
int ledPin1 = 5; // Seleccin de PIN para cada LED
int ledPin2 = 4;
int ledPin3 = 3;
int inPin= 2; // selecciona la entrada analgica 2 (potencimetro)
void turn_off() { //Apaga los 3 LEDS
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
}
void setup() {
pinMode(ledPin1, OUTPUT); // declara LEDs como salidas
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
turn_off();
}
void loop(){
int val;
val= analogRead(inPin); // lee el valor de la seal analgica
turn_off(); // apaga los tres LED
// Si el valor de la seal medida es > 256 enciendeLED del PIN5
if (val>= 256) digitalWrite(ledPin1, HIGH);
// Si el valor de la seal medida es > 512 enciendeLED del PIN4
if (val>= 512) digitalWrite(ledPin2, HIGH);
// Si el valor de la seal medida es > 758 enciendeLED del PIN3
if (val>= 768) digitalWrite(ledPin3, HIGH);
}



















4. Se dispone de un semforo, el cual en condiciones normales se encuentra
del modo siguiente:
Verde Vehculos
Rojo peatones
En el mismo instante que en peatn accione sobre el pulsador situado en el
semforo, este pasara a amarillo para vehculos, estado que durara durante
3. Finalizado este, pasara a estado rojo para vehculos y verde para
peatones. El tiempo de duracin fijado para rojo vehculos: 6. Finalizado el
proceso, el semforo regresara al estado normal. Durante el tiempo de
duracin del ciclo, deber evitarse que cualquier nueva activacin sobre el
pulsador verde, rearme el ciclo.

Sol.-
Entradas: El botn
Salidas: la luces del semforo y del peatn
Programa:
int carRojo = 12; // se asignan los colores para los autos
int carAmarillo = 11;
int carVerde = 10;
int pedRojo = 9; // se asignan las luces para las personas
int pedVerde = 8;
int button = 2; // button pin
int crossTime = 6000; // Tiempo para cruzar
Unsigned long changeTime; // Tiempo desde que el botn es presionado
void setup() {
pinMode(carRojo, OUTPUT);
pinMode(carAmarillo, OUTPUT);
pinMode(carVerde, OUTPUT);
pinMode(pedRojo, OUTPUT);
pinMode(pedVerde, OUTPUT);
pinMode(button, INPUT); // button on pin 2
// turn on the green light
digitalWrite(carVerde, HIGH);
digitalWrite(pedRojo, HIGH);
}
void loop() {
int state = digitalRead(button);
/* check if button is pressed and it is
over 6 seconds since last button press */
if (state == HIGH && (millis() - changeTime) > 6000) {
// Call the function to change the lights
change Lights();
}
}
void changeLights() {
digitalWrite(carVerde, LOW); // green off
digitalWrite(carAmarillo, HIGH); // yellow on
delay(3000); // espera 3 segundos
digitalWrite(carAmarillo, LOW); // yellow off
digitalWrite(carRojo, HIGH); // red on
delay(1000); // wait 1 second till its safe
digitalWrite(pedRojo, LOW); // ped red off
digitalWrite(pedVerde, HIGH); // ped green on
delay(crossTime); // wait for preset time period
// flash the ped green
digitalWrite(pedVerde, LOW); // ped red off
for (int x=0; x<10; x++) {
digitalWrite(pedRojo, HIGH);
delay(500);
digitalWrite(pedRojo, LOW);
delay(500);
}
// turn ped red on
digitalWrite(pedRojo, HIGH);
delay(500);
digitalWrite(carAmarillo, HIGH); // yellow on
digitalWrite(carRojo, LOW); // red off
delay(1000);
digitalWrite(carVerde, HIGH);
digitalWrite(carAmarillo, LOW); // yellow off
// record the time since last change of lights
changeTime = millis();
// then return to the main program loop
}

Вам также может понравиться