Está en la página 1de 19

FUNCIN MAP

Funcin Map

La funcin map() permite re-mapear valores de un rango de entrada, a


valores de un rango de salida. Las lecturas anlogas y se mencion que los
valores esperados estarn entre 0 y 1023, que representan los 10 bits que
maneja la funcin analogRead(). En muchos casos es necesario re escalar
dichos valores a un rango con mayor utilidad, sea el control de temperatura
de un sistema de domtica, la velocidad de un motor o en nuestro caso, la
intensidad de un LED.
El primer problema que encontraremos es que la funcin analogRead()
maneja 10 bits (0 a 1023), mientras que la funcin analogWrite() maneja 8
bits (0 a 255). Una opcin para este problema es re-escalar los valores de
lectura mediante el uso de una ecuacin lineal
Laboratorio 11, Control de Servomotor con
Potencimetro
#include <Servo.h>
Servo s1;
int a;
void setup() {
s1.attach(9);
}
void loop() {
a = map(analogRead(A0),0,1024,0,180);
s1.write(a);
delay(250);
}
Laboratorio 10, Control de Led RGB con
potencimetros
int R=9,G=10,B=11;
void setup(){
Serial.begin(9600);
pinMode(9,OUTPUT);
Serial.begin(9600);
pinMode(10,OUTPUT);
Serial.begin(9600);
pinMode(11,OUTPUT);

}
void loop (){
int potR= analogRead(A0);
int potG= analogRead(A1);
int potB= analogRead(A2);
int mapR= map(potR,0,1023,0,255);
int mapG= map(potG,0,1023,0,255);
int mapB= map(potB,0,1023,0,255);
Serial.print(mapR); Serial.print(" "); Serial.print(mapG);
Serial.print(" "); Serial.println(mapB);
analogWrite(R,mapR);
analogWrite(G,mapG);
analogWrite(B,mapB);
delay(500);
}
Laboratorio 12
// Inclumos la librera para poder controlar el servo
#include <Servo.h>

// Declaramos la variable para controlar el servo


Servo servoMotor;

void setup() {
// Iniciamos el monitor serie para mostrar el resultado
Serial.begin(9600);

// Iniciamos el servo para que empiece a trabajar con el pin 9


servoMotor.attach(9);
}

void loop() {

// Desplazamos a la posicin 0
servoMotor.write(0);
// Esperamos 1 segundo
delay(1000);

// Desplazamos a la posicin 90
servoMotor.write(90);
// Esperamos 1 segundo
delay(1000);

// Desplazamos a la posicin 180


servoMotor.write(180);
// Esperamos 1 segundo
delay(1000);
}
// Inclumos la librera para poder controlar el servo
#include <Servo.h>

// Declaramos la variable para controlar el servo


Servo servoMotor;

void setup() {
// Iniciamos el monitor serie para mostrar el resultado
Serial.begin(9600);

// Iniciamos el servo para que empiece a trabajar con el pin 9


servoMotor.attach(9);

// Inicializamos al ngulo 0 el servomotor


servoMotor.write(0);
}

void loop() {

// Vamos a tener dos bucles uno para mover en sentido positivo y otro en
sentido negativo
// Para el sentido positivo
for (int i = 0; i <= 180; i++)
{
// Desplazamos al ngulo correspondiente
servoMotor.write(i);
// Hacemos una pausa de 25ms
delay(25);
}

// Para el sentido negativo


for (int i = 179; i > 0; i--)
{
// Desplazamos al ngulo correspondiente
servoMotor.write(i);
// Hacemos una pausa de 25ms
delay(25);
}
}
Laboratorio 12

#include <Servo.h>

Servo servo1; // Crea un Objeto servo


int posicion; // Variable de la posicion del servo

void setup()
{
servo1.attach(2); // Selecionamos el pin 2 como el pin
de control para el servo
}
void loop()
{

posicion = 150; // Establecemos el valor de la posicion a 150


posicion = map(posicion, 0, 1023, 0, 179); // Establecemos la relacion entre los grados de giro y el PWM
/* Con el mapa de valores anterior establecemos una relacin proporcional */
/* entre el pulso minimo 0 con el grado minimo, 0 tambien y el pulso maximo*/
/* 1023 con el grado maximo, 179*/
servo1.write(posicion); // Escribimos la posicion con el mapa de valores al servo
delay(150); // Y le damos un tiempo para que sea capaz de moverse
}
Laboratorio 13
int IN3 = 5;
int IN4 = 4;

void setup()
{
pinMode (IN4, OUTPUT); // Input4 conectada al pin 4
pinMode (IN3, OUTPUT); // Input3 conectada al pin 5
}
void loop()
{
// Motor gira en un sentido
digitalWrite (IN4, HIGH);
digitalWrite (IN3, LOW);
delay(4000);
// Motor no gira
digitalWrite (IN4, LOW);
delay(500);
// Motor gira en sentido inverso
digitalWrite (IN3, HIGH);
delay(4000);
// Motor no gira
digitalWrite (IN3, LOW);
delay(5000);
}
const int control = 9 ;

void setup()
{ pinMode(control, OUTPUT) ;
Serial.begin(9600);
}

void loop()
{
int n = analogRead(A1)/ 4; // Las lecturas analogicas van
hasta 1024 y no hasta 255
Serial.println(n);
analogWrite (control, n) ;
delay(200) ;
}

También podría gustarte