0% encontró este documento útil (0 votos)
99 vistas

30 Ejemplo S Arduino Proteus

Cargado por

pepecr
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
99 vistas

30 Ejemplo S Arduino Proteus

Cargado por

pepecr
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 21

http://luisdlahuerta.blogspot.

com/2015/07/30-ejemplos-
practicos-con-arduino-nivel.html

30 Ejemplos prácticos con arduino nivel básico, simulados


en proteus+codigo en c y arduino
Hola de nuevo
traigo unas prácticas con arduino de nivel básico para los que se quieran
iniciar en este campo.
todo va simulado en Proteus con su código en c, los archivos .pde de los
sketchs y un video demostrando el funcionamiento de cada ejemplo.
Sin más empezamos

Ejercicio 1 Blink

/*
* Intermitente
*
* Ejemplo básico con Arduino. Encendido y apagado de un led
* con una cadencia de 1 sg. usando el PIN 13 como salida
* no es necesario usar una resistencia para el led
* la salida 13 de Arduino la lleva incorporada.
*
* http://www.arduino.cc/en/Tutorial/Blink
*/
//Práctica de Luisdlahuerta
int ledPin = 13; // Definición de la salida en el PIN 13
void setup() //Configuración
{
pinMode(ledPin, OUTPUT); // designa la salida digital al PIN 13
}
void loop() // bucle de funcionamiento
{
digitalWrite(ledPin, HIGH); // activa el LED
delay(1000); // espera 1 seg. (tiempo encendido)
digitalWrite(ledPin, LOW); // desactiva el LED
delay(1000); // espera 1 seg. (tiempo apagado)
}

Simulación en proteus y código en c pinchando aqui

Ejercicio 2 Blink con Botón

//blink con botón


//Práctica de Luisdlahuerta
int ledPin=13; // elijo el pin13 para el led
int inPin=5; // elijo el pin d5 para entrada del botón
int val=0; //declaro la variable para leer el estado del botón

void setup() {
pinMode(ledPin,OUTPUT); //declaro el led como salida
pinMode(inPin,INPUT); //declaro el pin del boton como entrada
}

void loop() {
val=digitalRead(inPin); //Lee el valor de entrada del botón
if(val==HIGH){ //Chequea si el valor leido en el botón es
//alto "1"(boton presionado)
digitalWrite(ledPin,LOW); //pone el led en off
}else{
digitalWrite(ledPin,LOW); //apaga el led
delay(100); //retardo 100ms
digitalWrite(ledPin,HIGH);//enciende el led
delay(100); //retardo 100ms
}
}

Simulación en proteus y código en c pinchando aqui

Ejercicio 3 Encendido y apagado de 3 leds

//Encendido y apagado de 3 led


//Práctica de Luisdlahuerta
int ledPin1=6; //Defino las salidas de los leds
int ledPin2=7;
int ledPin3=8;
void setup() { //configuro las salidas para los leds
pinMode(ledPin1,OUTPUT); //definidos como salidas
pinMode(ledPin2,OUTPUT);
pinMode(ledPin3,OUTPUT);
digitalWrite(ledPin1,LOW);//Apago los leds
digitalWrite(ledPin2,LOW);
digitalWrite(ledPin3,LOW);
}

void loop() { //Bucle de funcionamiento


digitalWrite(ledPin1,HIGH);//Enciende y apago los leds cada 100ms
delay(100);
digitalWrite(ledPin1,LOW);
delay(100);
digitalWrite(ledPin2,HIGH);//Enciende y apago los leds cada 100ms
delay(100);
digitalWrite(ledPin2,LOW);
delay(100);
digitalWrite(ledPin3,HIGH);//Enciende y apago los leds cada 100ms
delay(100);
digitalWrite(ledPin3,LOW);
delay(100);
}
Simulación en proteus y código en c pinchando aqui

Ejercicio 4 Lectura del estado de un botón

//Lectura del estado de un botón


