Mostrando entradas con la etiqueta Arduino. Mostrar todas las entradas
Mostrando entradas con la etiqueta Arduino. Mostrar todas las entradas

Estructura de un programa

Un programa de Arduino consta, básicamente, de 3 partes:

Encabezamiento: donde ponemos bloques de comentarios o líneas comentadas que no influyen en el código pero en las que ponemos información sobre el programa, la versión, el programador, etc. Esta parte no es indispensable pero sí muy recomendable, sobretodo si es un proyecto de cierto tamaño o si pensamos retomarlo más adelante. Para escribir un comentario se pone entre los símbolos /* ... */



O comentar una sola línea:





(NOTA: La IDE (Integrated Development Environment, entorno de desarrollo integrado) de ARDUINO no acepta tildes, por eso no aparecen los acentos en las palabras).

Aunque la parte más importante del encabezamiento es la de llamar a librerías para contar con comandos específicos, declarar variables globales o dar instrucciones al compilador.

Función setup(); es una parte del código que sólo se ejecuta una vez al comienzo del programa. Sirve para declarar pines como entradas o salidas, iniciar comunicaciones o dar instrucciones que sólo queramos que se ejecuten una vez.

Función loop(); es la parte del código que de ejecuta al terminar el setup() y se ejecutará una y otra vez mientras Arduino esté conectado. Se trata del cuerpo principal del programa, es en el loop() donde pondremos todo el código con las instrucciones necesarias para programar nuestros robots.


Fuente:



Simulador de ARDUINO online

Excelente simulador online para circuitos electrónicos y Arduino:
https://123d.circuits.io/

Hay que darse de alta de forma gratuita.





Controlar un servo desde Bluetooth

Propuesta de trabajo:
  • Controla el sentido de giro de un servomotor mediante conexión Bluetooth desde el móvil
Programa en App Inventor:


Programa para Arduino:


#include <Servo.h> // Carga la librería Servo.h que contiene métodos para trabajar con servos

Servo miservo;  // Crea un objeto servo para controlar el servomotor
int estado=0;    //variable para el bluetooth

void setup()
{
Serial.begin(38400);
miservo.attach(9); // asocia el servo al pin 9
}

void loop()
{
  if(Serial.available()>0){
 estado = Serial.read();
 }
 if (estado =='1'){
   miservo.write(0);
   delay(15);
  }
if(estado=='2'){
   miservo.write(90);
   delay(15);
  }
if(estado=='3'){
  miservo.write(180);
  delay(15);
  }
}






Controlar un servo con un potenciómetro

Propuesta de trabajo:
  • Controlar el sentido de giro de un servomotor con un potenciómetro

Programa para Arduino:


#include <Servo.h> // Carga la librería Servo.h que contiene métodos para trabajar con servos

Servo myservo;  // Crea un objeto servo para controlar el servomotor
int potpin = 0; // Pin analógico usado para conectar el potenciómetro
int val;        // variable para leer el valor del pin analógico

void setup()
{
myservo.attach(9); // asocia el servo al pin 9
}

void loop()
{
val = analogRead(potpin);  // lee el valor del potenciómetro (valor
                           //entre 0 y 1023)
val = map(val, 0, 1023, 0, 179);  // escala el valor para usarlo con el
                           //servo (valor entre 0 y 180)
myservo.write(val);        // fija la posición del servo de acuerdo
                           //al valor escalado
delay(15);                 // espera a que el servo se posicione
}



Fuente:


Encender un LED desde el móvil

Propuesta de trabajo:
  • Crea un montaje para encender un LED desde el móvil utilizando bluetooth










ATENCIÓN:
Antes de cargar el programa en la placa controladora, debe estar desconectado el módulo Bluetooth.


Conexión del módulo Bluetooth al ARDUINO. (Fuente: El profe García)

Programación en App Inventor:



Programa para Arduino:
NOTA: para el módulo bluetooth de BQ en void setup habría que poner Serial.begin(38400)
int led13=13;
int estado=0;

void setup(){
  Serial.begin(9600);
  pinMode(led13,OUTPUT);
}

