Professional Documents
Culture Documents
Estos laboratorios han sido diseados para que el interesado en ARDUINO, en el cual
pueda entender su programacin. En esta recopilacin encontraremos temas para
implementar y disear sus propios proyectos con ARDUINO, por lo tanto se explicarn
algunos conocimientos bsicos:
Tipos de placas Arduino
Arduino al ser un sistema de Hardware libre, permite a los diseadores hacer distintas
versiones de circuitos impresos, entre ellos estan:
Arduino UNO
Arduino Nano
PWM digital: Las encuentras en los pines digitales y estan identificados con el
simbolo ~ debajo del nmero de pin.
Laboratorios
Es recomendable que aparte que se hagan los laboratorios al pie de la letra, tambin
cambien de puertos de salida y entrada para poder adquidir la experiencia en el control
de puertos. Para saber que hacen los comandos, les recomiendo visitar la pgina de
Arduino: ARDUINO.
Para descargar el software de programacin de Arduino, haz click aqu: arduino-
0022.
Materiales:
1 Arduino UNO
3 resistencias 1 Kohms
Intrucciones utilizadas:
CDIGO FUENTE:
void setup() {
pinMode (2,OUTPUT); //Configura el pin 2 como salida
pinMode (3,OUTPUT);
pinMode (4,OUTPUT);
}
void loop() {
digitalWrite (2,HIGH); //Asigna un estado 1 lgico al pin 2
delay (4000); //Retardo de 4 segundos (4000 ms)
Materiales:
1 Arduino UNO
3 resistencias 1 Kohms
CDIGO FUENTE:
void setup() {
pinMode (2,OUTPUT);
pinMode (3,OUTPUT);
pinMode (4,OUTPUT);
digitalWrite(3,HIGH);
digitalWrite (4,HIGH);
digitalWrite (5,HIGH);
}
void loop() {
digitalWrite (2,LOW);
delay (4000);
digitalWrite (2,HIGH);
for (int cuenta = 0;cuenta <5;cuenta++)
{
digitalWrite (3,LOW);
delay (1000);
digitalWrite (3,HIGH);
delay (200);
}
digitalWrite (4,LOW);
delay (5000);
digitalWrite (4,HIGH);
}
LABORATORIO 2 - ADC: Realizar un programa en lenguaje C para el circuito
mostrado, el cual lea un valor analgico en uno de sus puertos recibido por el
potencimetro e indique con 3 leds si es un nivel de voltaje alto (verde), medio
(amarillo) o bajo(rojo) que recibe en su puerto.
Materiales:
1 Arduino UNO
3 resistencias 1 Kohms
1 potenciometro de 10 Kohms
CDIGO FUENTE:
int valor = 0;
void setup() {
pinMode (2,OUTPUT);
pinMode (3,OUTPUT);
pinMode (4,OUTPUT);
digitalWrite(3,HIGH);
digitalWrite (4,HIGH);
digitalWrite (5,HIGH);
}
void loop() {
valor = analogRead(A5); //Almacena en la variable "valor" la lectura anloga en el
ADC5
if (valor < 341)
{
digitalWrite (3,HIGH);
digitalWrite (4,HIGH);
digitalWrite (2,LOW);
}
if (valor > 340 && valor <683)
{
digitalWrite (2,HIGH);
digitalWrite (4,HIGH);
digitalWrite (3,LOW);
}
if (valor > 683)
{
digitalWrite (3,HIGH);
digitalWrite (2,HIGH);
digitalWrite (4,LOW);
}
}
LABORATORIO 3 - PWM: Realizar un programa en lenguaje C para el circuito
mostrado, el cual lea un valor analgico en uno de sus puertos recibido por el
potencimetro y atenue la intensidad lumnica de un led segn sea el valor recibido del
potencimetro.
Materiales:
1 Arduino UNO
1 resistencia 1 Kohms
1 potenciometro de 10 Kohms
1 LED rojo
Intrucciones utilizadas:
analogRead: se utiliza para leer los valores de las entradas analgicas del
Arduino (cabe resaltar que con pinMode tambien se pueden configurar los
puertos analgicos como salidas digitales).
analogWrite: utiliza salidas anlogas (se encuentran entre los pines digitales y se
identifican porque arriba del nmero tiene el simbolo: ~) para dar valore
analogos.
CDIGO FUENTE:
int valor,valor1;
void setup() {
pinMode (9,OUTPUT);
}
void loop() {
valor = analogRead(A5);
valor1 = map(valor,0,1023,0,254); //reasigna un valor de un rango a otro
analogWrite (9,valor1); //Envia un pulso PWM al pin
}
LABORATORIO 4 - switch tipo toggle: Realizar un programa en lenguaje C para el
circuito mostrado, el cual lea un valor lgico 1 y luego 0 por medio de un interruptor.
Materiales:
1 Arduino UNO
1 resistencia 1 Kohms
1 resistencia de 10 Kohms
1 switch pulsador
1 LED rojo
CDIGO FUENTE:
int estado=0,control=0,control1=2;
void setup() {
pinMode (4,OUTPUT);
pinMode (3,INPUT); //Configura al pin 3 como entrada
digitalWrite (4,HIGH);
}
void loop() {
estado = digitalRead (3);
if (estado == HIGH)
{
delay (200);
estado = digitalRead (3);
if (estado == LOW)
{
switch (control)
{
case 0: digitalWrite (4,HIGH); control = 1; break;
case 1: digitalWrite (4,LOW); control = 0; break;
}
}
}
}
LABORATORIO 4a - switch tipo toggle: Realizar un programa en lenguaje C para el
circuito mostrado, el cual lea un valor lgico 0 y luego 1 por medio de un interruptor.
Materiales:
1 Arduino UNO
1 resistencia 1 Kohms
1 resistencia de 10 Kohms
1 switch pulsador
1 LED rojo
CDIGO FUENTE:
int estado=0,control=0,control1=2;
void setup() {
pinMode (4,OUTPUT);
pinMode (3,INPUT);
digitalWrite (4,HIGH);
}
void loop() {
estado = digitalRead (3);
if (estado == LOW)
{
delay (200);
estado = digitalRead (3);
if (estado == HIGH)
{
switch (control)
{
case 0: digitalWrite (4,HIGH); control = 1; break;
case 1: digitalWrite (4,LOW); control = 0; break;
}
}
}
}
LABORATORIO 5 - temperatura: Realizar un programa en lenguaje C para el
circuito mostrado, el cual lea la temperatura medida por el DS18B20 y envie el valor de
la temperatura por medio de la comunicacin serial a la PC. Descarga la libreria "One
Wire" y copiala a la carpeta libraries en la carpeta de Arduino, descargalo aqu: One
Wire.
Materiales:
1 Arduino UNO
1 resistencia de 10 Kohms
1 DS18B20
CDIGO FUENTE:
#include <OneWire.h>
OneWire ds(4); // en que pin
int BMS, BLS, LecturaT, Signo, Tc_100, Temp, decimas;
void setup(void) {
Serial.begin(9600); //inicia comunicacin serial con PC
}
void loop(void) {
byte i;
byte present = 0;
byte data[12];
byte addr[8];
ds.reset();
ds.select(addr);
ds.write(0x44,1);
delay(1000);
present = ds.reset();
ds.select(addr);
ds.write(0xBE);
for ( i = 0; i < 9; i++) {
data[i] = ds.read();
}
BLS = data[0];
BMS = data[1];
LecturaT = (BMS << 8) + BLS;
Signo = LecturaT & 0x8000;
if (Signo)
{
LecturaT = (LecturaT ^ 0xffff) + 1;
}
Tc_100 = (6 * LecturaT) + LecturaT / 4;
Temp = Tc_100 / 100;
decimas = Tc_100 % 100;
Serial.print("valor: ");
if (Signo)
{
Serial.print("-");
}
Serial.print(Temp);
Serial.print(".");
if (decimas < 10)
{
Serial.print("0");
}
Serial.print(decimas);
Serial.print("\n");
}
LABORATORIO 6 - servomotor: Realizar un programa en lenguaje C para el circuito
mostrado, el cual haga que un servomotor gire media vuelta y luego regrese al origen, el
ciclo debe ser infinito.
Materiales:
1 Arduino UNO
1 servomotor
CDIGO FUENTE:
#include <Servo.h> //Libreria servomotor, se puede tener hasta 9 servomotores
funcionando
Servo servomotor; //Nombrar (en este caso se llama "servomotor") a cada uno de los
servos
int pos = 0;
void setup()
{
servomotor.attach(12); //en que pin esta el servo
}
void loop()
{
for(pos = 0; pos < 180; pos += 5)
{
servomotor.write(pos); //Envia pulso para mover servo
delay(20);
}
for(pos = 180; pos>=0; pos-=5)
{
servomotor.write(pos);
delay(20);
}
}
Materiales:
1 Arduino UNO
1 potenciometro 10 Kohm
1 servomotor
CDIGO FUENTE:
#include <Servo.h>
Servo servomotor;
int analogo = 4;
int valor;
void setup()
{
servomotor.attach(12);
}
void loop()
{
valor = analogRead(analogo);
valor = map(valor, 0, 1023, 0, 179);
servomotor.write(valor);
delay(20);
}
LABORATORIO 7 - sonidos morse: Realizar un programa en lenguaje C para el
circuito mostrado, el cual haga piezo sounder produzca un sonido semejante al cdigo
morse. Utilizando los dos circuitos mostrados.
Circuito 1:
Circuito 2:
Materiales:
1 Arduino UNO
1 resistencia de 1 Kohms
1 2N2222
1 diodo 1N4004
1 piezo buzzer
CDIGO FUENTE:
int repite;
void setup() {
pinMode(8, OUTPUT);
}
void loop() {
buzz(8, 2500, 500);
delay(1000);
}
void buzz(int Pinsalida, long frecuencia, long tiempo) {
long retardo = 1000000/frecuencia/2;
long ciclos = frecuencia* tiempo/ 1000;
for (repite=0; repite<4;repite++)
{
for (long i=0; i < ciclos; i++){
digitalWrite(Pinsalida,HIGH);
delayMicroseconds(retardo); //Retardo en microsegundos
digitalWrite(Pinsalida,LOW);
delayMicroseconds(retardo-100);
}
delay (100);
}
delay (800);
}
LABORATORIO 8 - sensor Hall: Realizar un programa en lenguaje C para el circuito
mostrado, el cual detecte un campo magntico por medio de un sensor de efecto Hall
(A3144), apague el LED.
Materiales:
1 Arduino UNO
1 resistencia 1Kohm
1 LED rojo
CDIGO FUENTE:
int puerto;
void setup() {
pinMode (2,INPUT);
pinMode (12,OUTPUT);
}
void loop() {
puerto = digitalRead (2);
if (puerto == HIGH)
{
digitalWrite (12,HIGH);
}
if (puerto == LOW)
{
digitalWrite (12,LOW);
}
}
Materiales:
1 Arduino UNO
3 interruptores
3 resistencia 10Kohm
3 resistencia 1Kohm
1 24LC256
Intrucciones utilizadas:
Wire.h: librera para el protocolo I2C, define los comandos para lectura y
escritura en dispositivos que se puedan comunicar por I2C.
CDIGO FUENTE:
#include <Wire.h>
#define eeprom 0x50 //Direccin de la memoria 24LC256
int estado1, estado2, estado3, busqueda;
int luz = LOW;
byte valormem = 0xFF;
delay (300);
valormem = 0;
}
}
}
}
}
void writeEEPROM(int deviceaddress, unsigned int eeaddress, word data ) {
Wire.beginTransmission(deviceaddress);
Wire.write((int)(eeaddress >> 8)); // MSB
Wire.write((int)(eeaddress & 0xFF)); // LSB
Wire.write(data);
Wire.endTransmission();
delay(5);
}
LABORATORIO 11 - interrupciones: Realizar un programa en lenguaje C para el
circuito mostrado, el cual interrumpa el parpadeo de un LED utilizando una interrupcin
en el pin INT 0 (PIN DIGITAL 2).
Materiales:
1 Arduino UNO
1 interruptor
1 resistencia 4.7Kohm
1 resistencia 1Kohm
1 555
2 capacitores de 0.1uF
1 LED
Intrucciones utilizadas:
CDIGO FUENTE:
int estado=LOW;
void setup() {
pinMode (2,INPUT);
pinMode (12,OUTPUT);
pinMode (13,OUTPUT);
attachInterrupt(0,inversion,FALLING);
}
void loop() {
digitalWrite(13, HIGH);
delay(300);
digitalWrite(13, LOW);
delay(300);
}
void inversion()
{
estado = !estado;
digitalWrite(12,estado);
}