void setup() {
// initialize serial:
[Link](9600);
delay(5000);
[Link]("Hola!");
}
void loop() {
delay(500);
[Link]("Ha pasado ");
delay(500);
[Link]("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
[Link](9600); // Se inicia la comunicacion serial
delay(2000);
}
void loop() {
[Link]("El boton tiene valor ");
btn = digitalRead(8); // primero se "lee" el valor del boton
[Link](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() {
[Link](9600); // Se inicia la comuncacion serial
[Link]("Empezamos");
}
void loop() {
[Link]((int)indice);
[Link](tab);
[Link](":");
[Link](tab);
[Link](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);
[Link](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
[Link](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);
[Link](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
[Link](indice); // Se muestra el valor del indice en la serial para ver como cambia
[Link](" -> ");
[Link](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
[Link](9600);
delay(2000);
// Envia introduccion
[Link]("\nEjemplo funcion String()\n");
//Inicializacion directa
String str1 = "Inicializacion directa";
[Link](str1);
//Funcion String: String como input
String str2 = String("Inicializacion con String()");
[Link](str2);
//Funcion String: char como input
String str3 = String('a');
[Link](str3);
//Funcion String: int como input
String str4 = String(13);
[Link](str4);
//Concatenacion de Strings
String str5 = String(str3+" y "+str4);
[Link](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";
[Link](9600);
delay(2000);
[Link](frase);
[Link](frase2);
}
void loop(){
}
int contador = 0;
boolean condicion;
void setup() {
// Inicializa la comunicacion serial
[Link](9600);
delay(2000);
// Envia introduccion
[Link]("\n\nEjemplo if");
[Link]();
[Link]("Empezamos!");
}
void loop() {
[Link](contador);
condicion = contador++ == 10;
if (condicion) {
[Link]("Volvemos a empezar");
contador = 0;
}
delay(1000);
}
int contador = 0;
void setup() {
// Inicializa la comunicacion serial
[Link](9600);
// Envia introduccion
[Link]("\n\nEjemplo if");
[Link]();
[Link]("Empezamos!");
}
void loop() {
[Link](contador);
if (contador++ == 10) {
[Link]("Volvemos a empezar");
contador = 0;
}
delay(1000);
}
int contador = 0;
void setup() {
// Inicializa la comunicacion serial
[Link](9600);
// Envia introduccion
[Link]("\n\nEjemplo if");
[Link]();
[Link]("Empezamos!");
}
void loop() {
[Link](contador);
if (contador++ == 10) {
[Link]("Volvemos a empezar");
contador = 0;
}
else{
[Link]("Aumenta en uno");
}
delay(1000);
}
i nt mi_numero = 0;
void setup() {
// Inicializa la comunicacion serial
[Link](9600);
// Envia introduccion
[Link]("\n\nEjemplo while");
[Link]();
[Link]("Empezamos!");
}
void loop() {
while (mi_numero++ < 10) {
[Link](mi_numero);
delay(1000);
}
[Link]("Volvemos a empezar");
mi_numero = 0;
delay(1000);
}
nt mi_numero = 0;
void setup() {
// Inicializa la comunicacion serial
[Link](9600);
// Envia introduccion
[Link]("\n\nEjemplo while");
[Link]();
[Link]("Empezamos!");
}
void loop() {
while (mi_numero++ < 10) {
[Link](mi_numero);
delay(1000);
}
[Link]("Volvemos a empezar");
mi_numero = 0;
delay(1000);
}
Ejemplo de funciones
void setup() {
[Link](9600);
[Link]("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) {
[Link](2 * y);
}
else {
[Link](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);
[Link](9600);
delay(2000);
}
void loop() {
delay(2500);
[Link]("Han pasado ");
delay(2500);
[Link]("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() {
[Link](9600);
delay(1000);
}
void loop() {
lectura = analogRead(AnInput);
if (digitalRead(btn1) == LOW) {
//Imprime el valor digital
[Link](lectura);
}
else {
//Imprime el equivalente en voltaje
[Link](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() {
[Link](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);
}