// detecta si el boton se esta pulsando o no y enciende un led
//Práctica de Luisdlahuerta
int ledPin=13; //Pin del led
int inPin=10; //Pin del boton
int value=0; //establezco el valor del pulsador en cero

void setup() {
pinMode(ledPin,OUTPUT); //establezco el pin del led como salida
pinMode(inPin,INPUT); //establezco el pin del boton como entrada digital
}

void loop() {
value = digitalRead(inPin); //lee el valor del botón en la entrada digital
digitalWrite(ledPin, value);
}

Simulación en proteus y código en c pinchando aqui


Ejercicio 5 Lectura de la entrada analógica de un potenciometro

//potenciométro lectura de señal analógica


//enciende y apaga un LED conectado al pin digital #13;
// La cantidad de tiempo que el LED parpadeará depende del
//valor obtenido mediante analogRead(). En este caso al pin A0
//Práctica de Luisdlahuerta

int potPin=0; //Defino el pin A0 como entrada analógica para el


potenciómetro
int ledPin=13; //defino el pin D13 para el led indicador
int val=0; //variable para almacenar la lectura del potenciómetro

void setup() {
pinMode(ledPin,OUTPUT); //Declaro el led como salida
}
void loop() {
val=analogRead(potPin); //Lee el valor del potenciómetro
digitalWrite(ledPin,HIGH); //Enciende el led
delay(val); //Detiene el programa por un tiempo igual a la lectura
del potenciómetro
digitalWrite(ledPin,LOW); //Apaga el led
delay(val); //Detiene el programa por un tiempo igual a la lectura
del potenciómetro

Simulación en proteus y código en c pinchando aqui

Ejercicio 6 El coche fantástico 1


/*El coche fantástico 1
*/
//Práctica de Luisdlahuerta
int pin2 = 2; // PIN-es de los LED
int pin3 = 3;
int pin4 = 4;
int pin5 = 5;
int pin6 = 6;
int pin7 = 7;
int timer = 100; // Temporizador
void setup(){
pinMode(pin2, OUTPUT); // Configuración de los PIN-es como salida
pinMode(pin3, OUTPUT);
pinMode(pin4, OUTPUT);
pinMode(pin5, OUTPUT);
pinMode(pin6, OUTPUT);
pinMode(pin7, OUTPUT);
}
void loop() {
digitalWrite(pin2, HIGH); // Enciende y apaga secuencialmente LED-s
delay(timer);
digitalWrite(pin2, LOW);
delay(timer);
digitalWrite(pin3, HIGH);
delay(timer);
digitalWrite(pin3, LOW);
delay(timer);
digitalWrite(pin4, HIGH);
delay(timer);
digitalWrite(pin4, LOW);
delay(timer);
digitalWrite(pin5, HIGH);
delay(timer);
digitalWrite(pin5, LOW);
delay(timer);
digitalWrite(pin6, HIGH);
delay(timer);
digitalWrite(pin6, LOW);
delay(timer);
digitalWrite(pin7, HIGH);
delay(timer);
digitalWrite(pin7, LOW);
delay(timer);
digitalWrite(pin6, HIGH);
delay(timer);
digitalWrite(pin6, LOW);
delay(timer);
digitalWrite(pin5, HIGH);
delay(timer);
digitalWrite(pin5, LOW);
delay(timer);
digitalWrite(pin4, HIGH);
delay(timer);
digitalWrite(pin4, LOW);
delay(timer);
digitalWrite(pin3, HIGH);
delay(timer);
digitalWrite(pin3, LOW);
delay(timer);
}

Simulación en proteus y código en c pinchando aqui

Ejercicio 7 coche fantástico 2 con ciclo for

//el coche fantastico 2 reduciendo las lineas de codigo con un ciclo FOR
//Práctica de Luisdlahuerta
int pinArray[]={2,3,4,5,6,7}; //se define el array de pines, y ahorramos
codigo
int count=0; //variable contador
int timer=100; //temporizador con un valor de 100ms

void setup() {
for(count=0;count<6;count++){ //Sentencia For cuenta parriba
pinMode(pinArray[count],OUTPUT); //configuramos todos los pines de
los leds como salida
}
}

void loop() {
for(count=0;count<6;count++){ //recorrido de ida, cuenta parriba con
For
digitalWrite(pinArray[count],HIGH); //Ponemos los led en High, alto
delay(timer);
digitalWrite(pinArray[count],LOW); //Apagamos los leds
delay(timer);
}
for(count=5;count>=0;count--){ //recorrido de vuelta, pabajo los leds
con for
digitalWrite(pinArray[count],HIGH); //Encendemos los leds
delay(timer);
digitalWrite(pinArray[count],LOW); //Apagamos los leds
delay(timer);
}
}

Simulación en proteus y código en c pnchando aqui

Ejercicio 8 coche fantástico 3 efecto visual


//El coche fantástico 3

int pinArray[]={2,3,4,5,6,7}; //pines del array


int count=0; //Contador
int timer=30; //temporizador

void setup(){

for(count=0;count<6;count++){ //Incremeto
pinMode(pinArray[count],OUTPUT); //Configuramos todos los pines de
una vez
}
}

void loop(){ //bucle

for(count=0;count<5;count++){ //enciende los leds creando una estela


visual
digitalWrite(pinArray[count],HIGH);
delay(timer);
digitalWrite(pinArray[count+1],HIGH);
delay(timer);
digitalWrite(pinArray[count],LOW);
delay(timer*2);
}
for(count=5;count>0;count--){
digitalWrite(pinArray[count],HIGH);
delay(timer);
digitalWrite(pinArray[count-1],HIGH);
delay(timer);
digitalWrite(pinArray[count],LOW);
delay(timer*2);
}
}
Simulación en proteus y código en c pinchando aqui

Ejercicio 9 Estrella fugaz

//Estrella fugaz, variante del coche fantastico


//Práctica de Luisdlahuerta

int pinArray[]={2,3,4,5,6,7,8,9,10,11,12}; //declaracion de pines mediante


un array
int controlLed=13; //Led de control
int waitNextLed=100; //tiempo antes de encender el
siquiente led
//Número de les que permanecen encendidos antes de empezar a
apagarlos para formar la cola
int tailLength=4; //Numero de leds conectados(tamaño del
array)
int lineSize=11;