void loop(){
 if(Serial.available()>0){
 estado = Serial.read();
 }
 if (estado =='1'){
   digitalWrite(led13,HIGH);
  }
if(estado=='2'){
   digitalWrite(led13,LOW);
  }
}  

Fuentes:

Melodía musical

Propuesta de trabajo:
  • Programa una escala musical en Arduino
  • Crea una melodía y prográmala en la placa Arduino
Materiales necesarios:
  • Placa Arduino
  • Zumbador
  • Cable de conexión USB
  • IDE de Arduino

Código del programa:
  1. Conecta el zumbador al PIN 13 de la placa Arduino
  2. Escribe el programa de la escala musical en la IDE de Arduino y cárgalo en la placa.
void setup()
{

}

void loop()
{
  tone(13,264,750);
  delay(1000);
  tone(13,297,750);
  delay(1000);
  tone(13,330,750);
  delay(1000);
  tone(13,352,750);
  delay(1000);
  tone(13,396,750);
  delay(1000);
  tone(13,440,750);
  delay(1000);
  tone(13,495,750);
  delay(1000);
  tone(13,528,750);
  delay(1000);
 }


Para ampliar:

Te habrás fijado que a cada nota le corresponde a una frecuencia en herzios (Hz), siendo la frecuencia doble la que corresponde a cada nota de la siguiente octava más aguda:

NOTAFrec (Hz)
do264
re297
mi330
fa352
sol396
la440
si495
DO528
RE594
MI660
FA704
SOL792
... ...


  • Diseña una melodía y prográmala en la placa Arduino
¿Te atreves?

Ejemplo:

Programa para la melodía Noche de Paz:

void setup()
{

}

void loop()
{
  tone(13,396,750);
  delay (750);
  tone(13,440,250);
  delay (250);
  tone(13,396,500);
  delay (500);
  tone(13,330,1000);
  delay(1000);
 
  tone(13,396,750);
  delay (750);
  tone(13,440,250);
  delay (250);
  tone(13,396,500);
  delay (500);
  tone(13,330,1000);
  delay(1000);
 
  tone(13,594,1000);
  delay (1000);
  tone(13,594,500);
  delay (500);
  tone(13,495,1000);
  delay (1000);
  tone(13,528,1000);
  delay (1000);
  tone(13,528,500);
  delay (500);
  tone(13,396,1000);
  delay (1000);
 
  tone(13,440,1000);
  delay (1000);
  tone(13,440,500);
  delay (500);
  tone(13,528,750);
  delay (750);
  tone(13,495,250);
  delay (250);
  tone(13,440,500);
  delay (500);
  tone(13,396,750);
  delay (750);
  tone(13,440,250);
  delay (250);
  tone(13,396,500);
  delay (500);
  tone(13,330,1000);
  delay(1000);
 
  tone(13,440,1000);
  delay (1000);
  tone(13,440,500);
  delay (500);
  tone(13,528,750);
  delay (750);
  tone(13,495,250);
  delay (250);
  tone(13,440,500);
  delay (500);
  tone(13,396,750);
  delay (750);
  tone(13,440,250);
  delay (250);
  tone(13,396,500);
  delay (500);
  tone(13,330,1000);
  delay(1000);
 
  tone(13,594,1000);
  delay (1000);
  tone(13,594,500);
  delay (500);
  tone(13,704,750);
  delay (750);
  tone(13,594,250);
  delay (250);
  tone(13,495,500);
  delay (500);
  tone(13,528,1000);
  delay (1000);
  tone(13,660,1000);
  delay(1000);
 
  tone(13,528,750);
  delay (750);
  tone(13,396,250);
  delay (250);
  tone(13,330,500);
  delay (500);
  tone(13,396,750);
  delay (750);
  tone(13,352,250);
  delay (250);
  tone(13,297,500);
  delay (500);
  tone(13,264,1000);
  delay (1000);
 
}










Semáforo peatonal

Propuesta de trabajo:
  • Diseña y construye un semáforo peatonal
Ejemplos:






Recursos:






Robot seguidor de línea

Propuesta de trabajo:
  • Construye y programa un robot seguidor de línea




