Documentos de Académico
Documentos de Profesional
Documentos de Cultura
05 5 - Comunicacion - Humano-Maquina - Final PDF
05 5 - Comunicacion - Humano-Maquina - Final PDF
Humano-Máquina
Fundamentos de Programación
Contenidos
Comunicación Humano-Máquina
• La Comunicación
• Problema: “Debugear” el uC
• Solución:
• Leds
• Buzzer
• LCD
• Comunicación Serial
• Desafío
Contenidos
Comunicación Humano-Máquina
• La Comunicación
• Problema: “Debugear” el uC
• Solución:
• Leds
• Buzzer
• LCD
• Comunicación Serial
• Desafío
La Comunicación
Comunicación Humano-Máquina
La Comunicación
Comunicación Humano-Máquina
Canal
Contexto
¿Por Dónde?
¿En Dónde?
Código
¿Cómo?
Contenidos
Comunicación Humano-Máquina
• La Comunicación
• Problema: “Debugear” el uC
• Solución:
• Leds
• Buzzer
• LCD
• Comunicación Serial
• Desafío
Problema: “Debugear el uC”
Comunicación Humano-Máquina
3
• Problema: ¿Cómo comprobamos que lo está
haciendo bién?
• “Debugeamos”
Problema: “Debugear el uC”
Comunicación Humano-Máquina
Canal
¿?
Contexto
Clase
¿Por Dónde?
¿En Dónde?
Valor del
Emisor
uC Mensaje Nosotros
Receptor
Sensor
¿Quién? ¿Qué? ¿Para Quién?
Código
¿?
¿Cómo?
Contenidos
Comunicación Humano-Máquina
• La Comunicación
• Problema: “Debugear” el uC
• Solución:
• Leds
• Buzzer
• LCD
• Comunicación Serial
• Desafío
Leds
Comunicación Humano-Máquina
Aire
¿?
Clase
¿Por Dónde?
¿En Dónde?
Valor del
uC Nosotros
Sensor
¿Quién? ¿Qué? ¿Para Quién?
Luces
¿?
¿Cómo?
Leds
Comunicación Humano-Máquina
• Funciones a Ocupar:
• sensorValue = analogRead(sensorPin);
• pinMode(led, OUTPUT);
• digitalWrite(led, LOW/HIGH);
• delay(10)
• valor2= map (valor1, menor1, mayor1,
menor2 , mayor2);
Leds
Comunicación Humano-Máquina
int a= 0;
int i= 0;
• Arreglo
int arreglo[] = { 10, 20, 4, 9 };
arreglo[0] = 10
arreglo[1] = 20
arreglo[2] = 4
arreglo[3] = 9
Leds
Comunicación Humano-Máquina
Problema:
Hacer el circuito y programa en el cual se
prendan los leds según la posición del
potenciometro. Tiene que usar el comando
for(){} y arreglos.
Leds
Comunicación Humano-Máquina
Hint:
• A armar!
Leds
Comunicación Humano-Máquina
• Código:
#define analogPin A0
#define ledCount 8
int ledPins[] = { 2, 3, 4, 5, 6, 7, 8, 9 };
void setup() {
for (int thisLed = 0; thisLed < ledCount; thisLed++) {
pinMode(ledPins[thisLed], OUTPUT);
}
}
Leds
Comunicación Humano-Máquina
void loop() {
int sensorReading = analogRead(analogPin);
int ledLevel = map(sensorReading, 0, 1023, 0, ledCount);
else {
digitalWrite(ledPins[thisLed], LOW);
}
}
}
Leds
Comunicación Humano-Máquina
Ventajas Desventajas
• La Comunicación
• Problema: “Debugear” el uC
• Solución:
• Leds y Botones
• Buzzer
• LCD
• Comunicación Serial
• Desafío
Buzzer
Comunicación Humano-Máquina
Aire
¿?
Clase
¿Por Dónde?
¿En Dónde?
Valor del
uC Nosotros
Sensor
¿Quién? ¿Qué? ¿Para Quién?
Sonido
¿?
¿Cómo?
Buzzer
Comunicación Humano-Máquina
• Funciones a Ocupar: +
• tone(pin, frecuencia);
• tone(pin, frecuencia, duración);
- +
Problema:
Hacer el circuito y programa en el cual suene
un tono más agudo(mayor frecuencia) cuando
el potenciometro este en los 5 [V] y un tono
más grave(menor frecuencia) cuando el
potenciometro este en los 0[V].
+
- +
Buzzer
Comunicación Humano-Máquina
• Esquemático
Buzzer
Comunicación Humano-Máquina
• A armar!
Buzzer
Comunicación Humano-Máquina
• Código:
#define sensorPin A0
#define buzzer 9
int sensorValue = 0;
int frecuencia= 0;
void setup() {
pinMode(buzzer, OUTPUT);
}
void loop() {
sensorValue = analogRead(sensorPin);
frecuencia = map(sensorValue, 0, 1023, 20, 20000);
tone(buzzer, frecuencia);
}
Buzzer
Comunicación Humano-Máquina
Ventajas Desventajas
Se limita la cantidad de
escalones según la
Fácil de Armar
calidad del parlante y
capacidad auditiva
Solo es necesario un Conocer con anterioridad
buzzer el código de sonidos
Barato
Contenidos
Comunicación Humano-Máquina
• La Comunicación
• Problema: “Debugear” el uC
• Solución:
• Leds y Botones
• Buzzer
• LCD
• Comunicación Serial
• Desafío
LCD
Comunicación Humano-Máquina
Pantalla
¿?
Clase
¿Por Dónde?
¿En Dónde?
Valor del
uC Nosotros
Sensor
¿Quién? ¿Qué? ¿Para Quién?
ACII
¿?
¿Cómo?
LCD
Comunicación Humano-Máquina
• Funciones a Ocupar:
• #include <LiquidCrystal.h>
Se incluye la libreria de display de cristal liquidos.
• LiquidCrystal lcd(12,11,5,4,3,2);
Se crea el objeto “lcd” que ocupa los pines 12, 11, 5,
4, 3 y 2.
• lcd.begin(16,2);
Si inicia el “lcd” que posee 16 espacios de ancho y 2
de alto.
• lcd.print(“hola”);
Escribe la palabra “hola” en el lcd, donde esta el
cursor
LCD
Comunicación Humano-Máquina
Problema:
• Esquemático
LCD
Comunicación Humano-Máquina
• Código:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2);
void setup(){
lcd.begin(16, 2);
lcd.clear();
lcd.print(“Hola, Mundo Inventor");
}
void loop(){
}
LCD
Comunicación Humano-Máquina
• Desafio:
• Eliminar contenido(clear()) y volver al inicio con el cursor
(home())
• Eliminar (cursor(), noCursor()), hacer blink(blink(), noBlink())
y colocar donde quieras(setCursor()) el cursor.
• Mover el contenido del display de derecha a izquierda o
viceversa (autoscroll(), noAutoscroll(), leftToRight(),
rightToLeft())
• Apagar el display (display(), noDisplay())
• Crear un icono propio (createChar())
http://arduino.cc/es/Reference/LiquidCrystal
LCD
Comunicación Humano-Máquina
Ventajas Desventajas
• La Comunicación
• Problema: “Debugear” el uC
• Solución:
• Leds y Botones
• Buzzer
• LCD
• Comunicación Serial
• Desafío
Comunicación Serial
Comunicación Humano-Máquina
• Serial
Comunicación Serial
Comunicación Humano-Máquina
Cables/
¿?
Pantalla
Clase
¿Por Dónde?
¿En Dónde?
Valor del
uC Nosotros
Sensor
¿Quién? ¿Qué? ¿Para Quién?
ACII
¿?
¿Cómo?
Comunicación Serial
Comunicación Humano-Máquina
• Funciones a ocupar:
• Serial.begin(9600);
• Serial.println(sensorValue);
• Monitor Serial
Comunicación Serial
Comunicación Humano-Máquina
• Funciones a ocupar:
• Serial.begin(9600);
Establece la velocidad de datos en bits por segundo (baudios)
para la transmisión de datos en serie
• Serial.println(“hola”);
Imprime los datos al puerto serie como texto ASCII
Comunicación Serial
Comunicación Humano-Máquina
Problema:
• A armar!
Comunicación Serial
Comunicación Humano-Máquina
• Código:
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(A0);
Serial.println(sensorValue);
delay(1);}
Comunicación Serial
Comunicación Humano-Máquina
• Funciones a ocupar:
• Serial.available();
Devuelve el número de bytes (caracteres) disponibles para ser
leidos por el puerto serie. Se refiere a datos ya recibidos y
disponibles
• Serial.read();
Lee los datos entrantes en el buffer de comunicación.
• http://arduino.cc/es/Reference/serial
Comunicación Serial
Comunicación Humano-Máquina
Problema:
• A armar!
Comunicación Serial
Comunicación Humano-Máquina
• Código:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2);
void setup() {
Serial.begin(9600);
Serial.println(“Comunicación Serial funcionando”);
lcd.begin(16, 2);
lcd.clear();
lcd.print(“LCD funcionando");
}
Comunicación Serial
Comunicación Humano-Máquina
void loop(){
if (Serial.available()) {
delay(100);
lcd.clear();
while (Serial.available() > 0) {
lcd.print(Serial.read()); }
}
}
Comunicación Serial
Comunicación Humano-Máquina
Ventajas Desventajas
Interacción bidereccional
Contenidos
Comunicación Humano-Máquina
• La Comunicación
• Problema: “Debugear” el uC
• Solución:
• Leds y Botones
• Buzzer
• LCD
• Comunicación Serial
• Desafío
Desafio: Juego Snake
Comunicación Humano-Máquina
DESAFIO!
• La Comunicación
• Problema: “Debugear” el uC
• Solución:
• Leds y Botones
• Buzzer
• LCD
• Comunicación Serial
• Desafío