Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos » Arduino y Raspberry Pi
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

28/11/2013 #21


http://elektronikadonbosco.blogspot....e-arduino.html

yo utilicé otra opción en una versión anterior, que me genera el .hex en la carpeta donde tienes el .ino pero ahora ni me acuerdo de cual, ni de que versión era, así que no sé, eso fue lo que me dijo google
29/11/2013 #22

Avatar de Meta

Hola:

En este ejemplo no me sale una caosa.



El código de abajo está programado para Pull-Down. ¿Cómo lo programo a la imagen de la izauierda? Quiero que me funcione bien el código.

Código:
http://picmania.garcia-cuervo.net/images/vdiv8.gif
Funciona como. So lo pulsas, enciende LEd y ventilador. Si lo vuelves a pulsar, Apaga ventilador y el LEd parpadea cada segundo. Estando apagado o encendido, da igual su estado, si dejo pulsado el botón durante 3 segundos. Se detiene todo.

Código:
byte Pulsador  =PIN_B0; // Pines usados
byte Led       =PIN_D0; 
byte Ventilador=PIN_D1;  

#define ON HIGH        
#define OF LOW

boolean Estado_Pulsador;
boolean Estado_Anterior = false; 

boolean Led_Encendido=false;
boolean Ven_Encendido=false;

byte Secuencia = 0;            // Para manejar la secuencia de salidas

unsigned long Parpadeo=1000;  // Tiempo de parpadeo de led
unsigned long T_Anterior=0;   // Auxiliar para controlar tiempo de parpadeo

unsigned long T_Apagar=3000;  // Tiempo a pulsar para apagar
unsigned long T_Pulsado=0;    // Auxiliar para controlar tiempo de boton pulsado

void setup()
{
  pinMode(Pulsador, INPUT);       
  pinMode(Led, OUTPUT);         
  pinMode(Ventilador, OUTPUT);
  digitalWrite(Led, OF);
  digitalWrite(Ventilador, OF);
}

void loop()
{
  Estado_Pulsador = digitalRead(Pulsador); // Lee el estado del botón. 
  delay(20);
  if (Estado_Pulsador && !Estado_Anterior) // Pulsador pasa de low a high
  {
    T_Pulsado=millis()+T_Apagar;           // Para controlar el timpo que pasa pulsado 
    Estado_Anterior=true;                  // No enta en el if hasta q pulsador pase de high a low
    Secuencia++;                           // Pasamos a siguiente secuencia
  } 
  
  if (!Estado_Pulsador && Estado_Anterior) // Pulsador pasa de high a low
  {
    Estado_Anterior=false;                 // No enta en el if hasta q pulsador pase de low a high
    T_Pulsado=0;                           // Al soltar pulsador ya no controlamos el tiempo 
  } 
  
  if (T_Pulsado>0 && Estado_Pulsador && millis()>T_Pulsado)  
  {                                        // Hay tiempo cargado para controlar el fin y pulsador en high y ha transcurrido el tiempo del pulsador activo
    T_Pulsado=0;                           // Ya no controlamos timepo de pulsado
    Secuencia=0;                           // Secuencia 0, todo apagado
  }  
  
  if (Secuencia==0)                        // Todo apagado
  {
    Led_Encendido=false;
    Ven_Encendido=false;
    T_Anterior=0;                          // Para que pueda funcionar el parpadeo de nuevo
  }
  else if (Secuencia==1)                   // Pulsamos por 1ª vez, todo encendido
    {
      Led_Encendido=true;
      Ven_Encendido=true;
    }
    else if (Secuencia==2)                 // Pulsamos por 2ª vez, Apaga ventilador y led parpadea
      {
        Ven_Encendido=false;        
        if (millis()>T_Anterior)           // Tiempo parpadeo finalizado
        {
          T_Anterior=millis() + Parpadeo;// Tiempo a esperar para siguiente parpadeo
          Led_Encendido=!Led_Encendido;  // de encendido a apagado y viceversa
        }           
      }
      else {Secuencia=1; }    

  if (Led_Encendido) {digitalWrite(Led, ON);} else {digitalWrite(Led, OF);}
  if (Ven_Encendido) {digitalWrite(Ventilador, ON);} else {digitalWrite(Ventilador, OF);}   
}
07/12/2013 #23

Avatar de Meta

Hola:

