Pages: [1]   Go Down
Author Topic: codigo incorrecto o placa estropeada?  (Read 804 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

os comento, empece con arduino hace poco,  se algo d C pero nada de electrónica..
se me ocurrió programar un secuencidor, es decir, un pianillo que memorizase la secuencia de notas tocadas y que las repita continuamente.
hace un par de dias conseguí hacerlo funcionar, pero ayer al volver a montar el circuito  la lie y conecte la salida de 5v directa a los pines INPUT.. y "casualidad", el programa que me habia funcionado el dia anterior dejo de funcionar.
así q no se si el problema esta en el codigo o es que queme la placa..

este es el codigo:
Code:

#define NOTE_C3  131
#define NOTE_D3  147
#define NOTE_E3  165
#define NOTE_F3  175
#define NOTE_G3  196
#define NOTE_A3  220
#define NOTE_B3  247


int bot1=2; 
int bot2=3; 
int bot3=4;
int bot4=5;
int bot5=6;
int bot6=7;
int bot7=8;

int voz=13;
int red=12;
int green=11;


int cadena[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int memCadena[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};

void setup()
{
  Serial.begin(9600);
 
 
  pinMode (bot1,INPUT);
  pinMode (bot2,INPUT);
  pinMode (bot3,INPUT);
  pinMode (bot4,INPUT);
  pinMode (bot5,INPUT);
  pinMode (bot6,INPUT);
  pinMode (bot7,INPUT);
 
  pinMode (voz,OUTPUT);
  pinMode (red,OUTPUT);
  pinMode (green,OUTPUT);
}

void loop()
{
  //IF botones
 
  for(int i=0;i<16;i++)
  {   
     
  if(digitalRead(bot1)==HIGH)
    {
     cadena[i]=1;
     memCadena[i]=cadena[i];
    }
   if(digitalRead(bot2)==HIGH)
    {
      cadena[i]=2;
      memCadena[i]=cadena[i];
    }
   if(digitalRead(bot3)==HIGH)
    {
      cadena[i]=3;
      memCadena[i]=cadena[i];
    }
   if(digitalRead(bot4)==HIGH)
    {
      cadena[i]=4;
      memCadena[i]=cadena[i];
    }
    if(digitalRead(bot5)==HIGH)
    {
      cadena[i]=5;
      memCadena[i]=cadena[i];
    }
       if(digitalRead(bot6)==HIGH)
    {
      cadena[i]=6;
      memCadena[i]=cadena[i];
    }
       if(digitalRead(bot7)==HIGH)
    {
      cadena[i]=7;
      memCadena[i]=cadena[i];
    }
    else
    {
      cadena[i]=memCadena[i];
    }
   
    Serial.print(cadena[i]);
   
    // IF notas
   
   
   if(cadena[i]==1)
    {
     tone(voz,NOTE_C3,50);
    }
     if(cadena[i]==2)
    {
     tone(voz,NOTE_D3,50);
    }
     if(cadena[i]==3)
    {
     tone(voz,NOTE_E3,50);
    }
     if(cadena[i]==4)
    {
     tone(voz,NOTE_F3,50);
    }
     if(cadena[i]==5)
    {
     tone(voz,NOTE_G3,50);
    }
     if(cadena[i]==6)
    {
     tone(voz,NOTE_A3,50);
    }
     if(cadena[i]==7)
    {
     tone(voz,NOTE_B3,50);
    }     
   
    //IF metronomo
   
    if(i%2==0)
    {
      digitalWrite(green,LOW);
      digitalWrite(red,HIGH);
    }
   if(i%2!=0)
  {
    digitalWrite(red,LOW);
    digitalWrite(green,HIGH);
  }
   
     delay(300);
   
  }
 
  Serial.println(".");
 
}
 

en princiopio el array cadena[ i ] deberia arrancar a cero, pero a mi me arranca con un valor de 3..

puede alguin probarlo y decirme si es problema de mi arduino o problema del codigo?

un saludo y gracias!
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

solo necesito que alguien carge el codigo en su anduino y me diga si la comunicacion serial le da 000000000...  o 333333.. como me da a mi,
no hace falta conectar nada al arduino, solo cargar el codigo.
Logged

Offline Offline
Sr. Member
****
Karma: 9
Posts: 252
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Prueba en tu arduino el código que ya viene de "Blink" para ver si el led en el pin 13 funciona correctamente.

Luego haz la prueba en los demás pines con un led y una resistencia acorde, para probar que todas las salidas estén funcionando de forma correcta.

Es la forma que se me ocurre que podrías probar en que estado está tu Arduino.
Logged

My 3x3x3 Led Cube

[url=http://arduino.cc/forum/index.php/topic,1642

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ya probé a jugar cin Blink,  y funciona correctamente..
pero al cargar el codigo de arriba hace cosas muy raras y bastante aleatorias, puede haberse jodido el "modo" INPUT?
o eso no tiene ni pies ni cabeza?
Logged

Offline Offline
Sr. Member
****
Karma: 9
Posts: 252
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

¿Las inputs, las tienes conectadas a botones cierto?

Estas mismas, recuerda que deberías conectarlas con un "PULL DOWN" creo que lo llaman así, una resistencia de unos 10K a tierra, para mantenerlas en LOW mientras no son pulsadas, y evitar esas "cosas raras" ya que quedarían flotando y dando lecturas erroneas.

¿Quizás sea eso lo que está pasando?
Logged

My 3x3x3 Led Cube

[url=http://arduino.cc/forum/index.php/topic,1642

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

pues si, era eso, al probar el código sin los pulsadores conectados daba valores raros. Pensaba que al no estar el circuito cerrado arduino los tomaría como LOW, pero no, no es así

muchas gracias!
Logged

Offline Offline
Sr. Member
****
Karma: 9
Posts: 252
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Si, yo también lo aprendí "a la fuerza" eso.

Lo que si existe y se puede hacer, es usar lo que se llama "PULL UP" sin tener que agregar resistencias uno en cada botón.

Si en el código, defines un pin como INPUT, pero a este lo haces HIGH, entonces se activará un PULL UP interno del microcontrolador, y los botones, en lugar de tu conectarlo a 5V, los conectas al tierra, entonces al presionarlos, esos INPUTS irán a LOW y al soltarlos volverán a HIGH

Con eso dicho, luego el código debería ser al reves, un input LOW sería igual a "Presionado" mientras que un input en HIGH sería que no lo estás presionando. Algo más confuso, pero evitas tener que lidiar con resistencias mientras haces las pruebas.
Logged

My 3x3x3 Led Cube

[url=http://arduino.cc/forum/index.php/topic,1642

Pages: [1]   Go Up
Jump to: