Loading...
  Show Posts
Pages: [1]
1  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.
2  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í?
3  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
4  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
5  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

6  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]