0% encontró este documento útil (0 votos)
51 vistas60 páginas

Programacion Arduino

khbhjbkjbkjn
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 PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
51 vistas60 páginas

Programacion Arduino

khbhjbkjbkjn
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 PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 60

PROCESOS CON ARDUINO

void setup() //Configuracion de Pines


{//Configuracion de Entradas Digitales
pinMode(0,INPUT);pinMode(1,INPUT);
pinMode(2,INPUT);pinMode(3,INPUT);
//Configuracion de Salidas Digitales
pinMode(4,OUTPUT);pinMode(5,OUTPUT);
pinMode(6,OUTPUT);pinMode(7,OUTPUT);
//Configuracion de Entradas Analogica
pinMode(A0,INPUT);
//Configuracion de Salidas Analogica
pinMode(9,OUTPUT);
}
void loop()//Programa Principal
{ //Lectura de Entradas Digitales
int A=digitalRead(0);int B=digitalRead(1);
int C=digitalRead(2);int D=digitalRead(3);
//Lectura de Entradas Analogicas
int sensor=analogRead(A0);
//Salida de Datos Digitales
digitalWrite(4,HIGH);digitalWrite(5,LOW);
digitalWrite(6, HIGH);digitalWrite(7, LOW);
//Salida de Datos Analogicos
analogWrite(9,sensor/4);
}
void setup() //Configuracion de Pines
{//Configuracion de Entradas Digitales
pinMode(0,INPUT);pinMode(1,INPUT);
pinMode(2,INPUT);pinMode(3,INPUT);
//Configuracion de Salidas Digitales
pinMode(4,OUTPUT);pinMode(5,OUTPUT);
pinMode(6,OUTPUT);pinMode(7,OUTPUT);
//Configuracion de Entradas Analogica
pinMode(A0,INPUT);
//Configuracion de Salidas Analogica
pinMode(9,OUTPUT);
}
void loop()//Programa Principal
{ //Lectura de Entradas Digitales
int A=digitalRead(0);int B=digitalRead(1);
int C=digitalRead(2);int D=digitalRead(3);
//Lectura de Entradas Analogicas
int sensor=analogRead(A0);
//Salida de Datos Digitales
digitalWrite(4,A);digitalWrite(5,B);
digitalWrite(6,C);digitalWrite(7,D);
//Salida de Datos Analogicos
analogWrite(9,sensor/4);
}
//Solución 1:
//Solución 3:
//Solución 2:

digitalWrite(7,LOW); delay(tiempo);
digitalWrite(8,HIGH); delay(tiempo);
digitalWrite(8,LOW); delay(tiempo);
}
Construcción de un indicador de nivel (vúmetro
con diodos led)
Se trata de construir u indicador de nivel que sea capaz
de medir el valor de una señal de
entrada generada por un potenciómetro desde una
entrada analógica.

Se establecerán 3 diodos Led conectados a las salidas


PIN6, PIN7 y PIN8. La entrada la
conectaremos en la entrada analógica PIN 1 (analog
IN1)
int ledPin1 = 8; // Selección de PIN para cada LED
int ledPin2 = 7; int ledPin3 = 6;
int inPin= A1; // selec entrada analógica 1 (pot)

void turn_off() { //Apaga los 3 LEDS


digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW); }

void setup() {
pinMode(ledPin1, OUTPUT); // declara LEDs como salidas
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
turn_off(); } //

void loop(){
int val; val= analogRead(inPin); // lee el valor de la señal analógica
turn_off();apaga los tres LED
// Si el valor de la señal medida es > 256 enciende LED del PIN8
if (val>= 256) digitalWrite(ledPin1, HIGH);
// Si el valor de la señal medida es > 512 enciende LED del PIN7
if (val>= 512) digitalWrite(ledPin2, HIGH);
// Si el valor de la señal medida es > 758 enciende LED del PIN6
if (val>= 758) digitalWrite(ledPin3, HIGH); }
int A = 1;int B = 2;
int C = 3;int D = 4;
int E = 5;int F = 6;
int G = 7; int Dp = 8;

// Configuramos los
pines.
void setup() {
pinMode (A, OUTPUT);
pinMode (B, OUTPUT);
pinMode (C, OUTPUT);
pinMode (D, OUTPUT);
pinMode (E, OUTPUT);
pinMode (G, OUTPUT);
pinMode (F, OUTPUT);
pinMode (Dp, OUTPUT);
}
// Y encendemos los
segmentos.
void loop() {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, LOW);
digitalWrite(Dp, LOW);

delay(600);
…………….
}
int displey[10]={0b00111111, 0b00000110, 0b01011011, 0b01001111,
0b01100110, 0b01101101, 0b01111101, 0b00000111,
0b01111111, 0b01101111};
int milhar=0, centena=0, dezena=0, unidade=0;
void setup()
{DDRB=B11111111;
DDRD=B11111111;}

