Sunteți pe pagina 1din 37

Robótica, Diseño e Impresión 3D y Programación

CEP Santander 2015 J. Andrés Echevarría Zuazo


Robótica, Diseño e Impresión 3D y Programación.
CEP Santander 2015 J. Andrés Echevarría Zuazo
Robótica, Diseño e Impresión 3D y Programación.
CEP Santander 2015 J. Andrés Echevarría Zuazo
Robótica, Diseño e Impresión 3D y Programación.
CEP Santander 2015 J. Andrés Echevarría Zuazo
Robótica, Diseño e Impresión 3D y Programación.
CEP Santander 2015 J. Andrés Echevarría Zuazo
Robótica, Diseño e Impresión 3D y Programación.
CEP Santander 2015 J. Andrés Echevarría Zuazo
Robótica, Diseño e Impresión 3D y Programación.
CEP Santander 2015 J. Andrés Echevarría Zuazo
Robótica, Diseño e Impresión 3D y Programación.
CEP Santander 2015 J. Andrés Echevarría Zuazo
Robótica, Diseño e Impresión 3D y Programación.
CEP Santander 2015 J. Andrés Echevarría Zuazo
Robótica, Diseño e Impresión 3D y Programación.
CEP Santander 2015 J. Andrés Echevarría Zuazo
Una función es un conjunto
de líneas de código que
realizan una tarea específica
y puede retornar un valor.

Las funciones pueden tomar


parámetros que modifiquen
su funcionamiento.

Cuando una función es


invocada se le pasa el control
a la misma, una vez que ésta
finalizó con su tarea el
control es devuelto al punto
desde el cual la función fue
llamada.
Robótica, Diseño e Impresión 3D y Programación.
CEP Santander 2015 J. Andrés Echevarría Zuazo
Robótica, Diseño e Impresión 3D y Programación.
CEP Santander 2015 J. Andrés Echevarría Zuazo
El programa de Arduino
se puede dividir en tres
partes principales:

La estructura,
Las variables (valores y
constantes) y

La funciones.

Robótica, Diseño e Impresión 3D y Programación.


CEP Santander 2015 J. Andrés Echevarría Zuazo
El programa de Arduino
se puede dividir en tres
partes principales:

La estructura,

Las variables
(valores y
constantes) y
La funciones.

Robótica, Diseño e Impresión 3D y Programación.


CEP Santander 2015 J. Andrés Echevarría Zuazo
El programa de Arduino
se puede dividir en tres
partes principales:

La estructura,

Las variables (valores y


constantes) y

La funciones.

Robótica, Diseño e Impresión 3D y Programación.


CEP Santander 2015 J. Andrés Echevarría Zuazo
Esquemas de conexionado

Robótica, Diseño e Impresión 3D y Programación.


CEP Santander 2015 J. Andrés Echevarría Zuazo
Código
int led = 13;

void setup() {

pinMode(led, OUTPUT);
}

void loop() {
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1000);
}

Robótica, Diseño e Impresión 3D y Programación.


CEP Santander 2015 J. Andrés Echevarría Zuazo
Ejercicio 1:
Realiza un semáforo
para coches.

Robótica, Diseño e Impresión 3D y Programación.


CEP Santander 2015 J. Andrés Echevarría Zuazo
Robótica, Diseño e Impresión 3D y Programación.
CEP Santander 2015 J. Andrés Echevarría Zuazo
Esquemas de conexionado

Robótica, Diseño e Impresión 3D y Programación.


CEP Santander 2015 J. Andrés Echevarría Zuazo
Conexionado correcto de un botón

Robótica, Diseño e Impresión 3D y Programación.


CEP Santander 2015 J. Andrés Echevarría Zuazo
//Constantes que no cambian:

const int buttonPin = 2; // Número del pin del botón


const int ledPin = 13; // Número del Pin del LED

// variables que cambian:


Código int buttonState = 0; // variable que lee el estado del botón

void setup() {
// inicia el LED como salida:
pinMode(ledPin, OUTPUT);
// inicia el botón coomo entrada:
pinMode(buttonPin, INPUT);
}

void loop(){
// lee el estado del valor del botón:
buttonState = digitalRead(buttonPin);

// chequea si el botón está presionado:


// si fuera así, el buttonState sería HIGH:
if (buttonState == HIGH) {
// Enciende el LED:
digitalWrite(ledPin, HIGH);
}
else {
// Apaga el LED:
digitalWrite(ledPin, LOW);
}
Robótica, Diseño e Impresión 3D y Programación. }
CEP Santander 2015 J. Andrés Echevarría Zuazo
Ejercicio 2:
Realiza un semáforo
para coches y peatones accionado
por un botón.

Robótica, Diseño e Impresión 3D y Programación.


CEP Santander 2015 J. Andrés Echevarría Zuazo
Esquemas de conexionado

Robótica, Diseño e Impresión 3D y Programación.


CEP Santander 2015 J. Andrés Echevarría Zuazo
int timer = 100; // Variable que fija el tiempo a 100 ms

void setup() {
Código // una función for para iniciar todos los pines como output (del pin 2 al 7):
for (int thisPin = 2; thisPin < 8; thisPin++) {
pinMode(thisPin, OUTPUT);
}
}

void loop() {
// loop desde el pin más bajo (2) hasta el más alto (7):
for (int thisPin = 2; thisPin < 8; thisPin++) {
// pone el pin en ON:
digitalWrite(thisPin, HIGH);
// espera el tiempo fijado en timer (100 ms):
delay(timer);
// pone el pin OFF:
digitalWrite(thisPin, LOW);
}

// loop desde el pin más alto (7) hasta el más bajo (2):
for (int thisPin = 7; thisPin >= 2; thisPin--) {
// pone el pin en ON:
digitalWrite(thisPin, HIGH);
// espera el tiempo fijado en timer (100 ms):
delay(timer);
// pone el pin en OFF:
digitalWrite(thisPin, LOW);
}
}
Robótica, Diseño e Impresión 3D y Programación.
CEP Santander 2015 J. Andrés Echevarría Zuazo
Esquemas de conexionado