void setup(){
int i;
pinMode(controlLed,OUTPUT); //configuramos los pines como
salida digital
for(i=0;i<lineSize;i++){
pinMode(pinArray[i],OUTPUT);
}
}

void loop()
{ //bucle
int i;
int tailCounter = tailLength; //Se establece la longitud de la
cola en un contador
digitalWrite(controlLed, HIGH); //Se enciende el led de control
para indicar el incio del loop
for (i=0; i<lineSize; i++) //For de incremento
{
digitalWrite(pinArray[i], HIGH); //Se encienden
consecutivamente los leds
delay(waitNextLed); //esta variable de tiempo controla
la velocidad a la que se mueve la estrella
if (tailCounter == 0) //aqui cuidado!! puse ; sin querer y
no daba con la falla XD
{
digitalWrite(pinArray[i-tailLength],LOW); //Se apagan los leds en
funcion de la longitud de la cola
}
else
if (tailCounter > 0)
tailCounter--;
}
for (i=(lineSize-tailLength); i<lineSize; i++)
{
digitalWrite(pinArray[i],LOW); //se apagan los leds
delay(waitNextLed);
}
}

Simulación en proteus y código en c pinchando aqui

Ejercicio 10 Cuenta pulsador


//Contar las veces que se pulsa un botón
//el botón va a estar en el pin digital 7 y a la vez que contamos
//encendemos un led conectado al pin digital 13
//Práctica de Luisdlahuerta

int led=13;
int boton=7;
int valor=0;
int contador=0;
int estadoanteriorboton=0;

