Show Posts
Pages: [1] 2 3 ... 34
1  International / Español / Re: problema conexion serial on: Today at 09:59:01 am
Hola.
Creo recordar que otra vez ayudé en un problema similar, y tal vez el problema sea que el puerto no implementa más que los pines tx y rx y el escáner "mire" también los otros para comenzar a funcionar. Prueba a ver si conectando la clavija del escáner al ordenador y puenteando los pines tx y rx al conector del arduino empiezas a recibir y enviar datos.
Si esto te funciona, tal vez continúe funcionando si desconectas después la clavija del ordenador (creo recordar que así le ocurría al otro forero).
Si el problema es el que cito, tal vez te pueda servir puentear entre sí ciertos pines (en principio los pines 7-RTS y 8-CTS)
2  International / Software / Re: Ayuda con PHP on: Today at 09:10:22 am
Deberías esforzarte un poco más en explicar lo que quieres hacer, porque yo al menos no lo termino de entender. ¿Entiendo que quieres conectar un arduino por un lado, un servidor de php por otro, y finalmente un cliente que acceda al servidor php y envíe/reciba del arduino?
Si es así ¿Cómo  iría conectado todo? ¿Todo a una red ethernet, arduino al server por serial?
Desde luego, como te ha dicho _jose_, es imposible correr un server php en el propio arduino.
Saludos.
3  International / Proyectos / Re: Proyecto: añadir sensores a un robot submarino on: Today at 06:43:34 am
¿Tienes el pin E del cacharro conectado a tierra?
¿Has cruzado los pines tx-rx del arduino respecto a los del cacharro?

Son preguntas chorras, pero muchas veces los fallos son una chorrada.

EDITO: sería interesante que mostraras cómo lo tienes actualmente conectado.
Saludos.
4  International / Proyectos / Re: Proyecto: añadir sensores a un robot submarino on: August 31, 2014, 06:35:04 pm
Hola.
Ya estoy de regreso por aquí, así que puedo intentar ayudarte de nuevo.
¿Siguen sin responderte los sensores?
¿Has metido algún serial.println en la funció sensors a ver qué ocurre?
5  International / Proyectos / Re: Proyecto: añadir sensores a un robot submarino on: August 12, 2014, 05:59:07 pm
El siguiente paso sería, en lugar de enviarlas por serial, tomar de las cadenas que recibimos de los dispositivos los datos numéricos propiamente dichos, que es lo que enviaremos posteriormente por i2c cuando nos lo requiera el maestro. Lo ideal sería guardar todos los datos numéricos, más el de temperatura en una estructura de datos apropiada. También podríamos enviar por i2c directamente las cadenas tal cual las recibimos de los dispositivos, pero creo que lo mejor es enviar sólo la "chicha", para no acaparar demasiado tiempo de device_loop en el master. Esta va a ser en principio lo único que haraá el esclavo en su loop: ir refrescando los datos numéricos en esa estructura. Finalmente, incluiremos la librería i2c y en la función onRequest, es decir, cuando nos lo pida el master, enviaremos esa estructura con los datos actuales. Con esto habremos finalizado en principio la programación del esclavo.

El "device" maestro creo que no debería ser muy complicado. Deberá solicitar datos al esclavo en su device_loop, e imprimirlos directamente en el monitor, si no me equivoco.

Bueno; creo que de momento hay para ir masticando, así que de momento lo dejo aquí.

Saludos.
6  International / Proyectos / Re: Proyecto: añadir sensores a un robot submarino on: August 12, 2014, 05:37:24 pm
Jeje; pues me pillas justo cuando voy a comenzar yo vacaciones, así que igual te dejo un poco huerfanito. smiley-razz smiley-razz smiley-razz

Para ir avanzando, te comento los pasos que deberías ir dando. Por lo que veo, los "cacharrillos" que has pillado funcionan recibiendo un comando por serial (el que nos interesa, en principio es el comando "R" que solicita una lectura). Previamente hay que seleccionar uno de los canales correspondientes al dispositivo que queremos leer. Lo que no sé aún es qué lectura devuelven; por eso no puedo avanzarte un poco más. Además, hay otro dispositivo aparte que es un sensor de temperatura.
Primeramente, creo que deberíamos programar en el loop del arduino esclavo un bucle que vaya seleccionando cada canal, enviando el comando r y recibiendo el resultado. Finalmente tomaremos la temperatura. De momento lo enviaremos por serial. Podría ser algo así, aunque está sin probar:

