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