Guía de programación

Nesta páxina recóllense as funcións máis comúns que se utilizan en arduino, como manual de consulta. Nas seguintes páxinas irán introducíndose as diversas funcións pouco a pouco mediante exemplos e exercicios.

Para coñecer máis tipos de variables e de funcións podes consultar a referencia de Arduíno.

Estrutura básica dun programa:

  • programa_led_parpadeanteDeclaración de variables e funcións:

No inicio definimos as constantes, variables e funcións que utilizaremos posteriormente no programa. Por exemplo, indicamos que temos un LED conectado ao pin 13 da placa arduino.

int led=13;

  • Configuración: setup() { … }

Aquí introducimos o código de configuración inicial. Execútase unha soa vez. Por exemplo aquí indicamos que o pin 13 é un pin de saída: pinMode(led, OUTPUT); Tamén podemos introducir código que só queiramos que se execute ao inicio do programa, unha soa vez.

  • Programa: loop() { … }

As instrucións contidas dentro da función loop execútanse indefinidamente, ata que se desconecte a placa arduino. Por exemplo, facemos que o led se acenda e se apague en determinados intervalos de tempo.

  • Comentarios:

Utilizamos /* */ para engadir un parágrafo con varias liñas
Utilizamos // … para engadir un comentario dunha liña

Variables

Unha variable é un dato que cambia o seu valor  coa execución do programa, mentres que unha constante permanece sempre co mesmo valor.

Tipo Descrición Exemplo
int É o tipo de variable por defecto. Almacena un valor enteiro variable de 16 bits no rango de -32768 a +32767
int brillo=0;
// Indica que a variable brillo toma un valor = 0. Durante a execución do programa este valor pode variar.
const int Valor enteiro constante
const int led=9;
// Indica que conectamos un LED no pin 9. O valor non varía durante a execución do programa.
boolean Valor booleano: Toma o valor verdadeiro (true) ou falso (false)
boolean acendido=true;
// Indica que a variable "acendido" é verdadeira.
char Carácter: Almacena un ASCII
char letra='a';
// Indica que a variable "letra" toma o valor "a"
String texto: Almacena unha cadea de caracteres
String texto="Ola mundo";
// Indica que a variable "texto" toma o valor "Ola mundo"
byte Almacena un número de 8 bits no rango de 0 a 255
byte C = 23;
// Indica que a variable C toma o valor 23
long Almacena un número de 32 bits no rango de -2.147.483.648 a 2.147.483.648
long Contador = -10000;
// Indica que o contador toma un valor de -10000
float Almacena un número decimal de 32 bits 
float pi = 3.1416;
// Indica que a variable pi ten un valor de 3,1416

 

Por simplificar, aquí usaremos int no canto de const int para definir as constantes. Por exemplo: int led=9;  para indicar que o led está conectado no pin 9.

Un array é un conxunto de variables. tipo nome[nº de variables]={valor1, …, valor n}

Exemplo: const int leds[4]={7,8,9,10} Crea o array “leds” con espazo para almacenar 4 números de tipo const int no cal almacena os valores 7,8,9 e 10.

Funcións

Funcións dixitais:

pinMode(pin,modo) Permite configurar un pin
pinMode (13,OUTPUT);
pinMode (pulsador,INPUT);
digitalRead(pin) Permite ler un pin dixital (0 ou 1)
int a = digitalRead (2);
// Define a variable "a" coa lectura 0 ou 1 do pin 2
digitalWrite(pin,estado) Permite escribir un pin dixital con 1 ou 0 (ou con HIGH e LOW)
digitalWrite (13,HIGH);
digitalWrite (13,LOW);

 

Funcións analóxicas:

analogRead(pin) Permite ler un valor analóxico de 0 a 1023
int a = analogRead (A0);
// Define a variable "a" coa lectura do valor do pin analóxico A0
analogWrite(pin,valorPWM) Permite escribir un valor analóxico de 0 a 255
analogWrite (9, 134);
// Asigna o valor 134 ao pin 9

 