Ya lo sonseguí. Comportamiento:

  1. Led y ventilador apagados.
  2. Si pulsa el botón, se enciende Led y ventilador.
  3. Si vuelves a pulsar el botón, se apaga ventilador y Led parpadea cada segundo.
  4. Si dejas pulsado el botón durante 3 seg. esté el ventilador activo o no, se apaga todo.
Código:
Código:
byte Pulsador  =PIN_B0; // Pines usados
byte Led       =PIN_D0; 
byte Ventilador=PIN_D1;  

#define ON HIGH        
#define OF LOW

boolean Estado_Pulsador;
boolean Estado_Anterior = false; 

boolean Led_Encendido=false;
boolean Ven_Encendido=false;

byte Secuencia = 0;            // Para manejar la secuencia de salidas

unsigned long Parpadeo=1000;  // Tiempo de parpadeo de led
unsigned long T_Anterior=0;   // Auxiliar para controlar tiempo de parpadeo

unsigned long T_Apagar=3000;  // Tiempo a pulsar para apagar
unsigned long T_Pulsado=0;    // Auxiliar para controlar tiempo de boton pulsado

void setup()
{
  pinMode(Pulsador, INPUT);       
  pinMode(Led, OUTPUT);         
  pinMode(Ventilador, OUTPUT);
  digitalWrite(Led, OF);
  digitalWrite(Ventilador, OF);
}

void loop()
{
  Estado_Pulsador = !digitalRead(Pulsador); // Lee el estado del botón. 
  delay(20);                                // Antirebotes.
  
  if (Estado_Pulsador && !Estado_Anterior) // Pulsador pasa de low a high
  {
    T_Pulsado=millis()+T_Apagar;           // Para controlar el timpo que pasa pulsado 
    Estado_Anterior=true;                  // No enta en el if hasta q pulsador pase de high a low
    Secuencia++;                           // Pasamos a siguiente secuencia
  } 
  
  if (!Estado_Pulsador && Estado_Anterior) // Pulsador pasa de high a low
  {
    Estado_Anterior=false;                 // No enta en el if hasta q pulsador pase de low a high
    T_Pulsado=0;                           // Al soltar pulsador ya no controlamos el tiempo 
  } 
  
  if (T_Pulsado>0 && Estado_Pulsador && millis()>T_Pulsado)  
  {                                        // Hay tiempo cargado para controlar el fin y pulsador en high y ha transcurrido el tiempo del pulsador activo
    T_Pulsado=0;                           // Ya no controlamos timepo de pulsado
    Secuencia=0;                           // Secuencia 0, todo apagado
  }  
  
  if (Secuencia==0)                        // Todo apagado
  {
    Led_Encendido=false;
    Ven_Encendido=false;
    T_Anterior=0;                          // Para que pueda funcionar el parpadeo de nuevo
  }
  else if (Secuencia==1)                   // Pulsamos por 1ª vez, todo encendido
    {
      Led_Encendido=true;
      Ven_Encendido=true;
    }
    else if (Secuencia==2)                 // Pulsamos por 2ª vez, Apaga ventilador y led parpadea
      {
        Ven_Encendido=false;        
        if (millis()>T_Anterior)           // Tiempo parpadeo finalizado
        {
          T_Anterior=millis() + Parpadeo;// Tiempo a esperar para siguiente parpadeo
          Led_Encendido=!Led_Encendido;  // de encendido a apagado y viceversa
        }           
      }
      else {Secuencia=1; }    

  if (Led_Encendido) {digitalWrite(Led, ON);} else {digitalWrite(Led, OF);}
  if (Ven_Encendido) {digitalWrite(Ventilador, ON);} else {digitalWrite(Ventilador, OF);}   
}

Quiero hacer otra cosa que no me sale, apague o no Arduino de la alimentación principal, se guarden el estado del Led y ventilador.



¿Cómo se hace?


Aquí hay libreerías y ejemplos, voy a investigar y probar a ver que pasa.

1) Borrado de EEPROM.
2) Lectura de EEPROM.
3) Escritura de EEPROM.

Los ejemplos e arriba son como que se recorren toda el mapa de memoria, en mi caso quiero usar solo una zona de memoria en concreto. Esa es la cuestión.




Seguiré investigando...
...cualquier ayudita en vienbenida.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Arduino y Raspberry Pi

Cerrar
Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos » Arduino y Raspberry Pi

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.