void loop()
{ for(int x=0;x<=9999;x++){
for(int p=0;p<100;p++){
milhar= x/1000;
centena= (x%1000)/100;
dezena= (x%100)/10;
unidade= x%10;

digitalWrite(11, LOW);digitalWrite(10, HIGH);


digitalWrite(8, HIGH);digitalWrite(9, HIGH);
PORTD=displey[milhar];delay(2);

digitalWrite(11, HIGH);digitalWrite(10, LOW);


digitalWrite(8, HIGH);digitalWrite(9, HIGH);
PORTD=displey[centena];delay(2);

digitalWrite(11, HIGH);digitalWrite(10, HIGH);


int notas[]={262,294,330,349,360};
void setup()
{pinMode(A0,INPUT);Serial.begin(9600);
}

void loop()
{int ValorT=analogRead(A0);
Serial.println(ValorT);
if(ValorT==1023){tone(8,notas[0]);}
else if(ValorT>=990 && ValorT<=1010){tone(8,notas[1]);}
else if(ValorT>=505 && ValorT<=515){tone(8,notas[2]);}
else if(ValorT>=165 && ValorT<=180){tone(8,notas[3]);}
else if(ValorT>=5 && ValorT<=10){tone(8,notas[4]);}
else {noTone(8);}
}
Control de la iluminación de una lámpara.
int ledPin = 9; // Selección del PIN de salida Analógica
int inputPin = 2; // Selección del PIN para la entrada de pulsador
int val = 0; // variable para leer el estado del pulsador int fadeval = 0;

void setup() {
pinMode(ledPin, OUTPUT); // designación de salida Analógica
pinMode(inputPin, INPUT); // designación de pulsador de entrada
}

void loop(){
val = digitalRead(inputPin); // leer valor de entrada
if (val == HIGH) { // Botón pulsado
digitalWrite(ledPin, LOW); // puesta a "0" de la salida
delay(50);
digitalWrite(ledPin, HIGH); // puesta a "1" de la salida
delay(50); }

else { // Si se presiona el boton


for(fadeval = 0 ; fadeval <= 255; fadeval+=5) { // valor de salida analógica
asciende de min a max)
analogWrite(ledPin, fadeval); // fija el valor en la salida ( desde 0-255)
delay(100);
}
for(fadeval = 255; fadeval >=0; fadeval-=5) { // valor de salida analógica desciende
(desde max to min)
analogWrite(ledPin, fadeval);
delay(100); }
} }
void monitoriza() {
Serial.print("La medida de luz es ...");
Serial.println(medida);
Serial.print("La luz a dar en los leds es ...");
Serial.println(luzled); delay(1000);
}
void loop(){
medida=analogRead(ldr);
luzled=255-(medida/4);
monitoriza();
for (n=0;n<3;n++){
analogWrite(leds[n],luzled);
delay(200);
}
}
analogWrite(motor,200); }
else { digitalWrite(led,LOW);
digitalWrite(motor,LOW); }
}
Termostato con velocidad de motor variable
(Versión 2).
Se trata de un dispositivo que haga girar un
motor más o menos rápido en función de la
temperatura. Para ello conectaremos una ntc
a la entrada analógica 0 y un led al pin 9 y el
motor al pin 10. El valor de la entrada
analógica 0 está comprendido entre 0 y 1024,
y el valor del la tensión del pin 10 entre 0 y 5
voltios (entre 0 y 255). El motor debe girar a
una velocidad entre 0 y 255 en función del
valor de la entrada analógica 0, siendo su
valor directamente proporcional al valor de la
entrada analógica 0 (de 0 a 1024), o sea a más
temperatura más velocidad del motor.
Además el led del pin 9 debe encenderse.
int ntc=0; int led=13; int motor=9;
int n=0; int temperatura=0;
int velocidadmotor=0;

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

void monitoriza() {
Serial.print("El valor de la temperatura es ...");
Serial.println(temperatura);
delay(1000); }

void loop() {
temperatura=analogRead(ntc);
monitoriza(); velocidadmotor=temperatura/4;
digitalWrite(led,HIGH);
analogWrite(motor,velocidadmotor);
}
//Lectura de presenca
limpa_tela(); lcd.print("Estado: "); presencia();
//Lectura temperatura
limpa_tela(); lcd.print("Temp: ");
temperatura(); delay(100);
}
void limpa_tela(){ delay(500);
lcd.setCursor(0,1); lcd.print(" ");
lcd.setCursor(0,1); }

void presencia(){ int sinalPir=digitalRead(pPir);


if(sinalPir==1){ lcd.print("En uso"); digitalWrite(pLED,HIGH); }
else{ lcd.print("Vacio"); digitalWrite(pLED,LOW); }
}
void temperatura(){ float sinalTemp=analogRead(pTemp)*5;
float tempC=((sinalTemp/1023)-0.5)*100;

if(tempC<20){analogWrite(tVermelho,0);analogWrite(tVerde,80
);
analogWrite(tAzul,255);}
else if(tempC>20 &&
tempC<27){analogWrite(tVermelho,255);
analogWrite(tVerde,255);analogWrite(tAzul,0);
}else if(tempC>26){analogWrite(tVermelho,255);
analogWrite(tVerde,0); analogWrite(tAzul,0); }
SCROLLING CON MAX7219

o Conocer el uso de los displays MAX7219.


o Montar un grupo de displays que nos permita mostrar líneas de texto.
o Desplazar esos textos por la pantalla (Scrolling).
Imagen de Arduino UNO

Protoboard

Arduino UNO o equivalente.

Una Protoboard larga más cables. Array LED 8x8

Vais a necesitar cables macho / macho y al conexiones

menos 4 macho/hembra

Varias matrices LEDs 8×8, con un MAX7219.


Aquí vamos a usar 4
ESQUEMA DE CONEXIONES

MAX7219
Matriz MAX7219

Cableado primera etapa

Ahora hagamos lo mismo con todos los pines de Clock (Amarillo en mi caso) y CS Azul.
Pines Clock + CS
•Recordar que el primero es el mas a la derecha según miráis a los displays.
•Si conectáis empezando desde el de la izquierda no va a funcionar así que ojo.
Conectando los Data out a los data in

Ya solo falta conectar la cascada a nuestro Arduino. Para ello


Conexion con Arduino

También podría gustarte