Outras funcións:

delay(n); temporización en milésimas de segundo
delay(1000);    
// Agarda 500ms = 0,5s
delayMicroseconds(n); temporización en microsegundos
delayMicroseconds(100);  
//Agarda 100 μs = 0.0001s
var = millis(); Devolve o tempo en ms transcorrido desde o comezo do programa
tone(pin, frecuencia, duración); Xera un son da frecuencia desexada, sobre o pin indicado e  cunha duración que indiquemos
tone(6,12000,500); 
// Xera un ton de 12 KHZ durante 0.5s polo pin 2.
noTone(pin);  Finaliza o ton que estea soando polo pin indicado

 

Operadores

 Booleanos:  De comparación: Matemáticos:
 AND: &&  Igual a : ==   Diferente de: != Asignar: = Módulo: %
 OR: || Maior que: >   Menor que: <  Suma: +  Resta:
 NOT: ! Maior ou igual: >=  Menor ou igual: <=  Multiplicación: *  División: /

 

Operadores compostos
Operador Operación Exemplo Equivale a
++ Incrementa unha unidade n++  n=n+1
– – Decrementa unha unidade n- –  n=n-1
+= Suma n+=3 n=n+3
-= Resta n-=3 n=n-3
*= Produto n*=3 n=n*3
/= División n/=3 n=n/3

 

Estruturas de control

Son instrucións que nos permiten tomar decisións ou facer repeticións de acordo cuns parámetros.

if(condición) { proceso } (Se… )
if Cando se cumpre a condición establecida execútanse as funcións do proceso definido entre as chaves {…}. Cando non se cumpre a condición non se executan e o programe segue o seu curso.Exemplo: Se a entrada é menor que 500 execútase o proceso.

if (entrada < 500) {
   // Proceso
}
if(condición) { proceso 1 } else { proceso 2 } (Se … se non …)
if-else Neste caso definimos dous procesos, un para cando se cumpre a condición establecida, e outro para cando non se cumpre.Exemplo: Se a entrada é menor que 500 execútase o proceso 1, e se non execútase o proceso 2

if (entrada < 500) {
   // proceso1
}
else {
   // proceso2
}
switch() / case (Varios camiños )
fluxo_cond5 Permite elixir entre varios camiños para executar diferentes funcións ou grupos de funcións.Exemplo: Se a variable toma o valor 4 execútase o proceso 1, se toma o valor 5 execútase o proceso 2 e se non se cumpre ningunha das anteriores condicións (default) execútase o proceso 3.

switch(variable) {
   case 4:
      // proceso1
   break;
   case 5:
      // proceso2
   break;
   default:
      // proceso3
   break;
}
for(inicio,condición,modificador) { proceso }  (Por …)
Esta función permite realizar bucles, para que as funcións contidas entre os parénteses se executen un número determinado de veces.Exemplo: Executamos o proceso desde a=0 ata a=9. Cando a=10 non se cumpre a condición e sae do bucle.for(inicio,condición,modificador)
a++: incrementa 1

for( int a=0; a<10; a++) {
   // Proceso a repetir
}
while(condición) { proceso } (Mentres …)
 estrutura_mentresfacer2 Mentres se cumpra a condición establecida entre parénteses execútase o proceso encerrado baixo chaves. O bucle finaliza cando se deixa de cumprir a condición.

Exemplo1: Executamos un proceso mentres a sexa menor ou igual que b:

while(a<=b) {
   // proceso a repetir
   a = analogRead (A0);
}

Exemplo2: Executamos un proceso 200 veces

var = 0;
while(var < 200) {
   // acción a repetir
   var++;
}
break;
Serve para romper calquera bucle for(), while() ou do…while() aínda que non se cumpran as condicións establecidas.

 


Deixa un comentario