Code:
#include <AltSoftSerial.h>          //Include the software serial library 
AltSoftSerial altSerial;            //Name the software serial library altSerial (this cannot be omitted)

int s0 = 7;                         //Arduino pin 7 to control pin S0
int s1 = 6;                         //Arduino pin 6 to control pin S1

char sensordata[30];                 //A 30 byte character array to hold incoming data from the sensors
byte sensor_bytes_received=0;        //We need to know how many characters bytes have been received
float temp;                //where the final temperature data is stored

void setup() {
      pinMode(s1, OUTPUT);              //Set the digital pin as output.
      pinMode(s0, OUTPUT);              //Set the digital pin as output.
      pinMode(2, OUTPUT);               //Set pin 2 as an output
      Serial.begin(38400);              //Set the hardware serial port to 38400
      altSerial.begin(38400);           //Set the soft serial port to 38400
}

void loop(){
      for (int i=0; i<4; i++){
            open_channel(i);
            // tal vez sea necesario un pequeño delay aquí
            altSerial.print("R"); // No sé si será R o r o valdrán ambas. Solicita una lectura al canal que acabamos de abrir
            altSerial.print("\r");
            sensor_bytes_received=altSerial.readBytesUntil(13,sensordata,30); //we read the data sent from the Atlas Scientific device until we see a <CR>. We also count how many character have been received
            sensordata[sensor_bytes_received]=0;           //we add a 0 to the spot in the array just after the last character we received. This will stop us from transmitting incorrect data that may have been left in the buffer
            Serial.println(sensordata);                    //let’s transmit the data received from the Atlas Scientific device to the serial monitor   
      } 
      temp = read_temp();       //call the function “read_temp” and return the temperature in C°
      Serial.println(temp);
}

void open_channel(int canal){
      switch (canal) {
      case '0':
            digitalWrite(s0, LOW);
            digitalWrite(s1, LOW);
            break;
      case '1':
            digitalWrite(s0, HIGH);
            digitalWrite(s1, LOW);
            break;
      case '2':
            digitalWrite(s0, LOW);
            digitalWrite(s1, HIGH);
            break;
      case '3':
            digitalWrite(s0, HIGH);
            digitalWrite(s1, HIGH);
            break;
      }
}

float read_temp(void){   //the read temperature function
      float v_out;             //voltage output from temp sensor
      float temp;              //the final temperature is stored here
      digitalWrite(A0, LOW);   //set pull-up on analog pin
      digitalWrite(2, HIGH);   //set pin 2 high, this will turn on temp sensor
      delay(2);                //wait 2 ms for temp to stabilize
      v_out = analogRead(0);   //read the input pin
      digitalWrite(2, LOW);    //set pin 2 low, this will turn off temp sensor
      v_out*=.0048;            //convert ADC points to volts (we are using .0048 because this device is running at 5 volts)
      v_out*=1000;             //convert volts to millivolts
      temp= 0.0512 * v_out -20.5128; //the equation from millivolts to temperature
      return temp;             //send back the temp
}
7  International / Software / Re: COMPARACION DE BITS EN REGISTROS on: August 11, 2014, 05:55:36 pm
hola noter,
tienes razon es mas facil y mas legible por nosotros.
Estoi con esto de los timer y se pueden hacer muchas cosas con esto,
me gustaria hacerte una pregunta.
si TIFR1 es un registro de 8bits
y TOV1 es 1 bit
Y & es and
1<<TOV1 significa que TOV1 lo pongas a 1
como se compara la instruccion que has puesto?
que es lo que hace  1&1=1, es asi?
sino corrigeme por favor.
Otra cosa no consigo escribir el signo encima de la ñ
se que es alt+126 pero en el arduino no lo consigo
hay algun truco
gracias.
un saludo.



