0% encontró este documento útil (0 votos)
136 vistas15 páginas

Programas Arduino

Los documentos presentan código Arduino para explicar diferentes conceptos de la programación como el uso de funciones, variables, condicionales, bucles, interrupciones, lectura analógica y digital, entre otros. Se muestran ejemplos prácticos de encendido y apagado de LEDs, lectura de botones y potenciómetros, visualización por monitor serie y más.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
136 vistas15 páginas

Programas Arduino

Los documentos presentan código Arduino para explicar diferentes conceptos de la programación como el uso de funciones, variables, condicionales, bucles, interrupciones, lectura analógica y digital, entre otros. Se muestran ejemplos prácticos de encendido y apagado de LEDs, lectura de botones y potenciómetros, visualización por monitor serie y más.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 15

void setup() {

// initialize serial:
Serial.begin(9600);
delay(5000);
Serial.println("Hola!");
}
void loop() {
delay(500);
Serial.print("Ha pasado ");
delay(500);
Serial.println("un segundo");
}

/*
El siguiente codigo muestra el uso de las funciones digitalRead(),
digitalWrite() y pinMode().
La experiencia consiste en un boton, que al ser apretado toma valor
HIGH y se enciende el LED.
Ademas, ahora se mostrara en la serial, el estado de los pines.
*/
int btn = 0; // valor leido del boton
void setup() {

// Asignacin de entradas y salidas


pinMode(8, INPUT); // el boton es la entrada
pinMode(11, OUTPUT); // el led es la salida
Serial.begin(9600); // Se inicia la comunicacion serial
delay(2000);
}
void loop() {
Serial.print("El boton tiene valor ");
btn = digitalRead(8); // primero se "lee" el valor del boton
Serial.println(btn); // se muestra el valor de btn en la serial
digitalWrite(11, btn); // luego se "escribe" en el pin de salida
delay(500); // se agrega un retardo
}

/*
Esta experiencia pretende mostrar el uso de variables tipo char
*/
char tab = 9;
char indice = 0;
void setup() {
Serial.begin(9600); // Se inicia la comuncacion serial
Serial.println("Empezamos");
}

void loop() {
Serial.print((int)indice);
Serial.print(tab);
Serial.print(":");
Serial.print(tab);
Serial.println(indice);
delay(500); // se agrega un retardo para facilitar la visualizacion en la serial
indice = indice + 1;
}

/*
Esta experiencia pretende mostrar el uso de variables. El tiempo de encendido/apagado
del led
se almacena en una variable, la cual puede ser cambiada por las entradas de los botones.
*/
// Variables globales
int btn1 = 8;
int btn2 = 7;
int ledpin = 11;
int tmpo = 500; // Iniciacion y asignacion de la variable del tiempo
int inc; // Iniciacion de la variable de incremento
int dec; // Iniciacion de la variable de decrecimiento
void setup() {
pinMode(ledpin, OUTPUT);

pinMode(btn1, INPUT);
pinMode(btn2, INPUT);
Serial.begin(9600);
delay(2000);
}
void loop() {
inc = digitalRead(btn1); // inc toma el valor del pin btn1
dec = digitalRead(btn2); // dec toma el valor del pin btn2
tmpo = tmpo + 50*inc - 50*dec; // El valor de tmpo se modifica
Serial.println(tmpo); // Se imprime el valor de tmpo
//Encendido y apagado del LED
digitalWrite(ledpin, HIGH);
delay(tmpo);
digitalWrite(ledpin, LOW);
delay(tmpo);
}
/*
*/
// Variables globales
int btn1 = 8;
int btn2 = 7;
int indice = 3; // Iniciacion y asignacion de la variable del indice
int inc; // Iniciacion de la variable de incremento
int dec; // Iniciacion de la variable de decrecimiento

char arreglo[] = {'a','b','c','d','e','f','g','h'}; // Arreglo del alfabeto


void setup() {
pinMode(btn1, INPUT);
pinMode(btn2, INPUT);
Serial.begin(9600);
delay(2000);
}
void loop() {
// Se leen los botones
inc = digitalRead(btn1);
dec = digitalRead(btn2);
indice = indice + inc - dec; // El valor de indice aumenta cuando se presiona
// el boton 1 y disminuye cuando se presiona el boton 2
Serial.print(indice); // Se muestra el valor del indice en la serial para ver como cambia
Serial.print(" -> ");
Serial.println(arreglo[indice]);// Se muestra el elemento del arreglo correspondiente al
indice
delay(500); // Un tiempo de espera para facilitar la visualizacion en la serial
}
/*
* Se debe notar que al aumentar el valor del indice, mas alla del numero de
* elementos que contiene el arreglo, en la serial se vera un valor incierto.
*/
void setup() {
// Inicializa comunicacion serial
Serial.begin(9600);
delay(2000);

// Envia introduccion
Serial.println("\nEjemplo funcion String()\n");
//Inicializacion directa
String str1 = "Inicializacion directa";
Serial.println(str1);
//Funcion String: String como input
String str2 = String("Inicializacion con String()");
Serial.println(str2);
//Funcion String: char como input
String str3 = String('a');
Serial.println(str3);
//Funcion String: int como input
String str4 = String(13);
Serial.println(str4);
//Concatenacion de Strings
String str5 = String(str3+" y "+str4);
Serial.println(str5);
}
void loop() {
}

void setup() {
char frase[] = {'E','s','t','a',' ','e','s',' ','u','n','a',' ','f','r','a','s','e','\0'};
String frase2 = "Esta es otra frase";
Serial.begin(9600);
delay(2000);
Serial.println(frase);
Serial.println(frase2);
}
void loop(){
}

