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);
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;

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

servo1.attach(puertoservo,pulsominimo,pulsomaximo); 
digitalWrite (pinLedRojo, HIGH);
pinMode (trig, OUTPUT);
pinMode (echo, INPUT);
pinMode (piezo, OUTPUT);
pinMode (pinBuzzer, OUTPUT);
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);
}
digitalWrite (pinLedRojo, HIGH);
digitalWrite (pinLedAzul, LOW);
}
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;
distancia = duracion/29;
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.



·         ¿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