COMUNIDAD DE ELECTRONICOS
Hola eres nuevo,
registrate y disfruta el nuevo foro
de electronica en donde podras dar y recibir informacion de electronica,
y asi mismo hacer tus preguntas para recibir una respueta.
Recuerda que si eres tecnico,Ingeniero o estudiante hay un rango
especial para ti, es gratis solo registrate.
DISFRUTALO
COMUNIDAD DE ELECTRONICOS
Hola eres nuevo,
registrate y disfruta el nuevo foro
de electronica en donde podras dar y recibir informacion de electronica,
y asi mismo hacer tus preguntas para recibir una respueta.
Recuerda que si eres tecnico,Ingeniero o estudiante hay un rango
especial para ti, es gratis solo registrate.
DISFRUTALO
COMUNIDAD DE ELECTRONICOS
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

COMUNIDAD DE ELECTRONICOS

Foro Sobre Reparación de Electrónica de Consumo: TV, Audio, Video, Hardware...
 
ÍndiceBuscarÚltimas imágenesRegistrarseConectarse

 

 Ayuda con la programación en Energía

Ir abajo 
AutorMensaje
Alumno34
Principiante
Principiante



Masculino Mensajes : 1
Fecha de inscripción : 27/01/2016
Edad : 33

Ayuda con la programación en Energía Empty
MensajeTema: Ayuda con la programación en Energía   Ayuda con la programación en Energía Icon_minitimeMiér Ene 27, 2016 6:04 pm

Buenas tardes, somos un grupo de alumnos que estamos realizando un proyecto para una asignatura de la universidad bastante sencillo para alguien experto, pero complicado para nuestros conocimientos. Trata de un dado electrónico, que mediante una señal analógica emitida por un acelerómetro y posteriormente acondicionada a digital, enciende 7 leds de forma aleatoria hasta pararse. Quedándose encendido un "número" hasta que el acelerómetro no reciba de nuevo una señal. De forma resumida, queremos simular la tirada de un dado.

El problema viene, que al cargar el programa adjunto en el launchpad MSP430, la salida que obtenemos es únicamente, que se enciendan dichos leds en forma de número aleatoriamente, pero sin pararse y sin que interprete ninguna señal del acelerómetro.

Por favor, pido toda la ayuda que sea posible con el programa. Estaremos enormemente agradecidos.
Adjunto el código:

void setup()
{

 // Configurar salidas de los LEDS (falta asignar a los numeros de pines concretos
  // Hay que cambiar los numeros de las salidas y entradas según vayan a ser los nuestros
   pinMode (2, OUTPUT);
   pinMode (3, OUTPUT);
   pinMode (4, OUTPUT);
   pinMode (5, OUTPUT);
   pinMode (6, OUTPUT);
   pinMode (7, OUTPUT); 
   pinMode (15, INPUT);
   pinMode (14, OUTPUT);
   
  //Inicializa el generador de numeros aleatorios, esto genera un ruido aleatorio
  //en función de la entrada analógica
   randomSeed(analogRead(0));
   
  //Apaga todos los leds
   digitalWrite (2, LOW);
   digitalWrite (3, LOW);
   digitalWrite (4, LOW);
   digitalWrite (5, LOW);
   digitalWrite (6, LOW);
   digitalWrite (7, LOW);
   digitalWrite (14, LOW); 
   

}
void escribe_dado (char num) {
  //Escribe numero en el dado (igual que al principio, falta definir
  //que pines son cada LED para encenderlos apropiadamente)
  switch (num) {
            
    case 1: //Muestra el numero 1
            digitalWrite (2, HIGH);
            digitalWrite (3, LOW);
            digitalWrite (4, LOW);
            digitalWrite (5, LOW);
            digitalWrite (6, LOW);
            digitalWrite (7, LOW);
            digitalWrite (14, LOW);           
            break;
            
    case 2: //Muestra el numero 2
            digitalWrite (2, LOW);
            digitalWrite (3, LOW);
            digitalWrite (4, HIGH);
            digitalWrite (5, LOW);
            digitalWrite (6, LOW);
            digitalWrite (7, LOW); 
            digitalWrite (14, HIGH); 
            break;
            
    case 3: //Muestra el numero 3
            digitalWrite (2, HIGH);
            digitalWrite (3, LOW);
            digitalWrite (4, HIGH);
            digitalWrite (5, LOW);
            digitalWrite (6, LOW);
            digitalWrite (7, LOW); 
            digitalWrite (14, HIGH);
            break;
            
    case 4: //Muestra el numero 4
            digitalWrite (2, LOW);
            digitalWrite (3, HIGH);
            digitalWrite (4, HIGH);
            digitalWrite (5, LOW);
            digitalWrite (6, LOW);
            digitalWrite (7, HIGH);
            digitalWrite (14, HIGH);  
            break;
            
    case 5: //Muestra el numero 5
            digitalWrite (2, HIGH);
            digitalWrite (3, HIGH);
            digitalWrite (4, HIGH);
            digitalWrite (5, LOW);
            digitalWrite (6, LOW);
            digitalWrite (7, HIGH);
            digitalWrite (14, HIGH);  
            break;
            
    case 6: //Muestra el numero 6
            digitalWrite (2, LOW);
            digitalWrite (3, HIGH);
            digitalWrite (4, HIGH);
            digitalWrite (5, HIGH);
            digitalWrite (6, HIGH);
            digitalWrite (7, HIGH);
            digitalWrite (14, HIGH); 
            break;
        
    default:
    case 0:  //Apagar todos los leds
            digitalWrite (2, LOW);
            digitalWrite (3, LOW);
            digitalWrite (4, LOW);
            digitalWrite (5, LOW);
            digitalWrite (6, LOW);
            digitalWrite (7, LOW);
            digitalWrite (14, LOW); 
            break;
            
  }
  
 
}
void loop()
{
  //No hace nada hasta que la señal de entrada  que viene del acelerómetro ya filtrada
  //pase un cierto umbral de activación (señal analogica entre 0 y 1023)
  while (analogRead(0)<510);
   // tiempo de espera
   int waitTime=1;
   int espera=1;
  //Definimos el tiempo de espera inicial
  waitTime=2;
  // Bucle que simula la oscilación del dado antes de quedarse en
  //un número fijo cuando movemos el sensor, imita "tirar el dado"
 while(waitTime<1000)
 {
    int valor;  // definimos una variable valor
    valor=random(0,6); //le damos un valor aleatorio
  escribe_dado (valor); //llamando a la función escribe dado que he definido antes
  //muestra la cara del dado en función del número que haya salido
  waitTime=waitTime*2;  //incrementamos el valor de tiempo de espera
  // esto es para que en cierto momento salga del bucle cuando pase un cierto tiempo 
  }
delay(waitTime);//controla que la variación de la cara se vea durante unas decimas de segundo


 
}

//RESUMEN: Falta asignar que va en cada pin, eso es mirando simplemente el conexionado
//del launchpad, comprobar también como poner la señal de activación para que empiece a funcionar
Volver arriba Ir abajo
 
Ayuda con la programación en Energía
Volver arriba 
Página 1 de 1.
 Temas similares
-
» Tipos de Energia
» alimentar 2 circuitos distintos voltajes misma fuente de energia
» Necesito ayuda.
» Toshiba 42wlg66 despues de reparar fuente sigue sin encender.
» Ayuda con ESC casero

Permisos de este foro:No puedes responder a temas en este foro.
COMUNIDAD DE ELECTRONICOS :: FORO DE AYUDA :: Ayuda sobre proyectos-
Cambiar a: