1. Parpadeo de un led
/*
Parpadeo
Enciende un LED por durante segundo y después lo apaga.
*/
int led = 13; // asigna a la variable led el valor 13
// la rutina de setup corre una vez o cuando se presiona reset
void setup() {
pinMode(led, OUTPUT); // inicializa el pin 13 como pin de salida
}
// la rutina loop corre constantemente
void loop() {
digitalWrite(led, HIGH); // enciende el LED (HIGH es el nivel de voltaje)
delay(1000); // espera un segundo
digitalWrite(led, LOW); // apaga el LED poniendo el voltaje a LOW
delay(1000); // espera por un segundo
}
Parpadeo
Enciende un LED por durante segundo y después lo apaga.
*/
int led = 13; // asigna a la variable led el valor 13
// la rutina de setup corre una vez o cuando se presiona reset
void setup() {
pinMode(led, OUTPUT); // inicializa el pin 13 como pin de salida
}
// la rutina loop corre constantemente
void loop() {
digitalWrite(led, HIGH); // enciende el LED (HIGH es el nivel de voltaje)
delay(1000); // espera un segundo
digitalWrite(led, LOW); // apaga el LED poniendo el voltaje a LOW
delay(1000); // espera por un segundo
}
2. Semáforo
/*************/
/* SEMÁFORO */
/*************/
//** Definiciones **//
int rojo=2; //definimos el valor del pin para el led rojo
int amarillo=4; //definimos el valor del pin para el led amarillo
int verde=7; //definimos el valor del pin para el led verde
//** Programa **//
void setup() {
pinMode(rojo,OUTPUT); //declaramos el pin verde como salida
pinMode(amarillo,OUTPUT);//declaramos el pin amarillo como salida
pinMode(verde,OUTPUT); //declaramos el pin rojo como salida
}
void loop() {
digitalWrite(rojo,HIGH); //encendemos el led rojo
delay(2000); //esperamos 2 segundos
digitalWrite(rojo,LOW); //apagamos el led rojo
digitalWrite(amarillo,HIGH); //encendemos el led amarillo
delay(2000); //esperamos 2 segundos
digitalWrite(amarillo,LOW); //apagamos el led amarillo
digitalWrite(verde,HIGH); //encendemos el led verde
delay(2000); //esperamos 2 segundos
digitalWrite(verde,LOW); //apagamos el led verde
}
/* SEMÁFORO */
/*************/
//** Definiciones **//
int rojo=2; //definimos el valor del pin para el led rojo
int amarillo=4; //definimos el valor del pin para el led amarillo
int verde=7; //definimos el valor del pin para el led verde
//** Programa **//
void setup() {
pinMode(rojo,OUTPUT); //declaramos el pin verde como salida
pinMode(amarillo,OUTPUT);//declaramos el pin amarillo como salida
pinMode(verde,OUTPUT); //declaramos el pin rojo como salida
}
void loop() {
digitalWrite(rojo,HIGH); //encendemos el led rojo
delay(2000); //esperamos 2 segundos
digitalWrite(rojo,LOW); //apagamos el led rojo
digitalWrite(amarillo,HIGH); //encendemos el led amarillo
delay(2000); //esperamos 2 segundos
digitalWrite(amarillo,LOW); //apagamos el led amarillo
digitalWrite(verde,HIGH); //encendemos el led verde
delay(2000); //esperamos 2 segundos
digitalWrite(verde,LOW); //apagamos el led verde
}
3. Encendido progresivo de un led
Se trata aumentar y disminuir la luminosidad de un led usando la capacidad de ofrecer una tensión variable que da una salida analógica. Para ello se conecta un led al pin 11 y se provoca que su luminosidad pase de mínima a máxima, para luego ir de máxima a mínima. Los valores de salidas analógicas van del mínimo 0 al máximo 255.
int luminosidad = 0; // variable para asignar la luminosidad al led
int led = 11; // pin del led
void setup()
{
// en el setup no hay que configurar nada
}
void loop()
{
for (luminosidad = 0 ; luminosidad <= 255; luminosidad=luminosidad+3) // fade in (del mínimo a máximo)
{
analogWrite(led, luminosidad); // ilumina el led con el valor asignado a luminosidad (entre 0 y 255)
delay(30); // espera 30 ms para que se vea el efecto
}
for (luminosidad = 255; luminosidad >=0; luminosidad=luminosidad-3) // fade out (del máximo al mínimo)
{
analogWrite(led, luminosidad);
delay(30);
}
}
int led = 11; // pin del led
void setup()
{
// en el setup no hay que configurar nada
}
void loop()
{
for (luminosidad = 0 ; luminosidad <= 255; luminosidad=luminosidad+3) // fade in (del mínimo a máximo)
{
analogWrite(led, luminosidad); // ilumina el led con el valor asignado a luminosidad (entre 0 y 255)
delay(30); // espera 30 ms para que se vea el efecto
}
for (luminosidad = 255; luminosidad >=0; luminosidad=luminosidad-3) // fade out (del máximo al mínimo)
{
analogWrite(led, luminosidad);
delay(30);
}
}
4. Secuencia de leds
Se trata de encender y apagar 5 leds secuencialmente. Los leds deben estar conectados a los pines 2, 3, 4, 5 y 6.
Se deben encender y posteriormente apagar los leds desde el pin 5 al 8, con un tiempo de duración de
Solución 1:
int tiempo=200; //declara una variable como entero y de valor 200
void setup() { //comienza la configuracion
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
}
void loop() { //comienza el bucle principal del programa
digitalWrite(2,HIGH);
delay(tiempo);
digitalWrite(2,LOW);
delay(tiempo);
digitalWrite(3,HIGH);
delay(tiempo);
digitalWrite(3,LOW);
delay(tiempo);
digitalWrite(4,HIGH);
delay(tiempo);
digitalWrite(4,LOW);
delay(tiempo);
digitalWrite(5,HIGH);
delay(tiempo);
digitalWrite(5,LOW);
delay(tiempo);
digitalWrite(6,HIGH);
delay(tiempo);
digitalWrite(6,LOW);
delay(tiempo);
}
void setup() { //comienza la configuracion
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
}
void loop() { //comienza el bucle principal del programa
digitalWrite(2,HIGH);
delay(tiempo);
digitalWrite(2,LOW);
delay(tiempo);
digitalWrite(3,HIGH);
delay(tiempo);
digitalWrite(3,LOW);
delay(tiempo);
digitalWrite(4,HIGH);
delay(tiempo);
digitalWrite(4,LOW);
delay(tiempo);
digitalWrite(5,HIGH);
delay(tiempo);
digitalWrite(5,LOW);
delay(tiempo);
digitalWrite(6,HIGH);
delay(tiempo);
digitalWrite(6,LOW);
delay(tiempo);
}
int tiempo=200;
int n;
void setup() { //comienza la configuracion
for (n=2;n<7;n++) {
pinMode (n, OUTPUT);
}
}
void secuencia() {
for (n=2;n<7;n++) {
digitalWrite (n, HIGH);
delay (tiempo);
digitalWrite (n, LOW);
delay (tiempo);
}
}
void loop() {
secuencia();
}
int n;
void setup() { //comienza la configuracion
for (n=2;n<7;n++) {
pinMode (n, OUTPUT);
}
}
void secuencia() {
for (n=2;n<7;n++) {
digitalWrite (n, HIGH);
delay (tiempo);
digitalWrite (n, LOW);
delay (tiempo);
}
}
void loop() {
secuencia();
}
5. Coche fantástico
Se trata de encender y apagar 6 leds secuencialmente. Los leds deben estar conectados a los pines
2, 3, 4, 5, 6 y 7.
Se deben encender y apagar los leds desde el pin 2 al 7, con un tiempo de encendido y apagado de 50 ms, más tarde se deben encender y apagar los leds desde el pin 7 al 2, con un tiempo de encendido y apagado de 50 ms. La secuencia se debe repetir indefinidamente.
El efecto del programa es el de las luces delanteras del "Coche fantástico".
2, 3, 4, 5, 6 y 7.
Se deben encender y apagar los leds desde el pin 2 al 7, con un tiempo de encendido y apagado de 50 ms, más tarde se deben encender y apagar los leds desde el pin 7 al 2, con un tiempo de encendido y apagado de 50 ms. La secuencia se debe repetir indefinidamente.
El efecto del programa es el de las luces delanteras del "Coche fantástico".
int n=0;
int tiempo=50;
void setup() { //comienza la configuración
for (n=2;n<8;n++) {
pinMode(n,OUTPUT);
}
}
void loop() {
for (n=2;n<8;n++) {
digitalWrite (n,HIGH);
delay(tiempo);
digitalWrite (n,LOW);
delay(tiempo);
}
for (n=7;n>=2;n--) {
digitalWrite (n,HIGH);
delay(tiempo);
digitalWrite (n,LOW);
delay(tiempo);
}
}
int tiempo=50;
void setup() { //comienza la configuración
for (n=2;n<8;n++) {
pinMode(n,OUTPUT);
}
}
void loop() {
for (n=2;n<8;n++) {
digitalWrite (n,HIGH);
delay(tiempo);
digitalWrite (n,LOW);
delay(tiempo);
}
for (n=7;n>=2;n--) {
digitalWrite (n,HIGH);
delay(tiempo);
digitalWrite (n,LOW);
delay(tiempo);
}
}
Solución 2 (Mejorando el efecto visual):
int leds[]={2,3,4,5,6,7};
int n=0;
int tiempo=30;
void setup() { //comienza la configuración
for (n=0;n<6;n++) {
pinMode(leds[n],OUTPUT);
}
}
void loop() {
for (n=0;n<6;n++) {
digitalWrite (leds[n],HIGH);
delay(tiempo);
digitalWrite(leds[n+1],HIGH);
delay(tiempo);
digitalWrite (leds[n],LOW);
delay(tiempo*2);
}
for (n=5;n>=0;n--) {
digitalWrite (leds[n],HIGH);
delay(tiempo);
digitalWrite(leds[n-1],HIGH);
delay(tiempo);
digitalWrite (leds[n],LOW);
delay(tiempo*2);
}
}
int n=0;
int tiempo=30;
void setup() { //comienza la configuración
for (n=0;n<6;n++) {
pinMode(leds[n],OUTPUT);
}
}
void loop() {
for (n=0;n<6;n++) {
digitalWrite (leds[n],HIGH);
delay(tiempo);
digitalWrite(leds[n+1],HIGH);
delay(tiempo);
digitalWrite (leds[n],LOW);
delay(tiempo*2);
}
for (n=5;n>=0;n--) {
digitalWrite (leds[n],HIGH);
delay(tiempo);
digitalWrite(leds[n-1],HIGH);
delay(tiempo);
digitalWrite (leds[n],LOW);
delay(tiempo*2);
}
}
6. Simulación de la luz de una vela
Se trata de simular el movimiento de la llama de una vela. Hacemos uso de la instrucción para generar un numero aleatorio que lo asignamos a una salida analógica PWM y otro número que lo asociamos a la variable de temporización (tiempo que esperamos para cambiar el valor de la salida).
/* Simula luz de vela*/
int ledPin = 9; // selecciona el puerto PWM
int val = 0; // define y pone a cero la variable "brillo"
int delayval = 0; // define el intervalo de cambio de valor de salida
void setup() {
randomSeed(0); // inicializa el generador de números aleatorios
pinMode(ledPin, OUTPUT); // declara el pin de SALIDA pin 9
}
void loop() {
val = random(100,255); // genera un número aleatorio entre 100 y 255 que asigna a la variable val
analogWrite(ledPin, val); // envía ese valor a la salida pin 9
delayval = random(50,150); // genera un numero aleatorio entre 50 y 150 y lo asigna a la variable de temporización
delay(delayval); // espera un tiempo delayval medido en milisegundos
}
int ledPin = 9; // selecciona el puerto PWM
int val = 0; // define y pone a cero la variable "brillo"
int delayval = 0; // define el intervalo de cambio de valor de salida
void setup() {
randomSeed(0); // inicializa el generador de números aleatorios
pinMode(ledPin, OUTPUT); // declara el pin de SALIDA pin 9
}
void loop() {
val = random(100,255); // genera un número aleatorio entre 100 y 255 que asigna a la variable val
analogWrite(ledPin, val); // envía ese valor a la salida pin 9
delayval = random(50,150); // genera un numero aleatorio entre 50 y 150 y lo asigna a la variable de temporización
delay(delayval); // espera un tiempo delayval medido en milisegundos
}
7. Encender y apagar un led con un pulsador
Al presionar el pulsador se encenderá el led. Si se presiona nuevamente el led se apaga.FUNCIONAMIENTO:
- Se utilizara la variable val la cual leerá digitalmente lo que sucede en el pin 2 (pulsador), su comando seria digitalRead(PULSADOR).
- Utilizamos la orden if. La estructura if es un condicional que permite decidir en función del valor de la variable val, si este es alto (HIGH=1) o si es bajo (LOW=0). Se utiliza una variable estado (state) que registrará los cambios de HIGH y LOW
- Para que el LED se encienda, si state==1 se utiliza el comando digitalWrite(LED,HIGH). Para quel LED pueda apagarse se utiliza el mismo comando digitalWrite(LED,HIGH).
// Práctica encender LED con un pulsador y luego apagar LED con el mismo //botón pulsador const int LED = 8; const int PULSADOR = 2; int val = 0; //val se emplea para almacenar el estado del pulsador int state = 0; // 0 LED apagado. 1 LED encendido int old_val = 0; // almacena el antiguo valor de val void setup(){ // definir si la variable es de entrada // o salida. pinMode(LED,OUTPUT); // establecer que el pin digital es una señal de salida pinMode(PULSADOR,INPUT); // y PULSADOR como señal de entrada } void loop() { // loop = realice un lazo continuamente val= digitalRead(PULSADOR); // lee el estado del pulsador if ((val == HIGH) && (old_val == LOW)){ state=1-state; delay(10); } old_val = val; // valor del antiguo estado if (state==1){ digitalWrite(LED, HIGH); // enciende el LED } else{ digitalWrite(LED,LOW); // apagar el LED } }
8. Encender y apagar un led con dos pulsadores
Un pulsador encenderá el led y el otro lo apaga.int LED = 8; //LED int pulsador1 = 2; // primer pulsador int pulsador2 = 6; // segundo pulsador void setup () { pinMode (LED, OUTPUT); //configurado como salida pinMode (pulsador1,INPUT); //configurado de entrada pinMode (pulsador2, INPUT); } void loop () { if (digitalRead(pulsador1) == HIGH){ //si el pulsador1 está en alto digitalWrite (LED, HIGH); //encender el LED } else if (digitalRead(pulsador2) == HIGH){ //si el pulsador2 está en alto digitalWrite (LED, LOW); // apagar el LED } }
0 comentarios:
Publicar un comentario