Documente Academic
Documente Profesional
Documente Cultură
PROGRAMACION EN ARDUINO
PRINCIPIOS DE MECATRNICA
Que es un microcontrolador?
Para que sirve un microcontrolador?
2003
Crea
Hernando Barragn.
2005
Crea
Software Arduino
Parecido a C
Basado en Wiring
Desarrollado en Java
Pensado para novatos
Librerias que amaras
Elementos clave del lenguaje de
programacin
Estructura
Funciones
Sintaxis
Variables
Estructuras de control
Operadores de comparacin
Operadores booleanos
IF, WHILE, FOR
Operadores matemticos
Funciones especiales
//declaracion de variables globales
int k;
int Valor1;
long Valor2 = 564;
boolean sense = false;
byte valor3;
Estructuras de control
Que controlan?
Estructuras de control
Inicio Que controlan?
Dentro de
Declaraciones void loop(){
globales }
Instruccin 1
void setup(){
}
Instruccin 2
void loop(){
Instruccin 3
}
Estructuras de control
Inicio Que controlan?
Dentro de IF-ELSE
Declaraciones void loop(){
globales } Instruccin
1
Instruccin Instruccin
2 3
void loop(){
}
Instruccin
4
Estructuras de control
Inicio Que controlan?
Dentro de WHILE
Declaraciones void loop(){
globales } Instruccin
1
Verdadero
Instruccin
2
void loop(){
}
Instruccin
3
Operadores de comparacin
permiten determinar la relacin entre ciertos valores
tipo de retorno de los operadores de comparacin son de tipo
booleano true o false
Operadores booleanos
permiten establecer condiciones y comparaciones entre valores
booleanos (true y false)
normalmente se usan dentro de los condicionales de las estructuras
de control junto con los operadores de comparacin
Principales estructuras de control
if - evala una condicin dada y si esta se cumple (valor lgico true) se
ejecuta el cogido dentro del bucle.
if (CONDICIONAL) {
// Codigo que se ejecuta si se cumple la condicion
}
int Potenciometro = 0; // pin analogo al que se conecta el potenciometro
int Voltaje; // varaible en la que se almacena el volteje leido
int Luz = 12; //pin al que se conecta la luz a encender (LED, Bombilla...)
void setup(){
pinMode(Luz, OUTPUT); // define el pin como salida digital
}
void loop()
{
Voltaje = analogRead(Potenciometro); //lee el valor del potenciometro (0-1023)
Voltaje = map(Voltaje, 0, 1023, 0, 180); //escala en valor leido (valor entre 0 y 100)
}
Principales estructuras de control
if-else - evala una condicin y de cumplirse ejecuta un cdigo dado, pero
de no cumplirse ejecuta otro cdigo sin evaluar ms condicionales
if (CONDICIONAL){
// accin A
}
else
{
// accin B
}
int Potenciometro = 0; // pin analogo al que se conecta el potenciometro
int Voltaje; // varaible en la que se almacena el volteje leido
int Luz = 12; //pin al que se conecta la luz a encender (LED, Bombilla...)
void setup(){
pinMode(Luz, OUTPUT); // define el pin como salida digital
}
void loop() {
Voltaje = analogRead(Potenciometro); //lee el valor del potenciometro (0-1023)
Voltaje = map(Voltaje, 0, 1023, 0, 180); //escala el valor leido (valor entre 0 and 100)
if (Voltaje >= 90){ //evalua si el valor leido es mayor o igual a 90
digitalWrite(Luz, HIGH); //enciende la luz conectada al pin 12
}
else {
digitalWrite(Luz, LOW); //apaga la luz conectada al pin 12
}
}
Principales estructuras de control
if/else if/ else - evala una condicin y de cumplirse ejecuta un cdigo dado, pero
de no cumplirse evala otra condicin que de cumplirse ejecuta otro cdigo, si no
se cumple ejecuta otro cdigo sin evaluar ms condicionales
if (CONDICIONAL){
// accin A
}
Else if{
// accin B
}
else{
// accin C
}
Principales estructuras de control
while - si el condicional es verdadero, el cdigo interno se
ejecutara de manera continua hasta que el condicional se
haga falso
while(CONDICIONAL){
// Cdigo que se ejecutara de manera continua
}
Debe existir un variable que sea transformada dentro de while y evaluada en el condicional
//Declaracion de las variables donde se almacena los
pines
int Banda = 5;
int SensorCaja = 6;
int SensorJabon = 7;
int Motor = 8;
void setup() {
//Declaracion de el modo de cada pin
pinMode(Banda,OUTPUT);
pinMode(SensorCaja,INPUT);
pinMode(Motor,OUTPUT);
pinMode(SensorJabon,INPUT);
}
void loop() {
int conteo; //variable de conteo de jabones
boolean llenar; //varaible del sensor de cajas
boolean jabon; //variable para el sensor de jabon
digitalWrite(Banda,HIGH); //prender banda que mueve cajas
llenar = digitalRead(SensorCaja); //guardar lectura del sensor
if (llenar == HIGH){ // evaluar cuando hay caja en posicion
conteo = 0;
while(conteo<=5){
//este bucle se ejecutara hasta que se cuenten 5 jabones
digitalWrite(Banda,LOW); //apaga la banda
digitalWrite(Motor,HIGH); //prende el motor
jabon = digitalRead(SensorJabon);
if (jabon==HIGH){ // evalua cuando se detecta un jabon
conteo = conteo + 1; //suma un jabon al conteo
}
}
}
}
Principales estructuras de control
for - permite repetir un segmento de cdigo un nmero especfico
de veces. El cuerpo del for se ejecuta cero o ms veces hasta que un
condicional se hace falso
void setup() {
pinMode(3,OUTPUT); //Definicion de modo de pines
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
}
void loop() {
int pin; //declaracion
pin = 3; //asignar 3 como valor inicial
for (pin;pin < 8; pin++) { //variable pin aumenta en uno hasta llegar a 8
digitalWrite(pin,HIGH); //enciende desde el pin 3 al 7 segn el valor de pin
delay(1000); //espera un segundo
}
}
Operadores Matemticos
Operadores Aritmticos
Operadores Compuestos
Operadores trigonomtricos
Otros operadores
Operadores Matemticos
Operadores Aritmticos:
int Valor;
Valor = 1 + 2; // suma
Valor = 3 - 2; // resta
Valor = 3 * 2; // multiplicacion
Valor = 3 / 2; // division (el resultado es 1 porque se definio Valor como entero)
Operadores Matemticos
Operadores Aritmticos:
int value = 1 + 2 * 3 + 4;
Operadores Matemticos
Operadores Aritmticos:
int value = 1 + 2 * 3 + 4;
int value = 1 + (2 * 3) + 4;
Operadores Matemticos
Operadores Aritmticos:
y = y + 3;
x = x - y;
i = 2 * y - x * 6;
r = r / 5;
Operadores Matemticos
Operadores Compuestos:
x += y; // equivalente a la expresin x = x + y;
x -= y; // equivalente a la expresin x = x - y;
x *= y; // equivalente a la expresin x = x * y;
x /= y; // equivalente a la expresin x = x / y;
Operadores Matemticos
Operadores Compuestos:
Ejemplo:
int x;
x = 2;
x += 4; // x ahora es 6
x -= 3; // x ahora es 3
x *= 10; // x ahora es 30
x /= 2; // x ahora es 15
Operadores Matemticos
Operadores trigonomtricos
Arduino cuenta con los operadores trigonomtricos bases seno, coseno y
tangente:
contrain(x, a, b ) restringe un numero a estar entre un rango a: el limite inferior del rango a: si x es menor que a
void loop() {
//codigo que sera ejecutado ciclicamente
}
Funciones de lectura y escritura sobre los
pines digitales
void setup() {
pinMode(led, OUTPUT); // establece el pin 13 como pin de salida
}
'Just because you have nothing at all connected to an input pin doesn't
mean it is a logical zero.'
Resistencias PullUp y PullDown
PullUp Interna en Arduino
pinMode(2,INPUT_PULLUP);
void setup() {
Serial.begin(9600);
pinMode(2, INPUT_PULLUP);
pinMode(13, OUTPUT);
}
void loop() {
int sensorVal = digitalRead(2);
Serial.println(sensorVal);
if (sensorVal == HIGH) {
digitalWrite(13, LOW);
} else {
digitalWrite(13, HIGH);
}
}
Ejemplo con PullUp externo
Ejemplo con PullUp externo
Ejemplo con PullUp externo
const int buttonPin = 2;
const int ledPin = 13;
int buttonState = 0;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH);
}
else {
digitalWrite(ledPin, LOW);
}
}
Primera practica
1. Hacer que 5 leds prendan en secuencia (uno despus del otro en
orden) con un delay inicial de 1000 ms
2. Al presionar un pulsador la direccin de la secuencia debe cambiar
3. Con otro pulsador se debe hacer cambiar la velocidad de la
secuencia, aumentando el delay en 100 ms
4. Con un tercer pulsador se debe hacer cambiar la velocidad de la
secuencia, disminuyendo el delay en 100 ms