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

Temas similares

07/06/2014 #1


problema con proyecto de piano con PIC16F84A
Hola, necesito ayuda con un proyecto que tengo que hacer, es hacer un piano electrónico con el PIC16F84A, el proyecto consiste en que tiene 5 push-buttons, presiono 1 y suena una melodía, presiono los otros 4 y suenan distintas notas musicales, ya hice el código de programación en c compiler y con el simulador de proteus si funciona, pero al momento de hacerlo físico no quiere funcionar, por favor ayudenme.
El codigo es el siguiente:

Código:
#include <16f84a.h>
#use delay (clock=4000000, RESTART_WDT)
#include <TONES.c>
#byte porta=5
#byte portb=6
int corchea=250,fusa=62, S_corchea=125;
long negra=500,blanca=1000,redonda=2000;
void main()
{
set_tris_a(1);
set_tris_b(0);
output_b(0x01);
while (1)
{
if (input(PIN_A0)) 
{
generate_tone(C_NOTE[3], negra);
generate_tone(C_NOTE[3], negra);
generate_tone(F_NOTE[3], negra);
generate_tone(A_NOTE[3], negra);
generate_tone(G_NOTE[3], negra);
generate_tone(F_NOTE[3], negra);
generate_tone(G_NOTE[3], negra);
generate_tone(D_NOTE[3], negra);
generate_tone(E_NOTE[3], negra);
generate_tone(F_NOTE[3], negra);
generate_tone(G_NOTE[3], negra);
generate_tone(F_NOTE[3], negra);
generate_tone(E_NOTE[3], negra);
generate_tone(C_NOTE[3], negra);
generate_tone(C_NOTE[3], negra);
generate_tone(F_NOTE[3], negra);
generate_tone(A_NOTE[3], negra);
generate_tone(G_NOTE[3], negra);
generate_tone(F_NOTE[3], negra);
generate_tone(G_NOTE[3], negra);
generate_tone(D_NOTE[3], negra);
generate_tone(E_NOTE[3], negra);
generate_tone(F_NOTE[3], negra);
generate_tone(F_NOTE[3], negra);
generate_tone(E_NOTE[3], negra);
generate_tone(E_NOTE[3], negra);
generate_tone(D_NOTE[3], negra);
generate_tone(C_NOTE[3], negra);
generate_tone(D_NOTE[3], negra);

}
if (input(PIN_A1))
{
generate_tone(C_NOTE[1], corchea);
}
if (input(PIN_A2))
{
generate_tone(D_NOTE[1], corchea);
}
if (input(PIN_A3))
{
generate_tone(E_NOTE[1], corchea);
}
if (input(PIN_A4))
{
generate_tone(F_NOTE[1], corchea);
}
}
} ...
07/06/2014 #2
Moderador general

Avatar de Fogonazo

Comprime tu simulación de Proteus con Winzip o Winrar y la subes al Foro
07/06/2014 #3
Moderador

Avatar de D@rkbytes

daxeliin dijo: Ver Mensaje
con el simulador de proteus si funciona, pero al momento de hacerlo físico no quiere funcionar
Te falta poner la palabra de configuración.
La puedes poner por separado, así como esto:
#FUSES XT
#FUSES PUT

// Etcétera.
O así:
#FUSES XT, PUT // Etcétera.
Pero para simplificar y por tratarse de ese PIC, puedes tan sólo escribir esto:
#use delay(crystal = 4MHz)
Con esta declaración el compilador asume que se usará un cristal de 4MHz y establece los fuses adecuados.

También puedes usar el puerto B para los pulsadores y así evitas poner resistencias pull-up/down
Como la salida de los tonos es por el pin RB0, puedes usar de RB1 en adelante.
Sólo tendrás que activar las resistencias pull-up internas del puerto B con port_b_pullups(true);
Y deberás cambiar la forma de sensar los pines que deberán tener los pulsadores hacia VSS.
Antes con pull-down externa:
if (input(PIN_A1))
Ahora con pull-ups internas:
if (!input(PIN_B1))

No olvides poner el pin 4 (MCLR) hacia VDD directamente o con una resistencia de 4.7k o 10k.

Suerte.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

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