Programa para Arduino:

      //ROBOT Seguidor de linea negra gruesa

#include <Servo.h>            //Carga la librera Servo.h que contiene metodos para trabajar con servos

Servo servoI;                 //Crea un objeto servoI (servo Izquierdo) para controlar el servomotor izquierdo
Servo servoD;                 //Crea el objeto servoD (servo Derecho) para controlar el servo derecho


void setup()
{
  pinMode(2, INPUT);       //define el PIN 2 como entrada
  pinMode(3, INPUT);       //define el PIN 3 como entrada
  servoI.attach(6);        //asocia al servo Izquierdo el PIN 6
  servoD.attach(9);        //asocia al servo Derecho el PIN 9
 
}

void loop()
{
                            //El Robot va a seguir la linea negra
                            //0: Negro
                            //1: Blanco
                            //Motor Izquierdo avanza en sentido Horario (0)
                            //Motor Derecho avanza en sentido AntiHorario (180)
                            //Motor parado (90)
 
    int SensorI=digitalRead(2);      //El Sensor Izquierdo lee el PIN 2
    int SensorD=digitalRead(3);      //El Sensor Derecho lee el PIN 3
 
    if((SensorI == 0)){            //Si el Sensor Izquierdo detecta Negro
      servoD.write(180);           //Motor Derecho avanza (sentido AntiHorario)
      delay(15);            //Retardo de 15 milisegundos para darle oportunidad a los servos a moverse
    }else {
      servoD.write(90);      //Motor Derecho parado
    delay(15);            //Retardo de 15 milisegundos para darle oportunidad a los servos a moverse
    }
 
    if((SensorD == 0)){            //Si el Sensor Derecho detecta Negro
      servoI.write(0);             //El Motor Izquierdo avanza (sentido Horario)
      delay(15);            //Retardo de 15 milisegundos para darle oportunidad a los servos a moverse
    }else {
      servoI.write(90);      //Motor Izquierdo parado
    delay(15);            //Retardo de 15 milisegundos para darle oportunidad a los servos a moverse
    }  
 
}


Recursos:

Test sobre ARDUINO

Resuelve el siguiente examen tipo test:


Test creado con ExamTime por Santi tecnoprofe

Práctica 8: Luces de colores variados

Se realizarán dos prácticas con el mismo circuito:

  1. Luz roja, verde y azul
  2. Arcoiris de luz


Materiales necesarios:
  • 1 tarjeta ARDUINO
  • 1 cable USB
  • 1 placa Protoboard
  • 1 led RGB
  • 3 resistencias de 470 ohmios
  • 5 cables de conexión

Esquema del circuito:



1) LUZ ROJA, VERDE Y AZUL:

Proyecto consistente en mostrar los colores rojo, verde y azul con un led RGB.

Código del programa:

int led1 = 11;
int led2 = 9;
int led3 = 10;
int i=0;

void setup(){
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
}

void loop(){
  analogWrite(led1,255);
  analogWrite(led2,255);
  analogWrite(led3,0);
  i=0;
  for(i=0; i<=255;i++){
    analogWrite(led3,i);
    analogWrite(led2,255-i);
    delay(10);
  }
  i=0;
  for(i=0; i<=255;i++){
    analogWrite(led2,i);
    analogWrite(led1,255-i);
    delay(10);
  }
  i=0;
  for(i=0; i<=255;i++){
    analogWrite(led2,255-i);
    analogWrite(led3,255-i);
    delay(10);
  }
  i=0;
  for(i=0; i<=255;i++){
    analogWrite(led3,i);
    delay(10);
  }
 }


2) ARCOIRIS DE LUZ:

Proyecto consistente en que el led RGB muestre toda la gama de colores que sus características le permitan.

Código del programa:

int led1 = 11;
int led2 = 9;
int led3 = 10;
int i=0;
void setup(){
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
}
void loop(){
  analogWrite(led1,255);
  analogWrite(led2,255);
  analogWrite(led3,0);
  i=0;
  for(i=0;i<=255;i++){
    analogWrite(led3, i);
    analogWrite(led2,255-i);
    delay(10);
  }
  i=0;
  for(i=0;i<=255;i++){
    analogWrite(led2, i);
    analogWrite(led1,255-i);
    delay(10);
  }
  i=0;
  for(i=0;i<=255;i++){
    analogWrite(led2,255-i);
    analogWrite(led3,255-i);
    delay(10);
  }
  i=0;
  for(i=0;i<=255;i++){
    analogWrite(led3,i);
    delay(10);
  }
  i=0;
  for(i=0;i<=255;i++){
    analogWrite(led2,i);
    analogWrite(led3,255-i);
    delay(10);
  }
  i=0;
  for(i=0;i<=255;i++){
    analogWrite(led1,i);
    analogWrite(led2,255-i);
    delay(10);
  }
  i=0;
  for(i=0;i<=255;i++){
    analogWrite(led2,i);
    delay(10);
  }
}

Fuente:

Práctica 7: Ventilador automático

Proyecto consistente en un motor que se activa ante la falta de luz.

Materiales necesarios:
  • 1 tarjeta ARDUINO
  • 1 cable USB
  • 1 placa Protoboard
  • 1 LDR
  • 2 resistencias de 1k ohmios
  • 1 diodo
  • 1 transistor
  • 1 motor
  • 1 hélice
  • 9 cables de conexión

Esquema del circuito:


Código del programa:

int sensorPin = A0;
int ledPin = 9;
int sensorValue = 0;

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

void loop(){
  sensorValue = analogRead(sensorPin);
  if (sensorValue>200){
    digitalWrite(ledPin, LOW);}
    else{
      digitalWrite(ledPin, HIGH);}
}


Fuente:

Práctica 6: Cadena de montaje

Proyecto consistente en un motor que realiza el movimiento de avance y pausa alterno de una cadena de montaje.

Materiales necesarios:
  • 1 tarjeta ARDUINO
  • 1 cable USB
  • 1 placa Protoboard
  • 1 motor
  • 1 resistencia de 1k ohmios
  • 1 diodo
  • 1 transistor
  • 7 cables de conexión

Esquema del circuito:





Código del programa:

int ledPin = 9;
int sensorValue = 0;

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

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


Fuente:

Práctica 5: Encendido nocturno

Proyecto consistente en una luz que se enciende ante la falta de luz natural.

Materiales necesarios:
  • 1 tarjeta ARDUINO
  • 1 cable USB
  • 1 placa Protoboard
  • 1 LED rojo
  • 1 resistencia de 220 ohmios
  • 1 resistencia de 1k ohmios
  • 1 LDR
  • 5 cables de conexión

Esquema del circuito:



Código del programa:

int sensorPin = A0;
int ledPin = 13;
int sensorValue = 0;

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

void loop(){
  sensorValue = analogRead(sensorPin);
  if(sensorValue>200){
    digitalWrite(ledPin, LOW);}
    else{
      digitalWrite(ledPin, HIGH);}
}


Fuente:

Práctica 4: Semáforo con pulsador

Proyecto de un semáforo de tres colores para vehículos que siempre está en verde a no ser que un peatón pulse un botón. En cuyo caso realiza el ciclo ambar-rojo para que el peatón pueda cruzar la calzada.

Materiales necesarios:
  • 1 tarjeta ARDUINO
  • 1 cable USB
  • 1 placa Protoboard
  • 1 LED rojo
  • 1 LED amarillo
  • 1 LED verde
  • 3 resistencias de 220 ohmios
  • 1 resistencia de 10k ohmios
  • 1 pulsador
  • 7 cables de conexión

Esquema del circuito:


Código del programa:

int ledR = 13;
int ledA = 9;
int ledV = 6;
int pulsador = 2;

void setup(){
  pinMode(ledR, OUTPUT);
  pinMode(ledV, OUTPUT);
  pinMode(ledA, OUTPUT);
  pinMode(pulsador, INPUT);
}