int contador = 0;
boolean condicion;
void setup() {
// Inicializa la comunicacion serial
Serial.begin(9600);
delay(2000);
// Envia introduccion
Serial.println("\n\nEjemplo if");
Serial.println();
Serial.println("Empezamos!");
}
void loop() {
Serial.println(contador);

condicion = contador++ == 10;


if (condicion) {
Serial.println("Volvemos a empezar");
contador = 0;
}
delay(1000);
}

int contador = 0;
void setup() {
// Inicializa la comunicacion serial
Serial.begin(9600);
// Envia introduccion
Serial.println("\n\nEjemplo if");
Serial.println();
Serial.println("Empezamos!");
}
void loop() {
Serial.println(contador);
if (contador++ == 10) {
Serial.println("Volvemos a empezar");
contador = 0;
}
delay(1000);
}

int contador = 0;
void setup() {
// Inicializa la comunicacion serial
Serial.begin(9600);
// Envia introduccion
Serial.println("\n\nEjemplo if");
Serial.println();
Serial.println("Empezamos!");
}
void loop() {
Serial.println(contador);
if (contador++ == 10) {
Serial.println("Volvemos a empezar");
contador = 0;
}
else{
Serial.println("Aumenta en uno");
}
delay(1000);
}

i nt mi_numero = 0;
void setup() {
// Inicializa la comunicacion serial
Serial.begin(9600);
// Envia introduccion

Serial.println("\n\nEjemplo while");
Serial.println();
Serial.println("Empezamos!");
}
void loop() {
while (mi_numero++ < 10) {
Serial.println(mi_numero);
delay(1000);
}
Serial.println("Volvemos a empezar");
mi_numero = 0;
delay(1000);
}

nt mi_numero = 0;
void setup() {
// Inicializa la comunicacion serial
Serial.begin(9600);
// Envia introduccion
Serial.println("\n\nEjemplo while");
Serial.println();
Serial.println("Empezamos!");
}
void loop() {
while (mi_numero++ < 10) {
Serial.println(mi_numero);
delay(1000);

}
Serial.println("Volvemos a empezar");
mi_numero = 0;
delay(1000);
}

Ejemplo de funciones
void setup() {
Serial.begin(9600);
Serial.println("Empezamos!");
}
int a = -2;
int b = 3;
void loop() {
funcion_ejemplo(a++, b);
delay(1000);
}
void funcion_ejemplo(int x , int y) {
if (x > 0) {
Serial.println(2 * y);
}
else {
Serial.println(y);
}
}

Interrupciones

//Definimos el pin correspondinte al led

int ledPin = 11;


//Definimos el pin correspondiente a la interrupcion 0
int intPin = 2;
void setup()
{
//Configuramos los pines como salida
pinMode(2,OUTPUT);
pinMode(ledPin, OUTPUT);
digitalWrite(intPin, HIGH);
/*Configuramos la interrupcion 0 para activarse en el
flaco de bajada y ejecutar la funcion prende_led*/
attachInterrupt(0, prende_led, FALLING);
}
void loop()
{
digitalWrite(ledPin, LOW);
delay(500);
digitalWrite(intPin, LOW);
/* En este momento se activa la alerta, por lo que se
ejecuta la funcion prende_led */
delay(500);
}
void prende_led(){
digitalWrite(ledPin, HIGH);
digitalWrite(intPin, HIGH);
}

ISR

/*
* Esta experiencia muestra el uso de ISR. Consiste en que al presionar el boton, sin
importar en que momento se haga,
* el led cambiara su estado: si esta en su fase encendida, se apagara, y viceversa.
*/
int Btn0 = 2; // Pin ligado a int.0
int Btn1 = 3; // Pin ligado a int.1
int pinLed = 11;
void setup() {
pinMode(Btn0, INPUT);
pinMode(Btn1, INPUT);
pinMode(pinLed, OUTPUT);
attachInterrupt(0,apaga_led, RISING);
attachInterrupt(1,prende_led, RISING);
Serial.begin(9600);
delay(2000);
}
void loop() {
delay(2500);
Serial.print("Han pasado ");
delay(2500);
Serial.println("5 segundos");
}
/* La funcion de interrupcion cambia el estado actual del led */
void apaga_led() {
digitalWrite(pinLed, 0);
}

void prende_led() {
digitalWrite(pinLed, 1);
}

Ejemplo de potencimetro
/*
* Esta experiencia muestra el uso de la funcion analogRead(). Con esta funcion se mide el
voltaje de un divisor de tension
* entre un resistor y un potenciometro en serie. Luego, a traves de operaciones
matematicas, se muestra en la serial, el
* valor aproximado de la resistencia en la posicion del potenciometro.
*/
int btn1 = 2;
int AnInput = 0;
int lectura = 0;
void setup() {
Serial.begin(9600);
delay(1000);
}
void loop() {
lectura = analogRead(AnInput);
if (digitalRead(btn1) == LOW) {
//Imprime el valor digital
Serial.println(lectura);
}
else {
//Imprime el equivalente en voltaje
Serial.println(lectura * 0.0049);
}

delay(1000);
}

Mapea el valor ADC


/*
Esta experiencia muestra el uso de la funcion analogRead() y
analogWrite() para controlar la intensidad de un led con
un potenciometro.
*/
int AnInput = 0;
int ledPin = 11; //Este pin tiene PWM
int lectura = 0;
int aux = 0;
void setup() {
Serial.begin(9600);
delay(1000);
pinMode(11,OUTPUT);
}
void loop() {
lectura = analogRead(AnInput);
//Mapea el valor del ADC entre 0 y 255
aux = map(lectura, 0, 1023, 0, 255);
analogWrite(ledPin,aux);
}

También podría gustarte