Deberías echar un vistazo a las operaciones a nivel de bit. No obstante intentaré darte unas nociones rápidas.
Efectivamente, TIFR1  es un registro de 8 bits.
TOV1 es un bit de ese registro. Para arduino es un número que indica en qué posición (0 - 7) está ese bit. No sé ahora mismo qué posición es, pero supongamos que es el bit 2 (es decir, tercera posición por la derecha, recordemos que la primera es el bit 0). Entonces si hacemos un desplazamiento de 1 (00000001) dos (TOV1) posiciones, obtendremos 00000100 (1<<TOV1) . Si hacemos un or de bits con ese número a un registro que por ejemplo contenía 10101010, obtendremos 10101110, es decir, ponemos a 1 el bit de la posición 2, sin afectar al resto de bits. Para apagarlo, lo que debemos hacer es un and de bits con el número negado. Para ello, si negamos ~(00000100) obtenemos (11111011), y haciendo un and a nivel de bit lo que conseguimos es poner a 0 el bit 2 sin afectar a los demás.
8  International / Software / Re: Conectar un rele con un sensor capacitivo. on: August 11, 2014, 05:32:50 pm
También sin probar:

Code:
#include<CapacitiveSensor.h>
CapacitiveSensor sensor=CapacitiveSensor(4,2);

int rele = 7;
int estado=LOW; // El estado previo de la salida

boolean cambiado=false; // Si se ha realizado un cambio de estado

void setup()
{
      Serial.begin(9600);
      pinMode(rele, OUTPUT);
      digitalWrite(rele, estado); // Empezamos apagados
}

void loop()
{
      long total1=sensor.capacitiveSensor(30);
      Serial.println(total1);
      if (total1 >=4000)
            if (!cambiado) {
                  estado = !estado;
                  digitalWrite(rele, estado);
                  cambiado=true;
            }
      } else {
            cambiado=false;
      }
      delay(10);
}

9  International / Software / Re: COMPARACION DE BITS EN REGISTROS on: August 11, 2014, 06:27:36 am
Hola. Prueba a ver así:

if(TIFR1 & (1<<TOV1)) // también valía como lo tenías tú, pero más sencillo así
 {
   Overflow++;
  TIFR1  &=  ~(1<<TOV1);  // No estabas poniendo el flag a cero con el otro comando
 }

Saludos
10  International / Proyectos / Re: Proyecto: añadir sensores a un robot submarino on: August 04, 2014, 05:24:27 pm
Pues nada; ya contarás si ya se han hecho amigos el arduino esclavo y los sensores. Lo primero es conseguir leer todos ellos en cada ciclo de loop. Luego podemos intentar hacer un device en el master que reciba y muestre sus datos.
11  International / Software / Re: Enviar 3 datos por serial de matlab a arduino y que me active 3 pwm on: August 04, 2014, 02:55:21 am
De nada, Jonath4n. Edita tu hilo y agrega "[SOLUCIONADO]" en el asunto para que pueda servir de ayuda a otros con el mismo problema.
Saludos.
12  International / Software / Re: Enviar 3 datos por serial de matlab a arduino y que me active 3 pwm on: August 03, 2014, 05:13:20 pm
Hola. Precisamente estaba escribiendo lo siguiente:
Prueba con Serial.parseInt.:

if (Serial.available()){
    var1=Serial.parseInt();
    var2=Serial.parseInt();
    var3=Serial.parseInt();
}

Si los datos llegan de la forma que dices ("190,128,80"), debería funcionar.
13  International / Proyectos / Re: Proyecto: añadir sensores a un robot submarino on: August 01, 2014, 04:07:54 pm
¿Ahora mismo qué tienes conectado? ¿Has realizado alguna prueba?
Lo digo por ver por dónde puedes ir trabajando mientras esperas los sensores.
14  International / Proyectos / Re: Proyecto: añadir sensores a un robot submarino on: August 01, 2014, 06:35:03 am
Tanto PRES como TEMP se actualizan en MS5803_14BA.cpp, aunque no sé si tú tienes implementado ese device.

En tu esclavo has conseguido ya leer todas esas mediciones? ¿Qué rangos máximo y mínimo y número de decimales tendría cada uno?
No sería necesario implementar un millis en el esclavo. Con ir leyendo los datos en su loop y enviar al ser requerido los más recientes valdría. El maestro se los pedirá con su frecuencia establecida.
15  International / Hardware / Re: Problema con Ethernet Shield para Arduino W5100(SOLUCIONADO) on: August 01, 2014, 02:26:32 am
Pues me extrañaría que no se pueda hacer visible el asesino desde internet en tu router. Básicamente lo que tiene que hacer es eso: abrir un puerto para el arduino.
Pages: [1] 2 3 ... 34