Curso Arduino I Basico.

21

Transcript of Curso Arduino I Basico.

  • COMANDOS

    Y EJEMPLOS BSICOS.

  • Programacin: Estructura

    setup( ) Al inicio de un programa

    Inicia variables, configura los pins, libreras, ...etc.

    loop() Funcin principal del programa

    Bucle infinito

    Estructuras de control, operadores:

    if (comparador; si entonces) if else (comparador; si sino) for (bucle segn por contador) switch case (comparador mltiple) while (bucle por comparacin booleana) do while (bucle por comparacin booleana) breack (salida de bloque de cdigo) continue (continuacin de bloque de cdigo) return (devuelve valor de programa)

    If(SI condicional)

    if (condicin)

    {// hacer algo aqu.}

    Si la declaracin escrita dentro de los parntesis es verdadera (TRUE), elcdigo dentro de las llaves se ejecutar. Sino, el programa ignora dichocdigo.

    Ejemplo.if (x > 120)digitalWrite(LEDpin, HIGH);

  • If Else(SI condicional, "SINO de lo contrario)

    if (condicin){// accin A}

    else {// accin B}

    La sentencia ELSE procede de la siguiente forma, si la condicin de IFresulta FALSA, entonces se acciona lo declarado en la sentencia ELSE,caso contrario esquiva la sentencia ELSE

    Ejemplo.

    if (pinCincoInput < 500) {// ejecutar A}else {// ejecutar B}

    Switch/case(comparador mltiple)

    switch (var) {case: etiqueta:// sentenciasbreak;

    case: etiqueta:// sentenciasbreak;

    default:// sentencias

    La sentencia switch compara el valor de una variable con el valor especificado enetiqueta del case. Cuando coinciden con una etiqueta de case se ejecuta lassentencias escritas. Break sale de la sentencia switch.

  • Ejemploswitch (var) {

    case 1://hacer algo cuando sea igual a 1

    break;

    case 2://hacer algo cuando sea igual a 2

    break;

    default:// si nada coincide, ejecuta el "default// el "default" es opcional

    }

    For (Inicio; Condicin; Incremento)

    for (inicializacin; condicin; incremento) {

    //funcin;

    }

    La declaracin for es usada para repetir un bloque encerrado entre llaves.Un incremento de un contador es usado normalmente para aumentar yterminar con el bucle.

    Ejemplo

    for (int i=0; i

  • While (Ejecutar Mientras)

    While (expresin){// sentencia;

    }

    Los bucles while se ejecutan continuamente, hasta que la expresin dentro delparntesis (), pasa a ser falsa. El cdigo debe modificar la variable comprobada, oel bucle while nunca terminar.

    Ejemplo:

    var = 0;while(var < 200){// haz algo repetitivo 200 vecesvar++;}

    Do While (Ejecutar Mientras)

    do{// bloque de instrucciones

    } while (condicin);

    El bucle "'do'" trabaja de la misma manera que el bucle "'while'", con la excepcinde que la condicin se comprueba al final del bucle, por lo que este bucle seejecuta "siempre" al menos una vez.

    Ejemplo:

    do {

    delay(50);.x = readSensors();

    } while (x < 100);

  • Programacin: Variables

    Constantes propias HIGH | LOW INPUT | OUTPUT true | false Constantes Numricas

    Tipos de Datos Boolean (booleano) char (carcter) byte int (entero) unsigned int (entero sin signo) long (entero 32b) unsigned long (entero 32b sin signo) float (en coma flotante) double (en coma flotante de 32b) string (cadena de caracteres) Array (cadena) Void (vaco)

  • Funciones E/S digitales:

    1. pinMode(pin, modo);Configura el pin especificado para comportarse como una entrada o una salida.

    Ejemplo:int ledPin =13; //Nombramos ledPin al pin13void setup() {pinMode(ledPin, OUTPUT); // ledPin Output}

    2. digitalWrite(pin, estado);Escribe un valor HIGH o LOW hacia un pin digital.

    Ejemplo:void loop() {digitalWrite(ledPin, HIGH); // enciende el LED}

    Programacin: Funciones E/S

    3. Val=digitalRead(pin);Lee el valor de un pin digital especificado, HIGH o LOW

    Ejemploint ledPin=13;int inPin = 7;int val = 0; // variable donde se almacena el valor ledovoid loop() {val = digitalRead(inPin); // leer el pin de entrada digitalWrite(ledPin, val); // establece el LED alvalor del botn}

  • Funciones E/S analgicas y PWM:

    1. analogWrite(pin, valor);"Escribe un valor analgico (PWM)en un pin, con una resolucin de0 a 255.Ejemplo:

    int ledPin = 9; // LED conectado al pin digital 9int analogPin = 3;// potencimetro conectado al pin 3int val = 0; // variable en el que se almacena el dato ledo

    void loop() {val = analogRead(analogPin); // lee la tensin en el pinanalogWrite(ledPin, val / 4); // el valor ledo dividido por 4.

    }

    2. Val=analogRead(pin);

    Lee el valor de tensin en el pin analgico especificado, con resolucin de 10 bits. Estosignifica que convertir tensiones entre 0 y 5 voltios a un nmero entero entre 0 y 1023.Ejemplo:

    int ledPin = 9; // LED conectado al pin digital 9int analogPin = 3; // potencimetro conectado al pin 3int val = 0; // variable en el que se almacena el dato ledo

    void loop() {val = analogRead(analogPin);// lee la tensin en el pinanalogWrite(ledPin, val / 4); // el valor ledo dividido por 4.

    }

    Funcin espera:1. delay(ms);delay(1000); // 1 segundo2. micros(ms);micros(1000); // 1 milisegundo

  • Ejemplo 1 - Encendiendo un LED

    int led=2;

    void setup(){ // Funcin de configuracin

    pinMode(led, OUTPUT); // el pin 2 es Salida

    digitalWrite(led, LOW); // iniciamos con el LED Apagado(LOW)

    }

    void loop(){ // Funcin principal (LAZO infinito)

    digitalWrite(led, HIGH);

    delay(100); // retardo de 1000 milisegundo

    digitalWrite(led, LOW);

    delay(100); // retardo de 1000 milisegundo

    }

  • Ejemplo 2 - Encendido o del LED RGB

    int redPin = 11;

    int greenPin = 10;

    int bluePin = 9;

    void setup(){

    pinMode(redPin, OUTPUT);

    pinMode(greenPin, OUTPUT);

    pinMode(bluePin, OUTPUT);

    }

    void loop(){

    setColor(255, 0, 0); // reddelay(1000);setColor(0, 255, 0); // greendelay(1000);setColor(0, 0, 255); // bluedelay(1000);setColor(255, 255, 0); // yellowdelay(1000);setColor(80, 0, 80); // purpledelay(1000);setColor(0, 255, 255); // aquadelay(1000);setColor(0, 0, 0);delay(1000);

    }

    void setColor(int red, int green, int blue){

    analogWrite(redPin, red);

    analogWrite(greenPin, green);

    analogWrite(bluePin, blue);}

  • Ejemplo 3 Control del Display 7 segmentos

    int seg_a=6;

    int seg_b=7;

    int seg_c=8;

    int seg_d=9;

    int seg_e=10;

    int seg_f=11;

    int seg_g=12;

    int seg_dp=13;

    int hab_D1=4;

    int hab_D2=5;

    void setup(){

    pinMode(seg_a,OUTPUT);

    pinMode(seg_b,OUTPUT);

    pinMode(seg_c,OUTPUT);

    pinMode(seg_d,OUTPUT);

    pinMode(seg_e,OUTPUT);

    pinMode(seg_f,OUTPUT);

    pinMode(seg_g, OUTPUT);

    pinMode(seg_dp,OUTPUT);

    pinMode(hab_D1,OUTPUT);

    pinMode(hab_D2,OUTPUT);

    }

    void loop(){

    digitalWrite(hab_D1,HIGH);

    display(5); // funcin

    delay(10);

    digitalWrite(hab_D1,LOW);

    digitalWrite(hab_D2,HIGH);

    display(8);

    delay(10);

    digitalWrite(hab_D2,LOW);

    }

    void display(int numero){

    switch(numero){

    case 0:

    secuencia(1,1,1,1,1,1,0,0);break;

    case 1:

    secuencia(0,1,1,0,0,0,0,0);break;

    case 2:

    secuencia(1,1,0,1,1,0,1,0);break;

    case 3:

    secuencia(1,1,1,1,0,0,1,0);break;

    case 4:

    secuencia(0,1,1,0,0,1,1,0);break;

  • case 5:

    secuencia(1,0,1,1,0,1,1,0);break;

    case 6:

    secuencia(1,0,1,1,1,1,1,0);break;

    case 7:

    secuencia(1,1,1,0,0,0,0,0);break;

    case 8:

    secuencia(1,1,1,1,1,1,1,0);break;

    case 9:

    secuencia(1,1,1,0,0,1,1,0);break;

    default:

    secuencia(0,0,0,0,0,0,0,0);break;

    }

    }

    void secuencia(int a, int b, int c, int d, int e, int f, int g, int dp){

    digitalWrite(seg_a, a);

    digitalWrite(seg_b, b);

    digitalWrite(seg_c, c);

    digitalWrite(seg_d, d);

    digitalWrite(seg_e, e);

    digitalWrite(seg_f, f);

    digitalWrite(seg_g, g);

    digitalWrite(seg_dp, dp);

    }

  • Ejemplo 4: Control del LED mediante un pulsador

    int Pulsor=2;

    int Led=3;

    void setup(){

    pinMode(Led,OUTPUT);

    pinMode(Pulsor,INPUT);

    }

    void loop(){

    if(digitalRead(Pulsor)==1) {

    delay(50);

    digitalWrite(Led,HIGH);

    delay(2000);

    digitalWrite(Led,LOW);

    delay(2000);

    }

  • Ejemplo 5: Voltmetro Digital

    int potenciometro=A0;

    int muestra,i;

    int seg_a=6;

    int seg_b=7;

    int seg_c=8;

    int seg_d=9;

    int seg_e=10;

    int seg_f=11;

    int seg_g=12;

    int seg_dp=13;

    int hab_D1=4;

    int hab_D2=5;

    int decenas;

    int unidades;

    void setup(){

    pinMode(seg_a,OUTPUT);

    pinMode(seg_b,OUTPUT);

    pinMode(seg_c,OUTPUT);

    pinMode(seg_d,OUTPUT);

    pinMode(seg_e,OUTPUT);

    pinMode(seg_f,OUTPUT);

    pinMode(seg_g,OUTPUT);

    pinMode(seg_dp,OUTPUT);

    pinMode(hab_D1,OUTPUT);

    pinMode(hab_D2,OUTPUT);

    }

    void loop(){

    muestra=analogRead(potenciometro);

    muestra=muestra*5/102; // Para un rango0v-5v

    for(i=0;i

  • void display(int numero){

    switch(numero){

    case 0:

    secuencia(1,1,1,1,1,1,0,0);

    break;

    case 1:

    secuencia(0,1,1,0,0,0,0,0);

    break;

    case 2:

    secuencia(1,1,0,1,1,0,1,0);

    break;

    case 3:

    secuencia(1,1,1,1,0,0,1,0);

    break;

    case 4:

    secuencia(0,1,1,0,0,1,1,0);

    break;

    case 5:

    secuencia(1,0,1,1,0,1,1,0);

    break;

    case 6:

    secuencia(1,0,1,1,1,1,1,0);

    break;

    case 7:

    secuencia(1,1,1,0,0,0,0,0);

    break;

    case 8:

    secuencia(1,1,1,1,1,1,1,0);

    break;

    case 9:

    secuencia(1,1,1,0,0,1,1,0);

    break;

    default:

    secuencia(0,0,0,0,0,0,0,0);

    break;

    }

    }

    void secuencia(int a, int b, int c, int d, inte, int f, int g, int dp){

    digitalWrite(seg_a, a);

    digitalWrite(seg_b, b);

    digitalWrite(seg_c, c);

    digitalWrite(seg_d, d);

    digitalWrite(seg_e, e);

    digitalWrite(seg_f, f);

    digitalWrite(seg_g, g);

    digitalWrite(seg_dp, dp);

    }

  • Ejemplo 6: Termmetro Digital

    int sensor_temp=A1;

    int muestra;

    int i;

    int seg_a=6;

    int seg_b=7;

    int seg_c=8;

    int seg_d=9;

    int seg_e=10;

    int seg_f=11;

    int seg_g=12;

    int seg_dp=13;

    int hab_D1=4;

    int hab_D2=5;

    int decenas;

    int unidades;

    void setup(){

    pinMode(seg_a,OUTPUT);

    pinMode(seg_b,OUTPUT);

    pinMode(seg_c,OUTPUT);

    pinMode(seg_d,OUTPUT);

    pinMode(seg_e,OUTPUT);

    pinMode(seg_f,OUTPUT);

    pinMode(seg_g,OUTPUT);

    pinMode(seg_dp,OUTPUT);

    pinMode(hab_D1,OUTPUT);

    pinMode(hab_D2,OUTPUT);

    }

    void loop(){

    muestra=analogRead(sensor_temp);

    muestra=muestra/2;// Para un resolucin 10mv/1C

    for(i=0;i

  • secuencia(1,1,1,1,1,1,0,0);

    break;

    case 1:

    secuencia(0,1,1,0,0,0,0,0);

    break;

    case 2:

    secuencia(1,1,0,1,1,0,1,0);

    break;

    case 3:

    secuencia(1,1,1,1,0,0,1,0);

    break;

    case 4:

    secuencia(0,1,1,0,0,1,1,0);

    break;

    case 5:

    secuencia(1,0,1,1,0,1,1,0);

    break;

    case 6:

    secuencia(1,0,1,1,1,1,1,0);

    break;

    case 7:

    secuencia(1,1,1,0,0,0,0,0);

    break;

    case 8:

    secuencia(1,1,1,1,1,1,1,0);

    break;

    case 9:

    secuencia(1,1,1,0,0,1,1,0);

    break;

    default:

    secuencia(0,0,0,0,0,0,0,0);

    break;

    }

    }

    void secuencia(int a, int b, int c, int d,int e, int f,int g, int dp){

    digitalWrite(seg_a, a);

    digitalWrite(seg_b, b);

    digitalWrite(seg_c, c);

    digitalWrite(seg_d, d);

    digitalWrite(seg_e, e);

    digitalWrite(seg_f, f);

    digitalWrite(seg_g, g);

    digitalWrite(seg_dp, dp);

    }

  • Ejemplo 7: Luces secuenciales

    int led_1=2;

    int led_2=3;

    int led_3=4;

    int led_4=5;

    int led_5=6;

    int led_6=7;

    int pausa=500;

    void setup(){

    pinMode(led_1, OUTPUT);

    pinMode(led_2, OUTPUT);

    pinMode(led_3, OUTPUT);

    pinMode(led_4, OUTPUT);

    pinMode(led_5, OUTPUT);

    pinMode(led_6, OUTPUT);

    }

    void loop(){

    secuencia(0,0,0,0,0,1);

    delay(pausa);

    secuencia(0,0,0,0,1,1);

    delay(pausa);

    secuencia(0,0,0,1,1,1);

    delay(pausa);

    secuencia(0,0,1,1,1,1);

    delay(pausa);

    secuencia(0,1,1,1,1,1);

    delay(pausa);

    secuencia(1,1,1,1,1,1);

    delay(pausa);

    secuencia(0,0,0,0,0,0);

    delay(pausa);

    }

    void secuencia(int a, int b, int c, int d, int e, intf){

    digitalWrite(led_1, a);

    digitalWrite(led_2, b);

    digitalWrite(led_3, c);

    digitalWrite(led_4, d);

    digitalWrite(led_5, e);

    digitalWrite(led_6, f);

    }

  • Ejemplo 8: Contador 0-99

    int hab_D1=4;int hab_D2=5;int seg_a=6;int seg_b=7;int seg_c=8;int seg_d=9;int seg_e=10;int seg_f=11;int seg_g=12;int seg_dp=13;

    int numero,N,unidades,decenas;

    void setup(){

    for(int i=4;i

  • case 4:

    secuencia(0,1,1,0,0,1,1,0);

    break;

    case 5:

    secuencia(1,0,1,1,0,1,1,0);

    break;

    case 6:

    secuencia(1,0,1,1,1,1,1,0);

    break;

    case 7:

    secuencia(1,1,1,0,0,0,0,0);

    break;

    case 8:

    secuencia(1,1,1,1,1,1,1,0);

    break;

    case 9:

    secuencia(1,1,1,0,0,1,1,0);

    break;

    default:

    secuencia(0,0,0,0,0,0,0,0);

    break;

    }

    }

    void secuencia(int a, int b, int c, int d,int e, intf, int g, int dp){

    digitalWrite(seg_a, a);

    digitalWrite(seg_b, b);

    digitalWrite(seg_c, c);

    digitalWrite(seg_d, d);

    digitalWrite(seg_e, e);

    digitalWrite(seg_f, f);

    digitalWrite(seg_g, g);

    digitalWrite(seg_dp, dp);

    }