Práctica Dirigida II _Prototipos Interactivos II
Práctica dirigida 2
Prototipos Interactivos II
#include <Servo.h>// se declara las librerias
#include <LiquidCrystal.h>
Servo servo1;
LiquidCrystal lcd (8,9,4,5,6,7);
int v = 1;
int puertoservo = 3;
int trig = 13;
int echo = 12;
int piezo = 2;
int grados;
int tmp=0;
int pulsominimo=650;
int pulsomaximo=2550;
float disCalculada;
void setup()
{
lcd.setCursor (4,1);
lcd.print("PRONIE");// la palabra aparecera en la pantalla
lcd.noBlink();
delay (2000); //espera DE 2 SEGUNDOS
servo1.attach(puertoservo,pulsominimo,pulsomaximo);
pinMode (trig, OUTPUT);
pinMode (echo, INPUT);
pinMode (piezo, OUTPUT);
Serial.begin (9600);
}
void loop()
{
disCalculada = calcularDistancia ();
grados=servo1.read();
Serial.print ("grados :");
Serial.println (grados);
delay (200);
Serial.println("----------");
Serial.print("cm :");
Serial.println(disCalculada);
delay(200);
if (disCalculada < 100)
{
tmp = 100;
tone (piezo, 600, 100);
}
else
{
tmp = 0-10;
}
delay (10);
servo1.write(tmp);
lcd.setCursor(1,1); // para texto en primero linea
lcd.print("Distancia");
lcd.println(disCalculada);
}
int calcularDistancia() //se declara la variable
{
long distancia;
long duracion;
digitalWrite (trig, LOW);
delayMicroseconds (4);
digitalWrite (trig, HIGH);
delayMicroseconds (10);
digitalWrite (trig, LOW);
duracion = pulseIn (echo, HIGH);
duracion = duracion/2;
distancia = duracion/29;
return distancia;
}
Dos Problemas Técnicos
Que no se leflejaba en la pantalla LCD la palabra PRONIE y la palabra Distancia.
Modifique los valores de los números de los pines para la pantalla así:
LiquidCrystal lcd (8,9,4,5,6,7);
Verifique la conexión de los cables del bus a la LCD con ayuda de otras compañeras. Subi/ corri el programa y listo.
Otro problema fue a la hora de conectar el positivo y negativo del servomotor inverti el cable+,-, y luego observe nuevamente el video y hice la corrección.
Reto II de Prototipos Interactivos II
#include <Servo.h>//
se declara las librerias
#include <LiquidCrystal.h>
#include <pitches.h>
Servo servo1;
LiquidCrystal lcd (8,9,4,5,6,7);
#include <LiquidCrystal.h>
#include <pitches.h>
Servo servo1;
LiquidCrystal lcd (8,9,4,5,6,7);
int pinLedRojo=10;// se agrega las variables para los LED
y el Buzzer
int pinLedAzul=11;
int pinBuzzer=2;
int tonos [ ]= {131, 255, 262, 294, 440}; //
se asigna los 5 tonos a sonar
int countTonos=5;
int v = 1;
int puertoservo = 3;
int trig = 13;
int echo = 12;
int grados;
int tmp=0;
int pulsominimo=650;
int pulsomaximo=2550;
float disCalculada;
int v = 1;
int puertoservo = 3;
int trig = 13;
int echo = 12;
int grados;
int tmp=0;
int pulsominimo=650;
int pulsomaximo=2550;
float disCalculada;
void setup()
{
pinMode (pinLedRojo, OUTPUT);// se agrega los pines para
los LED
pinMode (pinLedAzul, OUTPUT);
lcd.setCursor (4,1);
lcd.print("PRONIE");// la palabra aparecera en la pantalla
lcd.noBlink();
delay (2000); //espera DE 2 SEGUNDOS
lcd.setCursor (4,1);
lcd.print("PRONIE");// la palabra aparecera en la pantalla
lcd.noBlink();
delay (2000); //espera DE 2 SEGUNDOS
servo1.attach(puertoservo,pulsominimo,pulsomaximo);
digitalWrite (pinLedRojo, HIGH);
pinMode (trig, OUTPUT);
pinMode (echo, INPUT);
pinMode (piezo, OUTPUT);
pinMode (trig, OUTPUT);
pinMode (echo, INPUT);
pinMode (piezo, OUTPUT);
pinMode (pinBuzzer, OUTPUT);
Serial.begin (9600);
}
Serial.begin (9600);
}
void loop()
{
disCalculada=calcularDistancia ();
grados=servo1.read();
Serial.print ("Grados :");
Serial.println (grados);
delay (2000);
Serial.println("----------");
Serial.print("cm :");
Serial.println(disCalculada);
delay(2000);
if (disCalculada < 100); // se programa un sino, si enciende el pin Rojo y apaga el Azul, y el no apaga el Rojo y enciende el Azul
{
tmp = 100;
for
(int iTono=0; iTono<countTono; iTono++ ) // para la melodía
{
{
tone
(pinBuzzer, tonos[ iTono]);
delay (2000);
delay (2000);
}
digitalWrite
(pinLedRojo, HIGH);
digitalWrite
(pinLedAzul, LOW);
}
else
{
tmp = 0-10;
else
{
tmp = 0-10;
noTone
(pinBuzzer); // para que no suene
delay
(2500);
digitalWrite
(pinLedRojo, LOW);
digitalWrite
(pinLedAzul, HIGH);
}
delay (10);
servo1.write(tmp);
lcd.setCursor(1,1); // para texto en primero linea
lcd.print("Distancia");
lcd.println(disCalculada);
}
int calcularDistancia() //se declara la variable
{
long distancia;
long duracion;
digitalWrite (trig, LOW);
delayMicroseconds (4);
digitalWrite (trig, HIGH);
delayMicroseconds (10);
digitalWrite (trig, LOW);
duracion = pulseIn (echo, HIGH);
duracion = duracion/2;
delay (10);
servo1.write(tmp);
lcd.setCursor(1,1); // para texto en primero linea
lcd.print("Distancia");
lcd.println(disCalculada);
}
int calcularDistancia() //se declara la variable
{
long distancia;
long duracion;
digitalWrite (trig, LOW);
delayMicroseconds (4);
digitalWrite (trig, HIGH);
delayMicroseconds (10);
digitalWrite (trig, LOW);
duracion = pulseIn (echo, HIGH);
duracion = duracion/2;
distancia = duracion/29;
return distancia;
}
return distancia;
}
Nota: Solo falta grabar video de este reto, marque con amarillo lo que modifique para lograr el reto.
tuve que modificar la programación del Reto
#include <LiquidCrystal.h>// se declara las librerias
#include <Servo.h>
#include <pitches.h>
Servo servo1;
LiquidCrystal lcd (8,9,4,5,6,7);
int puertoservo = 3;
int pinLed = 10;
int trig = 13;
int echo = 12;
int piezo = 2;// variable piezo
int pulsominimo=650;
int pulsomaximo=2550;
int grados;
int tmp=0;
float disCalculada;
const int tonos[] = {392,392,440,392,261}; //Incluye notas de la Melodia
const int countTonos = 5;
const int calcularDistancia();
void setup()
{
lcd.setCursor (4,1);
lcd.print("PRONIE");// la palabra aparecera en la pantalla
lcd.noBlink();
delay (5000); //espera DE 2 SEGUNDOS
//-------------//
servo1.attach(puertoservo,pulsominimo,pulsomaximo);
//-------------//
pinMode (trig, OUTPUT);
pinMode (echo, INPUT);
pinMode (piezo, OUTPUT);
pinMode (pinLed, OUTPUT);
Serial.begin (9600);
}
void loop()
{disCalculada = calcularDistancia();
grados=servo1.read();
Serial.println("----------");
Serial.print("cm :");
Serial.println(disCalculada);
delay(200);
Serial.print ("grados :");
Serial.println (grados);
delay (200);
if (disCalculada < 100)// se activa el piezo si cumple la condición
{
tmp = 100;
digitalWrite (pinLed, HIGH);
delay (2000);
tone (piezo, 600, 100);
delay (1000);
}
for (int iTono = 0; iTono < countTonos; iTono++)
{
tone(piezo, tonos[iTono]);
delay (1000);
}
noTone(piezo);
delay(1000);
}
else
{
tmp = 0;
digitalWrite (pinLed, LOW);
delay (2000);
}
delay (10);
servo1.write(tmp);
lcd.setCursor(1,1); // para texto en primero linea
lcd.print("Distancia");
lcd.println(disCalculada);
}
int calcularDistancia() //se declara la variable
{
long distancia;
long duracion;
digitalWrite (trig, LOW);delayMicroseconds (4);
digitalWrite (trig, HIGH);
delayMicroseconds (10);
digitalWrite (trig, LOW);
duracion = pulseIn (echo, HIGH);
duracion = duracion/2;
distancia = duracion/29;
return distancia;
}
}
Video Reto 2
Nota: Omitir lo que aparece escrito, ya que el texto no coinside con lo que yo estoy hablando. Es un error de you tube al parecer.
Gracias.
Se puede reproducir en youtube.com
Patricia Pérez Arias.
tuve que modificar la programación del Reto
#include <LiquidCrystal.h>// se declara las librerias
#include <Servo.h>
#include <pitches.h>
Servo servo1;
LiquidCrystal lcd (8,9,4,5,6,7);
int puertoservo = 3;
int pinLed = 10;
int trig = 13;
int echo = 12;
int piezo = 2;// variable piezo
int pulsominimo=650;
int pulsomaximo=2550;
int grados;
int tmp=0;
float disCalculada;
const int tonos[] = {392,392,440,392,261}; //Incluye notas de la Melodia
const int countTonos = 5;
const int calcularDistancia();
void setup()
{
lcd.setCursor (4,1);
lcd.print("PRONIE");// la palabra aparecera en la pantalla
lcd.noBlink();
delay (5000); //espera DE 2 SEGUNDOS
//-------------//
servo1.attach(puertoservo,pulsominimo,pulsomaximo);
//-------------//
pinMode (trig, OUTPUT);
pinMode (echo, INPUT);
pinMode (piezo, OUTPUT);
pinMode (pinLed, OUTPUT);
Serial.begin (9600);
}
void loop()
{disCalculada = calcularDistancia();
grados=servo1.read();
Serial.println("----------");
Serial.print("cm :");
Serial.println(disCalculada);
delay(200);
Serial.print ("grados :");
Serial.println (grados);
delay (200);
if (disCalculada < 100)// se activa el piezo si cumple la condición
{
tmp = 100;
digitalWrite (pinLed, HIGH);
delay (2000);
tone (piezo, 600, 100);
delay (1000);
}
for (int iTono = 0; iTono < countTonos; iTono++)
{
tone(piezo, tonos[iTono]);
delay (1000);
}
noTone(piezo);
delay(1000);
}
else
{
tmp = 0;
digitalWrite (pinLed, LOW);
delay (2000);
}
delay (10);
servo1.write(tmp);
lcd.setCursor(1,1); // para texto en primero linea
lcd.print("Distancia");
lcd.println(disCalculada);
}
int calcularDistancia() //se declara la variable
{
long distancia;
long duracion;
digitalWrite (trig, LOW);delayMicroseconds (4);
digitalWrite (trig, HIGH);
delayMicroseconds (10);
digitalWrite (trig, LOW);
duracion = pulseIn (echo, HIGH);
duracion = duracion/2;
distancia = duracion/29;
return distancia;
}
}
Video Reto 2
Gracias.
Se puede reproducir en youtube.com
Patricia Pérez Arias.
·
¿Qué desafíos nuevos lograste vencer?
¿Qué nuevos retos te proponés?
Bueno queme un LED, al parecer no
coloque bien la resistencia.
Considero necesario foguiarse más en
este materia para poder desarrollar bien el trabajo, esto a nivel personal.
Además, coloca la URL del Blog
con el video de la Práctica dirigida2.
Mi blog
Respondé a la pregunta¿Qué otros sistemas
utilizan sensores ultrasónicos? ¿Cómo crees que estén programados?
Las alarmas de escaparates, las alarmas
de parqueos en algunos edificios.
Me parece que la programación puede ser
en Arduino.
Completaste una etapa más en esta
aventura en el diseño de prototipos interactivos. ¿Qué nuevos desafíos tienes a
partir de estos ejercicios?
Como plantear este tipo de cursos con
los niños(as), me queda de experiencia que un
paso a paso es fundamental para que las personas hagan lo que se
solicita, sin tantas trabas o sin llegar a la frustración.
Así como que es fundamental el
acompañamiento para encontrar las fallas a nivel de programación o de creación
de maquetas.
Comentarios
Publicar un comentario