Problema con codigo arduino :S

Iniciado por Debci, 30 Mayo 2010, 12:29 PM

0 Miembros y 1 Visitante están viendo este tema.

Debci

Hola a todos, probando cosillas con mi arduino, compré unos mini pushButtons y los inserté en mi protoboard, en concreto uno, con el siguiente montaje:

Alimentación 5 V hasta llegar a una patilla del boton que limita el paso de este voltaje, y de la otra patilla sale a una entrada digital, la del pin2, y con el siguiente codigo quiero hacer que cuando el pin de entrada detecte algo empieze el fadding del led en la salida 11.

La cosa es que arduino hace el fadding sin pulsar el boton, nada mas encender el aparatito ya empieza, aqui el codigo que he compuesto:

Código (cpp) [Seleccionar]

int ledPin = 11;    // LED connected to digital pin 9
int buttonPin = 2;
int value = 0;
void setup()  {

pinMode(buttonPin, INPUT);
}

void loop()  {
  // fade in from min to max in increments of 5 points:
  while(digitalRead(buttonPin) == HIGH)
  {
  value = digitalRead(buttonPin);
  Serial.print(value);
 
  for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {
    // sets the value (range from 0 to 255):
    analogWrite(ledPin, fadeValue);         
    // wait for 30 milliseconds to see the dimming effect   
    delay(30);                           
  }


  // fade out from max to min in increments of 5 points:
  for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {
    // sets the value (range from 0 to 255):
    analogWrite(ledPin, fadeValue);         
    // wait for 30 milliseconds to see the dimming effect   
    delay(30);                           
  }
  }
}


Alguien puede decirme en que estoy fallando?


Saludos

SOMBRIO

A simple vista parece bien. por que no declaras ledpin como salida

Mas bien pienso que el problema es en el hardware por que si al encenderlo realiza el bucle por que no entre la entrada de la patilla del boton que va a el pin de arduino metes una resistencia a masa a la mejor esta iniciando como lectura positiva

Saludos

IRQL less or equal

@synthesize

Tengo que revisar mas ese code, de todas formas, he visto esto:

  Serial.print(value);

En vez de usar Serial.print, es mejor que uses Serial.println.

println()

Prints data to the serial port as human-readable ASCII text followed by a carriage return character (ASCII 13, or '\r') and a newline character (ASCII 10, or '\n'). This command takes the same forms as Serial.print().

print()

Prints data to the serial port as human-readable ASCII text. This command can take many forms. Numbers are printed using an ASCII character for each digit. Floats are similarly printed as ASCII digits, defaulting to two decimal places. Bytes are sent as a single character. Characters and strings are sent as is.




Debci

#3
Es lo que no entiendo porque se meten resistencia en terminal de masa?
He visto varios tutos que lo hacen, sin embargo no se porque.
A la patilla masa del led, presupongo no?
De cuanto le emto la resistencia? 1k Ohm?
Saludos

SOMBRIO

Cita de: ..::| D3Bć1 |::. en 30 Mayo 2010, 19:17 PM
Es lo que no entiendo porque se meten resistencia en terminal de masa?
He visto varios tutos que lo hacen, sin embargo no se porque.
A la patilla masa del led, presupongo no?
De cuanto le emto la resistencia? 1k Ohm?
Saludos

Tu proyecto debe llevar dos resistencias mira una va a el led entre la patilla o salida de arduino hacia la patilla positiva del led ahi debes meter una resistencia de 220 ohms o comunmente 1kohm ¿POR QUE? para regular la intensidad que va a pasar por el led de lo contrario se va a fundir todo esto por la ley de ohm lo puedes calcular

La otra resistencia debe de ir directo de la masa a la pata del arduino este debe de ser mayor por que solo queremos inducir una pequeña señal que le avise a nuestro aparatito que estamos en un nivel de low esta debe de ser de 10kohms y en esa misma pata del arduino debe de ir el contacto. sin miedo no va a haber ningun corto al haber una señal mayor de corriente esta predominara y sera la lectura que tomara arduino

Imaginate que el micro debe leer valores de .0123v o de 3.846v es muy sensible a cualquier variacion inclusive del ambiente por cargas que pueda sentir si pones tu dedo sobre una patilla este tomara un valor distinto es por eso que no tomara una señal de 0V almenos que tu se lo indiques

Tambien se puede hacer de forma inversa las resistencias a positivo

Espero que te sirva de ayuda Suerte y Saludos
IRQL less or equal