Está en la página 1de 7

Tercer proyecto:

Primera parte:

En este ya adjuntaremos circuito eléctrico y hardware que hay que diseñar.

Hoy utilizáremos los conceptos de PWM el cual está en la página 17 del apunte de forma mas
detallada.

Este concepto es la modulación por ancho de pulso, la cual se realiza con el siguiente comando

analogWrite(pin,valor);

pin: es la pata de salida donde queremos ejecutar el pwm. En nustra placa arduino las patas que
pueden ejecutar dicha secuencia son las patas 3,5,6,9,10,11.

Estas misma verán están acompañada de “~” que indican que pueden ejecutar comandos
analógicos.
Valor: este va desde 0 a 255. Donde 0 0% y 255 100%

También, utilizáremos el puerto serie, este esta mas detallado en el apunte en la pagina 19. este
es un puerto de comunicación del pc con la placa, este hay que prenderlo antes de iniciarlo, con el
siguiente comando.

Serial.begin (9600);

9600 es la velocidad de comunicacion de la placa con la pc, estas mismas siempre tienen que
coincidir.

El Puerto serie en el simulador esta en la lupa que esta abajo a la izquierda en la parte de codigo.

Y en nuestro programa arduino está en la parte superior a la derecha.

La forma mas común de leer nuestro puerto serie cuando queremos recibir un valor es de la
siguiente forma.

if(Serial.available()) // aquí revisa si ingreso algo por el puerto

data = Serial.parseInt(); // aquí guardamos el valor entero que leímos por el puerto.

Serial.end();

Serial.begin(9600); // cerramos y volvemos a abrir el puerto para eliminar residuos.

delay(200);

Para cada tipo de valor que vamos a usar un comando distinto.

Caracteres: Serial.Read();
Enteros : Serial.parseInt();

Reales: Serial.parseFloat();

Entonces lo que vamos a hacer es controlar nuestro pwm con el pulsador.

Primero lo vamos a hacer con un switch para hacerlo mas sencillo con el siguiente código.

int bd,estado,pulsador,motor;

void setup() {

pinMode(3,OUTPUT);

pinMode(5,INPUT);

bd=1;

estado=0;

pulsador=5;

motor =3;

void loop() {

if(digitalRead(pulsador)&& bd==1)

bd=0;

estado=(estado+1);

if(!digitalRead(pulsador) && bd==0)

bd=1;
}

if(estado>3 || estado<0)

estado=0;

switch (estado)

case 0:

analogWrite(motor,0);

break;

case 1:

analogWrite(motor,100);

break;

case 2:

analogWrite(motor,200);

break;

case 3:

analogWrite(motor,255);

break;

Como verán en el código, dependiendo las veces que pulsemos, vamos a ir teniendo distintas
velocidades, preceteadas que se van a ir dan en una forma ordenada creciente.
Ahora vamos a modificar un poco el hardware, y vamos a poner un puente H que lo vamos a
controlar con el pulsador para cambiarle el sentido de giro del motor, y la velocidad del motor la
vamos a controlar desde el puerto serie.

Lo que vamos a hacer, es con una función asignarles los valores desde el puerto serie a nuestro
pwm a través de una variable.

Y con el pulsador controlamos el relay, que es nuestro control de giro del motor.
int velocidad,data,bd,bd1;

void setup() {

pinMode(3,OUTPUT);

pinMode(13,OUTPUT);

pinMode(5,INPUT);

Serial.begin(9600);

int VELOCIDAD()

if(Serial.available())

data = Serial.parseInt();

Serial.end();

Serial.begin(9600);

delay(200);

return (data);

void loop() {

if(digitalRead(5)&& bd==1 && bd1==1)

bd=0;

bd1=0;

digitalWrite(13,HIGH);
}

if(!digitalRead(5) && bd1==0)

bd1=1;

if(digitalRead(5)&& bd==0 && bd1==1)

bd=1;

bd1=0;

digitalWrite(13,LOW);

velocidad = VELOCIDAD();

analogWrite(3,velocidad);

También podría gustarte