Robótica, Diseño e Impresión 3D y Programación.


CEP Santander 2015 J. Andrés Echevarría Zuazo
Leer una entrada analógica en el puerto serie.

Código // El Setup corre cada vez que se inicia el programa.


void setup() {
// inicia el puerto serie a 9600 bits por segundo
Serial.begin(9600);
}
// El Loop se repite por siempre:
void loop() {
// lee la entrada en el pin analógico 0:
int sensorValue = analogRead(A0);
// imprime el valor que ha leido:
Serial.println(sensorValue);
delay(1); // este delay es para dar estabilidad al
programa.
}

Robótica, Diseño e Impresión 3D y Programación.


CEP Santander 2015 J. Andrés Echevarría Zuazo
Ejercicio 3:
Control de encendido automático de una lámpara en la oscuridad.

Robótica, Diseño e Impresión 3D y Programación.


CEP Santander 2015 J. Andrés Echevarría Zuazo
Esquemas de conexionado

Robótica, Diseño e Impresión 3D y Programación.


CEP Santander 2015 J. Andrés Echevarría Zuazo
int potenciometro = A0; // selecciona el pin analógico A0
de entrada para el potenciómetro
int ledPin = 13; // selecciona el pin 13 para el LED
int valorpotenciometro = 0; // variable para el valor que
Código proviene del potenciómetro

void setup() {
// declara el ledPin como OUTPUT:
pinMode(ledPin, OUTPUT);
}

void loop() {
// lee el valor del sensor:
valorpotenciometro = analogRead(potenciometro);
// cambio de ledPin ON:
digitalWrite(ledPin, HIGH);
// para el programa por un tiempo de <valorpotenciometro> ms:
delay(valorpotenciometro);
// cambio de ledPin a OFF:
digitalWrite(ledPin, LOW);
// para el programa por un tiempo de <valorpotenciometro> ms:
delay(valorpotenciometro);
}

Robótica, Diseño e Impresión 3D y Programación.


CEP Santander 2015 J. Andrés Echevarría Zuazo
Esquemas de conexionado

Robótica, Diseño e Impresión 3D y Programación.


CEP Santander 2015 J. Andrés Echevarría Zuazo
void setup() {
Código
}

void loop() {

// toca nota en el pin 9 por 200 ms:


tone(9, 440, 200);
delay(200);

tone(9, 494, 500);


delay(500);

tone(9, 523, 500);


delay(300);
}

Robótica, Diseño e Impresión 3D y Programación.


CEP Santander 2015 J. Andrés Echevarría Zuazo
Este ejemplo utiliza un altavoz piezoeléctrico para tocar melodías. Se envía una onda cuadrada de la frecuencia apropiada al
piezo , generando el tono correspondiente. El cálculo de los tonos se realiza con esta operación matemática :
timeHigh = period / 2 = 1 / (2 * toneFrequency)
donde los diferentes tonos se describen como en la tabla:

Piezoeléctricos tienen polaridad .


Generalmente tienen un color rojo ( positivo) y un negro (negativo).

int speakerPin = 9;

int length = 15; // el número de las notas


char notes[] = "ccggaagffeeddc "; // el espacio representa el resto
int beats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 };
int tempo = 300;

void playTone(int tone, int duration) {


for (long i = 0; i < duration * 1000L; i += tone * 2) {
digitalWrite(speakerPin, HIGH);
delayMicroseconds(tone);
digitalWrite(speakerPin, LOW);
delayMicroseconds(tone);
}
}

Robótica, Diseño e Impresión 3D y Programación.


CEP Santander 2015 J. Andrés Echevarría Zuazo
void playNote(char note, int duration) {
char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 };

// toca la nota correspondiente al nombre de la nota


for (int i = 0; i < 8; i++) {
if (names[i] == note) {
playTone(tones[i], duration);
}
}
}

void setup() {
pinMode(speakerPin, OUTPUT);
}

void loop() {
for (int i = 0; i < length; i++) {
if (notes[i] == ' ') {
delay(beats[i] * tempo); // rest
} else {
playNote(notes[i], beats[i] * tempo);
}

// pausa entre notas


delay(tempo / 2);
}
}

Robótica, Diseño e Impresión 3D y Programación.


CEP Santander 2015 J. Andrés Echevarría Zuazo
Esquemas de conexionado

Robótica, Diseño e Impresión 3D y Programación.


CEP Santander 2015 J. Andrés Echevarría Zuazo
#include<Servo.h>
Código
Servo miMotor;

void setup(){
miMotor.attach(9);
miMotor.write(0);
delay(800);
}

void loop(){
int i =map(analogRead (A0), 0, 1023, 0 , 179);
miMotor.write(i);
delay(15);
}

*Importante: utilizar la librería “servo”

Robótica, Diseño e Impresión 3D y Programación.


CEP Santander 2015 J. Andrés Echevarría Zuazo
#include<Servo.h>
Código
Servo miMotor;

void setup(){
miMotor.attach(9);
miMotor.write(0);
delay(800);
}

void loop(){
for(int i=0; i<180;i= i+10){
miMotor.write(i);
delay(500);
}
miMotor.write(0);
delay(1500);
}

*Importante: utilizar la librería “servo”

Robótica, Diseño e Impresión 3D y Programación.


CEP Santander 2015 J. Andrés Echevarría Zuazo

S-ar putea să vă placă și