void setup(){
Serial.begin(9600); //configuración de los baudios de transmisión
para el puerto com
pinMode(led,OUTPUT); //inicializa como salida el pin digital 13 (led)
pinMode(boton,INPUT); //inicializa como entrada el pin digital 7
(boton)
}

void loop(){ //bucle


valor=digitalRead(boton); //lee el valor de la entrada digital del boton en
pin d7
digitalWrite(led,valor);
if(valor!=estadoanteriorboton){
if(valor==1){
contador++;
Serial.print(contador);
Serial.write(10);
Serial.write(13);
}
}
estadoanteriorboton=valor;
}
Simulación en proteus y código en c pinchando aqui

Ejercicio 11 Contador modificado

Código

/* Main.ino file generated by New Project wizard


*
* Created: Thu Sep 5 2013
* Processor: ATmega328P
* Compiler: Arduino AVR
*/

//Contador modificado
//Práctica de Luisdlahuerta
//es muy parecido al anterior sketch pero ahora al pulsar el boton
introducimos un "=" en el pin d7
//por lo tanto para que se encienda la salida del pin d13 hay que escribir en
ella un valor leido negado
//"!valor!

int led=13;
int boton=7;
int valor=0;
int contador=0;
int estadoanteriorboton=0;

void setup(){
Serial.begin(9600); //configuro la velocidad de los baudios
de transmisión
pinMode(led,OUTPUT); //inicializo como salida el pin digital
13
pinMode(boton,INPUT); //inicializo como entrada digital el
pin 7
digitalWrite(boton,HIGH); //habilito la resistencia interna pull-
up del pin d7
}
void loop(){
valor=digitalRead(boton); //leo el valor de la entrada d7, el
boton
digitalWrite(led,!valor); //Escribimos en la salida el valor leido
negado
if(valor!=estadoanteriorboton){
if(valor==1){
contador++;
Serial.print("Has pulsado ");
Serial.print(contador);
Serial.print(" Veces ");
Serial.write(10);
Serial.write(13);
}
}
estadoanteriorboton=valor;
}

Simulación en Proteus y código en c pinchando aqui


Ejercicio 12 Contador de cero a 10 con pulsador
Código

/* Main.ino file generated by New Project wizard


*
* Created: Thu Sep 5 2013
* Processor: ATmega328P
* Compiler: Arduino AVR
*/

//Contador de 0 a 10 ejercicio 12
//Práctica de Luisdlahuerta
//cuando el valor del contador llegue a 10 se pondrá en cero de nuevo

int led=13;
int boton=7;
int valor=0;
int contador=0;
int estadoanteriorboton=0;

void setup(){
Serial.begin(9600); //Configuro los baudios de transmision del
puerto com
pinMode(led,OUTPUT); //inicializa el pin 13 como salida digital
pinMode(boton,INPUT); //inicializa el pin 7 como entrada digital
}

void loop(){
valor=digitalRead(boton); //lee el valor del boton en pin d7
digitalWrite(led,valor);

if(valor!=estadoanteriorboton){
if(valor==1){
contador++;
Serial.print("Has pulsado ");
Serial.print(contador);
Serial.print(" veces");
Serial.write(10);
Serial.write(13);
if(contador==10){ //limito la cuenta a un valor de 10 para la
variable contador
contador=0;
}
}

}
estadoanteriorboton=valor;
}

Simulación en Proteus y código en c pinchando aqui


seguimos mañana que ya es tarde
Saludos

Publicado por Luis en 10:58


Enviar por correo electrónicoEscribe un blogCompartir con TwitterCompartir con
FacebookCompartir en Pinterest

16 comentarios:
1.

Unknown27 de marzo de 2016, 8:29

Muchas gracias Luis por los ejemplos subidos!


Estoy recién arrancando con Arduino.
Saludos!!
Responder
Respuestas
1.

Luis17 de abril de 2016, 16:53


Muchas gracias por tu comentario, me alegro que
disfrutes con arduino, es un entorno con muchas
posibilidades e infinidad de librerías.
Tengo mucho lio, de ahí mi tardanza en responder.
Saludos

