Rosario Pariente
Resumen Arduino
1. LED EN ESCALERA ASCENDENTE Y DESCENDENTE
int led_rojo = 13;
int led_naranja = 12;
int led_amarillo = 11;
int led_verde = 10;
int led_azul = 9;
int retardo = 300;
// C++ code
//
void setup()
{
pinMode(led_rojo, OUTPUT);
pinMode(led_naranja, OUTPUT);
pinMode(led_amarillo, OUTPUT);
pinMode(led_verde, OUTPUT);
pinMode(led_azul, OUTPUT);
}
void loop()
{
digitalWrite(led_rojo, HIGH);
delay(retardo);
digitalWrite(led_naranja, HIGH);
delay(retardo);
digitalWrite(led_amarillo, HIGH);
delay(retardo);
digitalWrite(led_verde, HIGH);
delay(retardo);
digitalWrite(led_azul, HIGH);
delay(retardo);
digitalWrite(led_azul, LOW);
delay(retardo);
digitalWrite(led_verde, LOW);
Rosario Pariente
delay(retardo);
digitalWrite(led_amarillo, LOW);
delay(retardo);
digitalWrite(led_naranja, LOW);
delay(retardo);
digitalWrite(led_rojo, LOW);
delay(retardo);
}
2. PULSADOR LED
int led_1 = 13;
int pulsador = 7;
void setup()
pinMode(led_1, OUTPUT);
pinMode(pulsador, INPUT);
void loop()
int bandera = digitalRead(pulsador);
if(bandera==1){
digitalWrite(led_1, HIGH);
if(bandera==0){
digitalWrite(led_1, LOW);
}
Rosario Pariente
3. PULSADOR APAGAR ENCENDER
const int led_1 = 13;
const int pulsador = 7;
int bandera = 0;
int lucecita = 0;
bool estado = 0;
void setup() //inicializar los pines
pinMode(led_1, OUTPUT);
pinMode(pulsador, INPUT_PULLUP);
void loop(){
/*Programa para implementar el encendido de un led mediante un pulsador con enclavamiento.
*/
bandera = digitalRead(pulsador);
if((bandera==HIGH)&&(lucecita==LOW)){
estado=1-estado;
delay(200);
bandera=lucecita;
if(estado==1){
digitalWrite(led_1, HIGH);
Rosario Pariente
if(estado==0){
digitalWrite(led_1, LOW);
4. CONTADOR
const int pulsador_resta = 3;
const int pulsador_suma = 4;
const int led1 = 5;
const int led2 = 6;
const int led3 = 7;
const int led4 = 8;
const int led5 = 9;
const int led6 = 10;
int contador = 0;
void setup()
pinMode (pulsador_resta, INPUT_PULLUP);
pinMode (pulsador_suma, INPUT_PULLUP);
pinMode (led1, OUTPUT);
pinMode (led2, OUTPUT);
Rosario Pariente
pinMode (led3, OUTPUT);
pinMode (led4, OUTPUT);
pinMode (led5, OUTPUT);
pinMode (led6, OUTPUT);
void loop()
int lectura_resta = digitalRead (pulsador_resta);
int lectura_suma = digitalRead (pulsador_suma);
if (lectura_resta == LOW)
delay (500);//antirebote
if (contador == 0)
contador = 0;
else
contador = contador-1;
if (lectura_suma == LOW)
delay(500);
if (contador == 6)
contador = 6;
Rosario Pariente
else
contador=contador+1;
if (contador == 0)
digitalWrite (led1, LOW);
digitalWrite (led2, LOW);
digitalWrite (led3, LOW);
digitalWrite (led4, LOW);
digitalWrite (led5, LOW);
digitalWrite (led6, LOW);
if (contador == 1)
digitalWrite (led1, HIGH);
digitalWrite (led2, LOW);
digitalWrite (led3, LOW);
digitalWrite (led4, LOW);
digitalWrite (led5, LOW);
digitalWrite (led6, LOW);
if (contador == 2)
digitalWrite (led1, HIGH);
digitalWrite (led2, HIGH);
digitalWrite (led3, LOW);
Rosario Pariente
digitalWrite (led4, LOW);
digitalWrite (led5, LOW);
digitalWrite (led6, LOW);
if (contador == 3)
digitalWrite (led1, HIGH);
digitalWrite (led2, HIGH);
digitalWrite (led3, HIGH);
digitalWrite (led4, LOW);
digitalWrite (led5, LOW);
digitalWrite (led6, LOW);
if (contador == 4)
digitalWrite (led1, HIGH);
digitalWrite (led2, HIGH);
digitalWrite (led3, HIGH);
digitalWrite (led4, HIGH);
digitalWrite (led5, LOW);
digitalWrite (led6, LOW);
if (contador == 5)
digitalWrite (led1, HIGH);
digitalWrite (led2, HIGH);
digitalWrite (led3, HIGH);
digitalWrite (led4, HIGH);
digitalWrite (led5, HIGH);
digitalWrite (led6, LOW);
Rosario Pariente
if (contador == 6)
digitalWrite (led1, HIGH);
digitalWrite (led2, HIGH);
digitalWrite (led3, HIGH);
digitalWrite (led4, HIGH);
digitalWrite (led5, HIGH);
digitalWrite (led6, HIGH);
5. LED RENTO RAPIDO
void setup()
pinMode(6,INPUT_PULLUP);
pinMode(7, INPUT_PULLUP);
pinMode(13, OUTPUT);
void loop()
int lectura_rapido = digitalRead(6);
int lectura_lento = digitalRead(7);
if(lectura_rapido == LOW)
{
Rosario Pariente
digitalWrite (13, HIGH);
delay (500);
digitalWrite (13, LOW);
delay (500);
else if(lectura_lento == LOW)
digitalWrite (4000, HIGH);
delay (2500);
digitalWrite (4000, LOW);
delay (2500);
if(lectura_lento == HIGH)
digitalWrite (13, HIGH);
delay (1500);
digitalWrite (13, LOW);
delay (1500);
if(lectura_rapido == HIGH)
digitalWrite (13, HIGH);
delay (1500);
digitalWrite (13, LOW);
delay (1500);
}
Rosario Pariente
6. SEMAFORO
// Ponemos las constantes de pulsadores y leds
const int TAB = 2;
const int TCD = 3;
const int SRAB = 4;
const int SVAB = 5;
const int SRCD = 6;
const int SVCD = 7;
//Tiempo de espera del cambio de semáforos.
int tiempoEspera = 5000;
void setup() {
// Iniciamos el monitor serie
Serial.begin(9600);
// Modo entrada y salida de los pines
pinMode(TAB, INPUT);
pinMode(TCD, INPUT);
pinMode(SVAB, OUTPUT);
pinMode(SRAB, OUTPUT);
Rosario Pariente
pinMode(SVCD, OUTPUT);
pinMode(SRCD, OUTPUT);
void loop() {
int TAB = digitalRead(2);
int TCD = digitalRead(3);
// Si hay no hay tráfico en ninguna calle o si hay tráfico en las dos calles
if ((TAB==LOW and TCD==LOW)or (TAB==HIGH and TCD==HIGH))
digitalWrite(SRCD, LOW);
digitalWrite(SVAB, LOW);
digitalWrite(SRAB, HIGH);
digitalWrite(SVCD, HIGH);
delay(tiempoEspera);
digitalWrite(SRAB, LOW);
digitalWrite(SVCD, LOW);
digitalWrite(SRCD, HIGH);
digitalWrite(SVAB, HIGH);
delay(tiempoEspera);
digitalWrite(SRCD, LOW);
digitalWrite(SVAB, LOW);
}
Rosario Pariente
// Si hay tráfico en la calle AB pero no hay tráfico en CD
else if ((TAB==HIGH) or (TCD==LOW))
digitalWrite(SRAB, LOW);
digitalWrite(SVCD, LOW);
digitalWrite(SVAB, HIGH);
digitalWrite(SRCD, HIGH)
// Si hay tráfico en la calle CD pero no hay tráfico en AB
else if ((TAB==LOW) or (TCD==HIGH))
digitalWrite(SRAB, HIGH);
digitalWrite(SVCD, HIGH);
digitalWrite(SVAB, LOW);
digitalWrite(SRCD, LOW);
7. LED CON POTENCIOMETRO
int senal_analogica=0;
const int led = 5;
const int led1 = 4;
const int led2 = 3;
Rosario Pariente
void setup()
Serial.begin (9600);
pinMode(led,OUTPUT);
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
void loop()
senal_analogica=analogRead(A0);
Serial.println(senal_analogica);
//Senal en el primer tecio de la entrada led apagado
if ((senal_analogica<=0) and (senal_analogica <250)){
analogWrite (led,0);
analogWrite (led1,0);
analogWrite (led2,0);
//Senal en el segundo tercio con led muy tenue
}else if ((senal_analogica>=250) and (senal_analogica <500)){
analogWrite(led,255);
analogWrite (led1,0);
analogWrite (led2,0);
}else if ((senal_analogica>=500) and (senal_analogica <751)){
analogWrite(led,255);
analogWrite (led1,255);
analogWrite (led2,0);
//Senal en el tercel tercio led a tope
}else{
analogWrite(led,255);
Rosario Pariente
analogWrite (led1,255);
analogWrite (led2,255);
8. FOTOSENSOR NOCHE DIA
int escritura=0;
int senal_analogica=0;
const int led = 10;
const int led1 = 9;
const int led2 = 8;
void setup()
{
Serial.begin (9600);
pinMode(led,OUTPUT);
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
}
void loop()
{
Serial.println(analogRead(A0));
delay(500);
escritura=map(senal_analogica,14,1010,0,4);
if(escritura==0){
digitalWrite(led, HIGH);
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
}
else if (escritura==1){
digitalWrite(led, HIGH);
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
}
Rosario Pariente
else if (escritura==2){
digitalWrite(led, HIGH);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
}
else if ((escritura==3)or(escritura==6)){
digitalWrite(led, LOW);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
}
}
9. LED RGB
int luce= 0;
void setup()
{
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
}
void loop()
{
for (luce = 0; luce <= 255; luce += 5) {
analogWrite(9, luce);
delay(50);
}
for (luce = 255; luce >= 0; luce -= 5) {
analogWrite(9, luce);
delay(5);
}
for (luce = 0; luce <= 255; luce += 5) {
analogWrite(10, luce);
delay(5);
}
for (luce = 255; luce >= 0; luce -= 5) {
analogWrite(10, luce);
delay(5);
}
for (luce = 0; luce <= 255; luce += 5) {
analogWrite(11, luce);
delay(5);
}
for (luce = 255; luce >= 0; luce -= 5) {
analogWrite(11, luce);
delay(5);
}
for (luce = 0; luce <= 255; luce += 5) {
analogWrite(9, luce);
analogWrite(10, luce);
analogWrite(11, luce);
delay(5);
}
for (luce = 255; luce >= 0; luce -= 5) {
analogWrite(9, luce);
analogWrite(10, luce);
analogWrite(11, luce);
delay(5); }}
Rosario Pariente
10. SERVOMOTOR CON POTENCIOMETRO
motor.attach(3);
}
void loop()
{
lectura = analogRead(A0);
angulo = map(lectura,0,1023,0,180);
motor.write(angulo);
delay(1000);
}
11.CAJA FUERTE
#include <Keypad.h>
// Definimos el teclado matricial
const byte ROWS = 4; // número de filas del teclado matricial
const byte COLS = 4; // número de columnas del teclado matricial
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {12, 11, 10, 9}; // conectamos las filas del teclado matricial a los pines digitales 12,
11, 10, 9
Rosario Pariente
byte colPins[COLS] = {8, 7, 6, 5}; // conectamos las columnas del teclado matricial a los pines digitales 8,
7, 6, 5
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
// Definimos los pines de los leds
const byte LED_ROJO_1 = A1;
const byte LED_ROJO_2 = A2;
const byte LED_ROJO_3 = A3;
const byte LED_VERDE = A0;
// Definimos la clave correcta
const String clave_correcta = "984";
void setup() {
// Configuramos los pines de los leds como salidas
pinMode(LED_ROJO_1, OUTPUT);
pinMode(LED_ROJO_2, OUTPUT);
pinMode(LED_ROJO_3, OUTPUT);
pinMode(LED_VERDE, OUTPUT);
}
void loop() {
// Pedimos al usuario que introduzca la clave
String clave_introducida = "";
while (clave_introducida.length() < 3) {
char key = keypad.getKey();
if (key != NO_KEY) {
// Si el usuario pulsa una tecla, la añadimos a la clave introducida
clave_introducida += key;
// Encendemos un led rojo para indicar que se ha introducido un dígito
if (clave_introducida.length() == 1) {
digitalWrite(LED_ROJO_1, HIGH);
} else if (clave_introducida.length() == 2) {
digitalWrite(LED_ROJO_2, HIGH);
} else if (clave_introducida.length() == 3) {
digitalWrite(LED_ROJO_3, HIGH);
}
}
}
// Comprobamos si la clave introducida es correcta
if (clave_introducida == clave_correcta) {
// Si es correcta, encendemos el led verde durante 3 segundos
digitalWrite(LED_ROJO_1, LOW);
digitalWrite(LED_ROJO_2, LOW);//apagamos los led rojos cuando la contraseña sea correcta
digitalWrite(LED_ROJO_3, LOW);
digitalWrite(LED_VERDE, HIGH);
delay(3000);
digitalWrite(LED_VERDE, LOW);
} else {
// Si es incorrecta, hacemos parpadear los tres leds rojos 5 veces durante medio segundo
for (byte i = 0; i < 5; i++) {
digitalWrite(LED_ROJO_1, HIGH);
digitalWrite(LED_ROJO_2, HIGH);
digitalWrite(LED_ROJO_3, HIGH);
Rosario Pariente
delay(250);
digitalWrite(LED_ROJO_1, LOW);
digitalWrite(LED_ROJO_2, LOW);
digitalWrite(LED_ROJO_3, LOW);
delay(250);
}
}
}
12. SENSOR DISPLAY
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 2, 3, 4, 5);
void setup()
{
lcd.begin(16,2);
lcd.print("Holi :)");
lcd.setCursor(0,1);
lcd.print("ME QUIERO MORIR :)");
}
void loop() {}
13. SENSOR DISPLAY CON LECTURA
Rosario Pariente
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 2, 3, 4, 5);
int boton = 7; // pin donde se conecta el pulsador
boolean mostrar_temperatura = true; //variable para saber qué dato mostrar en la pantalla
int a=0;
void setup()
{
lcd.begin(16,2);
pinMode(boton, INPUT_PULLUP); // configurar el pin del pulsador como entrada con pull-up
lcd.print(" Bienvenidos "); // imprimir mensaje de bienvenida en la pantalla
lcd.setCursor(0, 1);
lcd.print(" al sistema ");
delay(1000); // esperar un segundo
lcd.clear ();
void loop() {
int temperatura = analogRead (A0); //valor de la temperatura
int luminosidad = analogRead (A1); //valor de la luminosidad
if (digitalRead(boton) == LOW) { // si se pulsa el botón
mostrar_temperatura = !mostrar_temperatura; // cambiar la variable de mostrar temperatura
delay(200); // esperar un poco para evitar rebotes en el pulsador
}
if (mostrar_temperatura) { // si se debe mostrar la temperatura
lcd.setCursor(0, 0);
lcd.print("Temperatura: ");
lcd.setCursor(0, 1);
lcd.print(temperatura(500.0/1023.0)) - 50.0);
lcd.print("C ");
} else { // si se debe mostrar la luminosidad
lcd.setCursor(0, 0);
lcd.print("Luminosidad: ");
lcd.setCursor(0, 1);
lcd.print(luminosidad);
lcd.print("% ");
}
delay(500); // esperar un poco antes de volver a actualizar la pantalla
}