Show Posts
Pages: [1] 2
1  International / Software / Modificar registros durante una interrupción externa on: February 16, 2011, 07:47:13 am
Hola a todos,

estoy realizando la sincronización de una serie de nodos arduino y para ello, voy a usar interrupciones. La idea es la siguiente:

- Un nodo centralizado genera pulsos de sincronización cada x tiempo
- Otros dos nodos detectarán esta interrupción y, procederán a setear el registro TIMSK0 a 0.

Mi pregunta es la siguiente, ¿es posible poner a 0 TIMSK durante la interrupción? He leído que todas las funcionalidades de tiempos se deshabilitan, y no sé si el uso de los registros es una de ellas.

El código sería el siguiente:
Code:

int pin = 5;
volatile boolean estado = HIGH;

extern volatile unsigned long timer0_overflow_count;
unsigned long ticks, microseconds1, microseconds2;




void setup()
{
  Serial.begin(57600);
  pinMode(pin, OUTPUT);
  //attachInterrupt(0, parpadeo, LOW);
}

void loop()
{
  digitalWrite(pin, estado);
  microseconds1=micros();
  estado=HIGH;
  microseconds2=micros();
  
  Serial.println(microseconds2-microseconds1);
}

void parpadeo()
{
  estado=LOW;
  TIMSK=0;
}
2  Forum 2005-2010 (read only) / Syntax & Programs / Re: Char array to int on: December 15, 2010, 04:31:51 am
Thanks Korman,

 I´m trying to do it, but atoi allways give me a zero value. My code is the follow:

Quote
      char message[10];

        // now fill our zb rx class
        xbee.getResponse().getZBRxResponse(rx);

        nss.println("Got an rx packet!");

        if (rx.getOption() == ZB_PACKET_ACKNOWLEDGED) {
          // the sender got an ACK
          nss.println("packet acknowledged");
        } 
        else {
          nss.println("packet not acknowledged");
        }

        nss.print("checksum is ");
        nss.println(rx.getChecksum(), HEX);

        nss.print("packet length is ");
        nss.println(rx.getPacketLength()-6, DEC);

        for (int i = 6; i <= rx.getDataLength(); i++) {
          nss.print("frame data [");
          nss.print(i, DEC);
          nss.print("] is ");
          char stringOne =  char(rx.getData());
          stringOne = hexNibbleToChar(stringOne);
          
          //If we are in the final character... we put in it '\0'
          if(i==rx.getDataLength()){
            message[i-6] = (char)'\0';
            nss.print("Final ");
            nss.println(message[i-6], DEC);
          }
          else
            message[i-6] = stringOne;
            
          nss.println(rx.getData(), DEC);
          nss.print(message[i-6], DEC);
          }
          
          nss.println("");      
          nss.print("TimeStamp ");      
          nss.println(atoi(message)); //==> Allways returns zero smiley-sad        
        



What is bad in my code???

Thanks again!!!
3  Forum 2005-2010 (read only) / Syntax & Programs / Char array to int on: December 14, 2010, 07:51:28 am
Hi!

I receive with my Arduino FIO (as a ZigBee packet ) a char array that contents an int value. For example:

I receive char message[]={1,2,3,4,5}. I want to transform this array to an int number, the number would 12345.

How can I to do this transformation?

Thanks!
4  Forum 2005-2010 (read only) / Español / Re: Conexión entrada analógica tumba la señal on: September 28, 2010, 06:17:41 am
Buenas noticias!!!

He colocado un condensador de 1uF y ya no se tumba la señal!!! Ya puedo medir el pulso con mi arduino  smiley-grin.

5  Forum 2005-2010 (read only) / Español / Re: Conexión entrada analógica tumba la señal on: September 28, 2010, 06:16:36 am
He probado lo que me comentabas pero sigue anulando la señal. La configuración que tengo es la siguiente:

  const int sensePin = 9;
 
  pinMode(sensePin, INPUT);
  digitalWrite(sensePin, HIGH);

  newHeartReading = analogRead(sensePin);
6  Forum 2005-2010 (read only) / Español / Re: Conexión entrada analógica tumba la señal on: September 27, 2010, 09:11:01 am
Genial pofenas!

Mañana cuando vaya al laboratorio lo pruebo y te comento. Si todo va bien os daré detalles del proyecto en breve  smiley-grin.

Gracias!
7  Forum 2005-2010 (read only) / Español / Re: Conexión entrada analógica tumba la señal on: September 27, 2010, 02:31:04 am
Gracias por responder,

no tengo ningún pin digital en uso. Estoy usando el A7 (analógico). La señal que estoy midiendo está en torno a 0.5V.

Y bueno, lo que comentaba, en el momento que pongo el arduino conectado al circuito, en el osciloscopio deja de aparecer señal. Es como si al conectar el arduino toda la intensidad se desviara a este.
8  Forum 2005-2010 (read only) / Español / Conexión entrada analógica tumba la señal on: September 24, 2010, 07:00:38 am
Hola a todos,

estoy haciendo un pulsioximetro con arduino. Tras diseñar un circuito con una serie de etapas de amplificación y verificar su correcto funcionamiento en el osciloscopio ha llegado la hora de hacer la lectura con el arduino. El problema es que al conectar la entrada analógica a la salida de mi circuito se pierde la señal (en el osciloscopio) y el arduino lee un bonito 0.


Simplemente uso estas dos líneas:

//Pin A7 para lectura
const int sensePin = 7;
//lectura
newHeartReading = analogRead(sensePin);

¿Sabéis qué estoy haciendo mal?

gracias!
9  Forum 2005-2010 (read only) / Español / Lectura de fototransistor con Arduino on: September 14, 2010, 06:02:29 am
Hola a todos,

necesitaría realizar la lectura de un fototransistor con mi arduino FIO. Con el osciloscopio tengo una señal de 660mV p-p aproximadamente y me gustaría amplificarla de manera que pueda leerla en el arduino. ¿Podéis echarme un cable?

El montaje que tengo es el siguiente

+12V --- > Resistencia 100K --- > Osciloscopio/Arduino Pin7 ---> Colector ---> Emisor ---> GND
10  Forum 2005-2010 (read only) / Español / Re: Arduino y Dos Diodos enfrentados. ¿Cómo encender? on: September 03, 2010, 05:37:13 am
Gracias de nuevo compublot!

Finalmente he tenido que usar un TL084, pero vamos es lo mismo.

El esquema que he utilizado para montarlo es el siguiente:



Y las conexiones que realizo son:

- Vout del amplificador al PIN 7 del arduino para la lectura analógica.
- IN - del amplificador al cátodo del fotodiodo
- IN + a GND del Arduino
- Ánodo del fotodiodo a V-
- VCC+ a una fuente con +9V
- VCC- a una fuente con -9V

- En el circuito de amplificación he colocado una resistencia de 1Mohm.


Leo los valores con el arduino pero aun parece que no son correctos... lo mismo te marca 0 que 1023  smiley-sad

La electrónica me está torturando!!!
11  Forum 2005-2010 (read only) / Español / Re: Arduino y Dos Diodos enfrentados. ¿Cómo encender? on: September 02, 2010, 11:45:16 am
Finalmente ha funcionado sin usar el puente en H.

Estoy intentando conectar una sonda de pulsioximetro Nellcor al arduino para hacer la lectura de pulso con una sonda convencional. Ya tengo montado todo el cableado de encendido y apagado de los leds Rojo e Infrarrojo y el siguiente paso ha sido hacer la lectura del fotodiodo.

La configuración de la sonda es la siguiente:

Pin 1, 4, 6, 8 - no connection
Pin 2 - anode of the IR LED, cathode of the red LED - usually red wire
Pin 3 - cathode of the IR LED, anode of the red LED - usually black wire
Pin 5 - photodiode anode - usually white wire
Pin 7 - shield, connects to copper shield over the photodiode
Pin 9 - photodiode cathode - usually green wire


Como os comentaba los pines 2,3 ya están debidamente conectados y se encienden tanto el diodo LED como el IR. Para hacer la lectura del fotodiodo he habilitado el puerto 7 del arduino como entrada analógica y lo conecto con el pin 5 de la sonda. Los pines 7,9 de la sonda los llevo a GND.

Las lecturas que estoy tenieno son erróneas, pues simplemente encendiendo la sonda y los valores que aparecen son totalmente aleatorios.

¿Cómo se tiene que leer un fotodiodo en arduino?

Gracias de nuevo!

12  Forum 2005-2010 (read only) / Español / Re: Arduino y Dos Diodos enfrentados. ¿Cómo encender? on: August 31, 2010, 04:07:58 am
Iba a ir ahora mismo a por el puente en H, pero he visto las nuevas respuestas.

La solución que me proponéis la intenté el otro día, pero dependiendo del diodo que tenga que encender una de las patillas debe ir a tierra. Lo probé pero no funciona.

¿Estaré haciendo algo mal?

13  Forum 2005-2010 (read only) / Español / Re: Arduino y Dos Diodos enfrentados. ¿Cómo encender? on: August 27, 2010, 10:06:05 am
Gracias compublot!!!

Ya te contaré si ha ido bien. 8-)
14  Forum 2005-2010 (read only) / Español / Re: Arduino y Dos Diodos enfrentados. ¿Cómo encender? on: August 26, 2010, 05:45:36 pm
¿Existe algún integrado económico del puente H?

Gracias!!!
15  Forum 2005-2010 (read only) / Español / Arduino y Dos Diodos enfrentados. ¿Cómo encender? on: August 26, 2010, 11:39:22 am
Hola a todos,

tengo un Arduino FIO y una sonda con dos diodos enfrentados (Diodo rojo y Diodo Infrarrojo). La sonda sólo tiene dos cables, con los que polarizas la corriente en un sentido para encender el diodo rojo y en el otro sentido para polarizar el diodo infrarrojo.

Los dos leds los quiero gobernar con el arduino de manera que encienda uno de ellos y realice una lectura, y encienda el otro y realice otra lectura.

Si alimento con una entrada digital a GND, como es lógico, sólo puedo encender uno de ellos. Teniendo que intercambiar la polaridad para encender el otro.

¿Tenéis alguna idea de como puedo hacer para invertir la polaridad?

Gracias smiley-wink
Pages: [1] 2