2.

CyLDigitalLeón23 de marzo de 2022, 12:31

Me han gustado mucho los ejemplos subidos


Responder

2.

leandro27 de mayo de 2016, 14:44

muy bueno gracias amigo estos ejemplos son muy prácticos para
uno que recién esta aprendiendo en Arduino, así familiarizarse con
este entorno variado y complejo =)
Responder

3.

Luis27 de mayo de 2016, 15:00


Si, la verdad es que arduino y la electrónica digital mola mucho. Lo
complicado para mi es la programación, pero poco a poco lo voy
sacando.
Gracias por comentar. Saludos
Responder

4.

Unknown7 de octubre de 2016, 18:18

Tendrias un codigo de como hcrear o simular un calendario?


Responder

5.

Unknown4 de mayo de 2017, 17:28

SALIUDOS, ME GUSTARIA SABER SI PUEDO ACTIVAR UN


RELE, CON ALGUNA SEÑAL OTORGADA POR EL
COMPUTADOR ATRAVEZ DE USB. LA IDEA ES INCREMENTAR
UNAS LINEAS DE COMANDO EN UN PROGRAMA PARA QUE
ENVIE LA SEÑAL DIGITAL AL ARDUINO Y ESTE CIERRE UN
RELE.
Responder
Respuestas

1.

Unknown2 de septiembre de 2017, 17:39

hola,
te recomiendo que leas y aprendas antes de
preguntar ,saludos .
Responder

6.

Unknown2 de septiembre de 2017, 17:47

Hola ,
yo provengo de pic y ensamblador;
intento aprender cosas nuevas y he de decir que escribir tareas en
C,o sea lenguaje placa arduino o atmel procesador,lo encuentro mas
tedioso y con mas líneas de código que en ensamblador,
y por lo que leo por foros ,¿ como puede una persona montar un
robot, si ni siquiera sabe leer el código de colores de las
resistencias?.
saludos
Responder

7.

Luis3 de septiembre de 2017, 7:10


Realmente no es necesario saberse los códigos de colores de las
resistencias para saber programación en C, aunque lo suyo es tener
nociones básicas de electrónica, y saber lo que quieres hacer con tu
PIC, ATMEL,CYPRESS... o el micro que uses. Yo disfruto con mis
proyectos de electrónica y con las soluciones que consigo con ellos.
Saludos.
Responder

8.

Unknown17 de octubre de 2017, 23:42

Este comentario ha sido eliminado por el autor.


Responder

9.
Jamil19 de enero de 2018, 22:00

disculpa si vas a seguir subiendo los otros ejercicios gracias


Responder

10.

huevosct17 de abril de 2018, 17:35

muy buenas tus programaciones y funcionan,sabrias codificar un


pulsador para que encienda la estrella fugaz cuando pulsas??tienes
alguna programacion para teclado 4x4?? he visto algunas por
internet pero no me funcionan ninguna
Responder

11.

Unknown2 de septiembre de 2018, 16:43

Buenas amigo, soy un estudiante nivel bachillerato en el cual estudia


electronica y necesito un favor, podrias pasar el codigo de tocar
tonos desde puerto serial seria de mucha ayuda que tenga excelente
dia !
Responder

12.

CHAVALITO11 de enero de 2019, 8:56

Enhorabuena Luis, con ejemplos así es mas fácil comprender la


programación. Saludos
Responder

13.

Unknown21 de febrero de 2019, 0:12

Viva Willyrex
Responder

Entrada más recienteEntrada antiguaInicio


Suscribirse a: Enviar comentarios (Atom)
DATOS PERSONALES
Luis
Ver todo mi perfil
SEGUIDORES
ARCHIVO DEL BLOG
 ► 2017 (1)
 ▼ 2015 (10)
o ► octubre (4)
o ▼ julio (1)
 30 Ejemplos prácticos con arduino nivel básico, si...
o ► junio (4)
o ► mayo (1)

Tema Picture Window. Con la tecnología de

También podría gustarte