void loop(){
  digitalWrite(ledV, HIGH);    //semaforo verde
  if(digitalRead(pulsador)==HIGH) {   //lee pulsador
    digitalWrite(ledV, LOW);    //apaga luz verde
    digitalWrite(ledA, HIGH);   //enciende luz amarilla
    delay(1000);                 //espera 1 segundo
    digitalWrite(ledA, LOW);    //apaga luz amarilla
    digitalWrite(ledR, HIGH);   //enciende luz roja
    delay(4000);                //espera 4 segundos
    digitalWrite(ledR, LOW);     //apaga luz roja
}
}


Fuente:

Práctica 3: Semáforo con aviso a invidentes

Proyecto de un semáforo de tres colores para vehículos con una señal acústica cuando el semáforo está rojo para avisar a los peatones invidentes de que pueden cruzar la calzada.

Materiales necesarios:
  • 1 tarjeta ARDUINO
  • 1 cable USB
  • 1 placa Protoboard
  • 1 LED rojo
  • 1 LED amarillo
  • 1 LED verde
  • 4 resistencias de 220 ohmios
  • 1 zumbador piezoeléctrico
  • 1 transistor
  • 8 cables de conexión

Esquema del circuito:



Código del programa:

int ledR = 12;
int ledA = 9;
int ledV = 6;
int zumbador = 3;
void setup(){
  pinMode(ledR, OUTPUT);
  pinMode(ledA, OUTPUT);
  pinMode(ledV, OUTPUT);
  pinMode(zumbador, OUTPUT);
}
void loop(){
  digitalWrite(ledR, HIGH);       //Semaforo en rojo
  digitalWrite(zumbador, HIGH);   //Aviso a invidentes
  digitalWrite(ledA, LOW);
  digitalWrite(ledV, LOW);
  delay(4000);
  digitalWrite(ledR, LOW);       //Semaforo en verde
  digitalWrite(zumbador, LOW);   //Aviso a invidentes
  digitalWrite(ledA, LOW);
  digitalWrite(ledV, HIGH);
  delay(4000);
  digitalWrite(ledR, LOW);       //Semaforo en amarillo
  digitalWrite(zumbador, LOW);   //Aviso a invidentes
  digitalWrite(ledA, HIGH);
  digitalWrite(ledV, LOW);
  delay(800);
}


Fuente:

Práctica 2: Semáforo

Proyecto de un semáforo de tres colores para vehículos.

Materiales necesarios:
  • 1 tarjeta ARDUINO
  • 1 cable USB
  • 1 placa Protoboard
  • 1 LED rojo
  • 1 LED amarillo
  • 1 LED verde
  • 3 resistencias de 220 ohmios
  • 4 cables de conexión

Esquema del circuito:




Código del programa:

int ledR = 13;
int ledA = 9;
int ledV = 6;
void setup(){
  pinMode(ledR, OUTPUT);
  pinMode(ledA, OUTPUT);
  pinMode(ledV, OUTPUT);
}
void loop(){
  digitalWrite(ledR, HIGH);  //semaforo en rojo
  digitalWrite(ledA, LOW);
  digitalWrite(ledV, LOW);
  delay(4000);
  digitalWrite(ledR, LOW);  //semaforo en verde
  digitalWrite(ledA, LOW);
  digitalWrite(ledV, HIGH);
  delay(4000);
  digitalWrite(ledR, LOW);  //semaforo en amarillo
  digitalWrite(ledA, HIGH);
  digitalWrite(ledV, LOW);
  delay(800);
}


Fuente:

Práctica 1: Led intermitente

Esta sencilla práctica consiste en encender un LED que parpadea continuamente.

Materiales necesarios:

  • 1 tarjeta ARDUINO
  • 1 cable USB
  • 1 placa Protoboard
  • 1 LED
  • 1 resistencia de 220 ohmios
  • 2 cables de conexión

Esquema del circuito:




Código del programa:

int led = 13;

void setup(){
  pinMode(led, OUTPUT);      //se configura el pin 13 como salida
}

void loop(){
  digitalWrite(led, HIGH);      //se enciende el led
  delay(2000);                        // se espera dos segundos
  digitalWrite(led, LOW);      // se apaga el led
  delay(500);                         // se espera medio segundo
}


Fuente: