Show Posts
Pages: [1]
1  International / Hardware / Re: Arduino quemada? on: September 06, 2013, 12:05:48 pm
Posiblemente se ha quemado el controlador. Para asegurarte de que no es otra cosa mide primero , poniendo 12v en la entrada externa, que las patas de 5v tiene eso (+-10% está bien) y la de 3.3v también. Si no van bien necesitas otro arduino.
2  International / Proyectos / Re: por favor suplico su ayuda con mi trabajo on: May 28, 2013, 02:07:26 am
Hola verlassen.
Lo que impide que funcione correctamente son las instrucciones delay.
Leete el sketck de ejemplo blink.
Cuando lo entiendas, lee blinkwithoutdelay.
Y cuando lo entiendas verás porque no funciona(... como quieres que funcione)

Revisa el código que has hecho y ya me dirás smiley
3  International / Proyectos / Re: ayuda con registro simultaneo con entradas analogicas on: May 24, 2013, 11:21:55 am
Hola. Yo también estaba pensando en un proyecto que necesita leer dos señales a la vez. La dificultad es que al cambiar de pin de digitalización hay que deshechar la primera lectura. Parece que el ADC puede estar en medio de una lectura y entonces no da un valor correcto.
 Estaba pensando en dos opciones :
Montar un circuito doble para tomar una muestra simultáneamente tipo sample/hold (o algo así) y digitalizar con calma , o bien montar un restador analógico y digitalizar la diferencia de las dos señales.
Aún no tengo claro como tratar los datos en la segunda opción  pero es más fácil de montar.
4  International / Proyectos / Re: mutitarea on: January 09, 2013, 06:16:15 pm
delay sirve para detener la ejecución  : delay(500) para 0.5 segundos.

millis() se usa de otra forma, devuelve el número de milisegundos que hace que se encendió arduino, puedes compararlo con un tiempo anterior y decidir cual de las acciones vas a hacer ahora (detectar , encender / apagar el motor, no hacer nada ...)
compara el funcionamiento de blink y blinkwithoutdelay como dijo Sergegsx.
5  International / Proyectos / Re: Ayuda Control Motor de pasos on: November 30, 2012, 05:42:46 pm
Hola Sagdec.

Por lo que entiendo, el motor de pasos da 4 pasos, uno cada 500 milisegundos (por el delay) cada vez que recibe el valor H
entonces se para hasta que hay otra H

es así?
6  International / Proyectos / Re: Porque no funciona este codigo?? on: November 28, 2012, 03:22:25 pm
Hola hawai50

a lo mejor es que el código no hace las cosas como piensas que debe hacerlo

Para empezar, si no hay ningún dato en el puerto serie, no entra en el while, y va a escribir directamente lo que hay en tramaleida.
cuando introduzcas 2 caracteres verás el segundo como el primero de la linea.
si envías al puerto serie 1234567, deberías ver
00:00 (o lo que coincida que haya en ese array en ese momento, nunca se sabe)
00:00
.... (hasta que envías 2)
20:00
20:00
.... (hasta que envías 3)
23:00
...
23:50
....
23:56
y cuando llegues a 7, vuelta a empezar (pero ahora si sabes lo que hay en el array)


prueba a hacer algo como :

define una variable que sirva para marcar que hay datos válidos para enviar, inicializada a algo que sea no
cuando llegues a 7 datos recibidos, pon esa variable a si (dentro del while)
cuando hay datos para enviar, escribe la salida, y pones otra vez la variable a no para que arduino sepa que no hay que enviar nada mas hasta llenar el array tramaleida otra vez

recuerda que loop() empieza otra vez casi inmediatamente después de haber terminado
7  International / Proyectos / Re: simulando disparos on: November 27, 2012, 06:34:59 pm
Hola Cheyene

Creo que lo que quieres hacer se puede hacer de esta forma, espero que no sea demasiado complicado....

Code:
int salidapwm[]={10,11};
int valorpwm[]={0,0};
//por ejemplo
    //puedes decidir cuando se disparan...
long disparoled[]={10000,12000};
const int numsalidas = 2;


int fadeAmount = 5;
int brightness = 250 ;


long previousMillis = 0;        // will store last time LED was updated


long interval = 1000;           // interval at which to blink (milliseconds)

void setup() {
  // set the digital pin as output:
  //EDIT se me había olvidado :P
  //pinMode( salipwm1, OUTPUT);
  //pinMode( salipwm2, OUTPUT);
  int ix;
  for (ix = 0; ix < numsalidas ; ix++)
  {
      pinMode( salidapwm[ix], OUTPUT);
  }
}

void loop()
{
 
  unsigned long currentMillis = millis();
  int ix;

  //hace un paso cada interval milisegundos
  if(currentMillis - previousMillis > interval) {
   
    previousMillis = currentMillis;

    //recorremos las salidas para actualizarlas
    for (ix = 0; ix < numsalidas; ix++)
    {
      //es hora del disparo?
      if (currentMillis > disparoled[ix])
      {
        //al entrar en fade se va a encender a este valor
        valorpwm[ix] = 255;
        //puedes poner 255 + fadeAmount , ya que se va a descontar al entrar en fade
        //programa el próximo disparo de este led
        disparoled[ix] = currentMillis + (long)(300000 / fadeAmount);
      }
      //como loop se ejecuta continuamente, la próxima vez que entre en el for seguirá reduciendo valorpwm en la salida
      //actualiza el estado de esta salida un paso cada vez que pasa por aqui
      fade(ix);
    }
  }

}

//reduce el brillo del pin numero ix
void fade(int ix)
{
  if (valorpwm[ix] > 0)
  {
    valorpwm[ix] = valorpwm[ix] - fadeAmount;
    //añade seguridad para no pasarse por accidente
    if (valorpwm[ix] < 0)
    {
      valorpwm[ix] = 0;
    }
    analogWrite(salidapwm[ix],valorpwm[ix]);
    //se ha reducido un paso, la próxima vez se reduce mas... si aun no es 0
  }
}

espero que sirva de ayuda
8  International / Proyectos / Control de N2 -N leds usando N pin (+ interfaz 3 hilos en progreso) on: November 27, 2012, 05:32:00 pm
Este es mi primer post con un proyecto de arduino...

Este proyecto permite controlar individualmente N2 - N LED usando N pines ( http://en.wikipedia.org/wiki/Charlieplexing según he leído) usando interrupciones (he usado el Timer1).
Son dos clases.
Por una parte matrixDisplay simplifica el acceder a cada LED indicando una coordenada X, una Y y el valor encendido (3 - 2 o 1) y apagado (0). se puede escribir y leer el estado de cada Led
Adicionalmente, MxLedDisplay incorpora funciones de texto (compatible con LcdDisplay en casi todo)

el pero es :
no existe una matriz de led hardware única (que yo sepa) y cada un monta los led como quiere o puede.
para funcionar correctamente hace falta configurar las librerías.

a) matrixDisplay.h
Como he hecho 2 matrices (6x5 y 6x15) he dejado 2 configuraciones diferentes
NPIN - número total de pines que se van a usar
NFILAS - geometría de la matriz de control X
NCOLUMNAS - geometría de la matriz de control Y

se pueden configurar matrices cd M*N LED usando M+N pines, leer el fichero para saber mas(no lo he probado)
se puede configurar un conjunto de registros de desplazamiento , lo que se dice un bus de 3 hilos (tampoco lo he probado)

b) matrixDisplay.cpp
unsigned char leds[NFILAS][NCOLUMNAS] PROGMEM
aquí se describe como están conectados los Led a las salidas. haz una definición para cada conjunto de leds distinto que hagas
(mas detalles en los comentarios)

en el constructor poner un case en el switch(NPIN) para el número de pin que uses
(lo mismo en MxLedDisplay.cpp)
c) font/font_*
He hecho 3 archivos de fuentes, se debe elegir uno antes de compilar (se copia en font.cpp)
son fáciles de personalizar .

d) función ISR el el script inicial (ver ejemplos)

Aún quedan cosas que pulir

un par de imágenes y las librerías

9  Using Arduino / LEDs and Multiplexing / Re: How do i light many LEDs and control them individually on: November 16, 2012, 12:41:31 pm
Some years ago I made a small project using 12 LED powered on 4 pin on a PIC.
Now I'm making a bigger library for Arduino in order to contol, using N pin and POV, Nx(N-1) LED. I made a 90 led pannel (15x6) driven by 10 pin. Excepting for N resistors and N diodes, no extra hardware is required.
Now I'll try to make a 3 wire interface and test this library. I'll put here a link when finished.

Not yet finished... here http://arduino.cc/forum/index.php/topic,134577.msg1011968.html#msg1011968
Pages: [1]