Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SALIDAS DIGITALES
pinMode(pin,OUTPUT);
void loop()
{
digitalWrite(LED,1); // 1= HIGH
delay(300); // espera 500 ms
digitalWrite(LED,0); // 0= LOW
delay(300); // espera 500 ms
}
1
Practicas Arduino
Solución 1:
Int tiempo=200; // var tipo entero =
200
void setup() void loop()
{ {
pinMode(5,OUTPUT); secuencia();
pinMode(6,OUTPUT); }
pinMode(7,OUTPUT);
pinMode(8,OUTPUT); Solución 3:
} int leds[]={5,6,7,8}; // var tipo lista de
valores
void loop() int tiempo=200;
{ int n=0;
digitalWrite(5,HIGH);
delay(tiempo); void setup()
digitalWrite(5,LOW); {
delay(tiempo); for (n=0;n<4;n++)
digitalWrite(6,HIGH); {
delay(tiempo); pinMode (leds[n], OUTPUT);
digitalWrite(6,LOW); }
delay(tiempo); }
digitalWrite(7,HIGH); void secuencia()
delay(tiempo); {
digitalWrite(7,LOW); for (n=0;n<4;n++) {
delay(tiempo); digitalWrite (leds[n], HIGH);
digitalWrite(8,HIGH); delay (tiempo);
delay(tiempo); digitalWrite (leds[n], LOW);
digitalWrite(8,LOW); delay (tiempo);
delay(tiempo); }
} }
void loop()
Solución 2: {
int tiempo=200; secuencia();
int n; }
void setup()
{
for (n=5;n<9;n++)
{
pinMode (n, OUTPUT);
}
}
void secuencia() // función
{
for (n=5;n<9;n++)
{
digitalWrite (n, HIGH);
delay (tiempo);
digitalWrite (n, LOW);
delay (tiempo);
}
}
2
Practicas Arduino
Sol1: delay(tiempo);
digitalWrite (leds[n],LOW);
int n=0; delay(tiempo*2);
int tiempo=50; }
void setup()
{
for (n=5;n<12;n++)
{ for (n=6;n>=0;n--)
pinMode(n,OUTPUT); {
} digitalWrite (leds[n],HIGH);
} delay(tiempo);
void loop() { digitalWrite(leds[n-1],HIGH);
for (n=5;n<12;n++) delay(tiempo);
{ digitalWrite (leds[n],LOW);
digitalWrite (n,HIGH); delay(tiempo*2);
delay(tiempo); }
digitalWrite (n,LOW); }
delay(tiempo);
}
for (n=11;n>=5;n--)
{ Practica 5: Contadores
digitalWrite (n,HIGH);
delay(tiempo); Emular un contador binario de 4
digitalWrite (n,LOW); bits con salida por los pines 0
delay(tiempo); - 3
}
} int dato[] = {0,1, 2,3};
void setup()
Sol 2: Con otro efecto visual {
int i;
int leds[]={5,6,7,8,9,10,11}; // listas de for(i=0; i<4 ;i++)
valores pinMode(dato[i], OUTPUT);
(array) }
int n=0; void loop()
int tiempo=30; {
void setup() int i, j;
{ for(i=0; i<16; i++)
for (n=0;n<7;n++) {
{ for(j=0; j<4; j++)
pinMode(leds[n],OUTPUT); {
} if((I >> j)& 1)
} digitalWrite(dato[j],HIGH);
void loop() else
{ digitalWrite(dato[j],LOW);
for (n=0;n<7;n++) }
{ delay(500);
digitalWrite (leds[n],HIGH); }
delay(tiempo); }
digitalWrite(leds[n+1],HIGH);
3
Practicas Arduino
Entradas Digitales
digitalRead(buttonPin)
int estado = 0;
int salida = 0;
void setup()
{
pinMode(8, INPUT); // pin entrada
pinMode(3, OUTPUT); // Pin del Led
}
void loop()
{
4
Practicas Arduino
estado=digitalRead(2)
if (estado) == HIGH)
{
digitalWrite(3, HIGH); // Se enciende el LED:
}
else
{
digitalWrite(3, LOW); // Se apaga el LED:
}
}
int estado = 0;
int salida = 0;
void setup()
{
pinMode(8, INPUT); // pin entrada
pinMode(3, OUTPUT); // Pin del Led
}
void loop()
{
estado=digitalRead(8)
if (estado) == HIGH) // si está presionado
{
salida=1- salida; // memoriza el dato
delay(20); //anti rebote
}
If (salida==1)
{
digitalWrite(3, HIGH); // Se enciende el LED
}
else
{
digitalWrite(3, LOW); // Se apaga el LED:
}
}
int LED = 4;
int boton = 5;
int boton2 = 6;
int x=0;
void setup()
{
pinMode(LED,OUTPUT);
pinMode(boton,INPUT);
pinMode(boton2,INPUT);
5
Practicas Arduino
if(digitalRead(boton2)==1)
{
x=0; //Se asigna un valor a la variable x
}
6
Practicas Arduino
a) c)
00000001 00000001
00000010 00000011
00000100 00000111
. .
. .
10000000 11111111
b) d)
00011000 00001111
00111100 11110000
01111110 .
11111111 .
void setup() {
pinMode(A0, INPUT); // pin de entrada
for(int i=2;i<=9;i++){ // pines de salida
pinMode(i, OUTPUT);
}
}
void loop() {
if (digitalRead(A0)==HIGH){ //Al presionar el pulsador
saltar++; // Cambia de secuencia
if (saltar >3){ //Solo hay 4 secuencias 0,1,2 y 3 al ser 3 . .
saltar=0; // Vuelve a secuencia 0
}
while (digitalRead(A0)==HIGH){ } // Mientras se pulsa no haga nada mas
}
7
Practicas Arduino
void secuencia1(){
for (int i=2; i<=9; i++){ //Pin 2 al 9
digitalWrite(i, HIGH); // Prenda pin actual
digitalWrite(i-1,LOW); // Apage el Anterior
delay(50); // retardo
}
for (int i=9; i>=2; i--){ //Al contrario de la
digitalWrite(i, LOW); // anterior secuencia va de 9 a 2
digitalWrite(i-1,HIGH);
delay(50);
}
}
void secuencia2(){
int k=11; // inicializo una variable auxiliar K
for(int i=6; i<=9;i++){ //leo de 6 a 9
digitalWrite(i, HIGH); // prendo pin actual
digitalWrite(k-i, HIGH); // prendo pin de la diferencia 11-6 = 5
delay(50); //retardo
}
for(int i=9; i>=2;i--){ // Al contrario de lo anterior
digitalWrite(i, LOW);
digitalWrite(k-i, LOW);
delay(50);
}
}
void secuencia3(){
for(int i=2; i<=9; i++){
digitalWrite(i,HIGH);
delay(50);
}
for(int i=9; i>=2;i--){
digitalWrite(i,LOW);
delay(50);
8
Practicas Arduino
}
}
void secuencia4(){
int k=11;
for(int i=2; i<=5;i++){
digitalWrite(i,HIGH);
digitalWrite(k-i,LOW);
}
delay(150);
for(int i=2; i<=5;i++){
digitalWrite(i,LOW);
digitalWrite(k-i,HIGH);
}
delay(150);
}
Operaciones lógicas
int pin_INa = 6; //
int pin_INb = 7; //
int LEDXOR = 8;
int LEDOR = 9;
int LEDAND = 10;
void setup() {
pinMode(pin_INa, INPUT); //pin como entrada
pinMode(pin_INb, INPUT); //pin como entrada
pinMode(LEDXOR, OUTPUT); //pin como salida
pinMode(LEDOR, OUTPUT); //pin como salida
pinMode(LEDAND, OUTPUT); //pin como salida
}
void loop() {
INa = digitalRead(pin_INa);
INb = digitalRead(pin_INb);
9
Practicas Arduino
Monitor Serial
Para iniciar la comunicación serial con Arduino utilizando el Monitor Serial debemos
establecer algunos comandos. Antes de nada, debemos configurar
void setup( ) {
Serial.begin(9600); //se especifica los baudios, normalmente 9600
}
dentro del void loop() podemos utilizar las siguientes funciones:
10
Practicas Arduino
(RX y TX), por lo tanto no debemos utilizarlos como entradas o salidas para
nuestro
circuito.
a) void setup()
{
Serial.begin(9600);
}
void loop()
{
Serial.println(" HOLA MUNDO ");
}
b) void setup()
{
Serial.begin(9600);
}
void loop()
{
Serial.println(‘65’);
delay(1000);
}
11
Practicas Arduino
void setup()
{
Serial.begin(9600); //Comunicacion Serial arduino
pinMode(4,INPUT); //Se define el pin 4 como entrada
}
void loop()
{
if(digitalRead(4)==1) // si es presionado el pulsador
{
conta=conta+1;
delay(200); // para que cuando se presione el pulsador este no incremente
de mas
}
if(digitalRead(4)==0) //Cuando el botón es soltado mantiene el valor de la
variable
conta=conta;
Serial.println(conta,DEC); //Impresion de la variable en el monitor de arduino
delay(300);
}
PRACTICA: Hacer que Arduino reciba datos seriales del PC y los interprete. Dichos
datos los enviaremos a través del monitor serial utilizando el teclado de nuestra
computadora.
int datoinput;
void setup(){
Serial.begin(9600);
}
void loop(){
if (Serial.available()>0) //
{
datoinput=Serial.read();
// datoinput=datoinput-48;
Serial.println(datoinput);
}
}
12
Practicas Arduino
Utilizar el Monitor Serial para alterar o estado de los LEDs. Enviando a letra:
“R” (rojo) se activa el LED Rojo,
“G” (verde) se activa el el LED Verde
“Y”(amarillo) se activa el LED Amarillo.
char lectura;
#define ledRojo 8
#define ledVerde 9
#define ledAmarillo 10
void setup() {
Serial.begin(9600);
pinMode(ledRojo , OUTPUT);
pinMode(ledVerde, OUTPUT);
pinMode(ledAmarillo,OUTPUT);
digitalWrite (ledRojo, LOW);
digitalWrite (ledVerde, LOW);
digitalWrite ( ledAmarillo, LOW);
}
void loop() {
while (Serial.available() > 0) { //Verifica si háy algun dato en el puerto serial
lectura = Serial.read(); //Lee el dato y almacena
E/S Analógicas
Función analogRead(pin)
Lee el valor de voltaje en el pin analógico especificado por la variable pin (A0 a A5) y
dependiente del voltaje, devuelve un número entero entre 0 y 1023, siendo éste
último el valor que se le asigna a un voltaje de 5[V].
13
Practicas Arduino
Permite generar un voltaje en los pines digitales marcadas como PWM (3, 5, 6, 9, 10 y
11).
Un valor 255 genera un voltaje de 5[V] y una valor 0, genera 0[V]
14
Practicas Arduino
int R, V, A ;
void setup() {
serial.begin(9600);
pinMode(ledR, OUTPUT); // Declara el pin del LED como de salida
pinMode(ledV, OUTPUT);
pinMode(ledA, OUTPUT);
}
void loop() {
analogWrite(ledR, R);
analogWrite(ledV, V);
analogWrite(ledA, A);
serial.print(“Rojo :”);
serial.print(R);
serial.println(“ , “);
serial.print(“Verde :”);
serial.print(V);
serial.println(“ , “);
serial.print(“Azul :”);
serial.print(A);
serial.println(“ , “);
delay(500):
}
15
Practicas Arduino
Cada puerto es controlado por tres registros, los cuales también están definidos como
variables en el lenguaje del Arduino.
Ej: DDRX
1 = OUTPUT 0 = INPUT
Esta manera es más segura ya que configura los pines del 2 al 7 como salidas sin
cambiar los pines 0 y 1, que como mencionamos son RX y TX.
Ej: PORTX
1 =HIGH 0 = LOW
16
Practicas Arduino
Practica: Encender los leds del PORTD, durante dos segundos todos los leds
enciendan, durante dos segundos más se enciendan los impares, luego de dos más
todos se apaguen.
void setup(){
DDRD= B11111100; //Utilizamos D porque es del 0 al 7 y B porque es Binario.
/*Esta instrucción es lo mismo que hacer esto:
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT); */
}
void loop(){
for (int contador=0; contador <3; contador ++){ // 3 casos.
switch(contador){
case 0:
PORTD= B11111111;//aquí encenderemos todos los leds
delay(2000);
case 1:
PORTD= B10101010;//aquí encenderemos solo los impares.
delay(2000);
case 2:
PORTD= B00000000;//aquí los apagaremos todos.
delay(2000);
}
}
}
void setup()
{
DDRD=255; //se declara todo el puerto como salida
}
void loop()
{
for(int x=0;x<=15;x++) // contador ascendente
{
PORTD=x;
delay(500);
}
17
Practicas Arduino
Display 7 segmentos
abc defg (g menos significativo, cátodo común)
000 0000
void setup()
{
DDRD=255; //se declara todo el puerto como salida
}
void loop()
{
PORTD=0x7E; //0
delay(1000);
PORTD=0x30; //1
delay(1000);
PORTD=0x6D; //2
delay(1000);
PORTD=0x79; //3
delay(1000);
PORTD=0x33; //4
delay(1000);
PORTD=0x5B; //5
delay(1000);
PORTD=0x5F; //6
delay(1000);
PORTD=0x70; //7
delay(1000);
18
Practicas Arduino
PORTD=0x7F; //8
delay(1000);
PORTD=0x7B; //9
delay(1000);
}
19