Show Posts
Pages: 1 ... 3 4 [5] 6 7 ... 26
61  International / Español / Re: Voltaje variable con analogWrite on: February 02, 2014, 10:44:54 am
Aun a riesgo de salirme de mi territorio e internarme en el desconocido de la electrónica, aunque el comando se llame analogwrite, la salida que da es de 5v en impulsos de mayor o menor anchura dentro del ciclo. Así que es correcto que detectes 0 o 5v. Podríamos decir que lo que se regula es la intensidad media por ciclo. Seguramente que haya algún circuito que pueda convertir en voltaje esos impulsos, pero ahí tendrá que asesorarteb siguen que sepa smiley-roll-blue.
62  International / Software / Re: Necesito ayuda urgente para mi proyecto con la gsm shield! on: February 02, 2014, 05:22:20 am
Dame un punto de partida (el código que vayas construyendo) y te puedo ir ayudando a avanzar. Ten en cuenta que de la librería gsm no tengo ni idea de qué forma entrega los números de teléfono, ni de otras cosas.
Como te dije, si tus números no ocupan más de nueve dígitos, los puedes guardar directamente como long, con lo que la comparación será muy sencilla.
Por ejemplo, este código buscaría el número compara entre todos los del array numero:

Code:
long numero[5]={555666555, 555989000, 666999888, 123456789, 987654321};
long compara=987654321;
for (int a=0;a<5;a++)
     if (compara==numero[a]) {
             Serial.print("Se ha encontrado el numero ");
             Serial.print(compara);
             Serial.print(" en la posicion ");
             Serial.print(a+1);
    }
63  International / Hardware / Re: Conexión RS232 - Arduino UNO on: February 02, 2014, 05:04:00 am
Desde el desconocimiento que da el no tener en las manos tu montaje para hacer pruebas, tal vez sea lo que comentabas anteriormente. Si como parece que ocurre, la báscula sencillamente no transmite cuando se conecta a la tarjeta, pudiera ser porque aparte de tx/rx debas cruzar también DTR/DSR y RTS/CTS.
Prueba a ver a puentear los pines DTR con DSR y RTS con CTS (4-6 y 7-8) en el lado del arduino, que te será más sencillo, a ver si se despierta la báscula.
Saludos.
64  International / Proyectos / Re: arduino duemilanove + DS1302 on: February 01, 2014, 06:32:47 pm
¿Tienes correctamente instalada la librería? Creo que el error que te da es típico de cuando el ide no encuentra la librería.
Los archivos DS1302.h y DS1302.cpp tienen que estar justamente en la ruta Arduino\libraries\DS1302\
A veces al descomprimir creamos alguna subcarpeta y la ruta no es la adecuada.
Saludos.
65  International / Software / Re: invalid conversion from 'int*' to 'int' on: January 31, 2014, 04:40:25 pm
Creo que por ahí has llegado a vía muerta  smiley-confuse
Ten en cuenta que en última instancia le estás intentando decir a digitalwrite que escriba dos pines a la vez, y esta función sólo puede modificar uno. Es decir, que para establecer los dos necesitarás dos digitalWrite.
Tienes muchas opciones para realizar lo que intentas. Partiendo de ese número aleatorio entre 1 y 3 puedes hacerlo con if, con case, o incluso si tienes un poco de comprensión de numeración binaria, con operadores a nivel de bit.
Por ejemplo, la primera opción:
Code:
if (aleatorio==1 || aleatorio==3)
    digitalWrite(led,HIGH);
else
    digitalWrite(led,LOW);
if (aleatorio==2 || aleatorio==3)
    digitalWrite(parlante,HIGH);
else
    digitalWrite(parlante,LOW);
66  International / Software / Re: invalid conversion from 'int*' to 'int' on: January 31, 2014, 12:54:15 pm
 smiley-eek-blue
¿ cómo crees que se deberían convertir dos enteros en uno?
¿ Qué estás intentando hacer?
67  International / Software / Re: invalid conversion from 'int*' to 'int' on: January 31, 2014, 11:59:48 am
BOTH1  y BOTH2 son dos arrays de enteros, no dos números enteros.
Por lo tanto, en
int CUES1 [cant_cues] = {LED1, SPEAKER1, BOTH1};
los dos primeros números son enteros, pero el tercero te da el error.
68  International / Español / Re: serial 7000 baud?? on: January 31, 2014, 09:38:05 am
En D:\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp, al principio del archivo hay una tabla con los baudrates y los parámetros necesarios para cada uno. "Sólo" tienes que editarla (con un editor externo, pues el de arduino probablemente no te deje) y agregar tus baudrates. Lo que no sé es qué cálculos tienes que hacer para calcular esos parámetros  smiley-kitty.  Igual si haces cálculos, hay una proporción concreta entre cada baudrate y cada uno de los parámetros.
Saludos
69  International / Software / Re: Necesito ayuda urgente para mi proyecto con la gsm shield! on: January 30, 2014, 04:46:24 pm
Pues creo que lo esencial es planificar bien esa base de datos.
Para evitar tener que leerla entera para cotejar cada teléfono debería estar ordenada. Por ello es muy importante que cada vez que se agregue un número de teléfono hacerlo insertándolo en la posición correspondiente. De esa forma, para las búsquedas iremos "dividiendo" entre dos la base de datos:
Primero comparamos con el número de la mitad de la tabla, si es menor, comparamos con el número que está en la posición media de la primera mitad, y así sucesivamente. Con ocho comparaciones, por ejemplo, deberíamos poder encontrar un número entre 256.
Otro punto que puede agregar rendimiento es el modo de almacenamiento de los teléfonos. Dependiendo de cuántas cifras quieras almacenar, puedes optar por almacenar en forma de texto (1 byte por número), en bcd (1 byte por cada dos números) o, si el número no requiere más de nueve dígitos, en formato long directamente (4 bytes para todo el número). Yo utilizaría este último, por ser el más compacto. No por problemas de almacenamiento, pues en ningún caso un archivo con 1000 registros telefónicos va a ocupar más que unos pocos kb, sino porque cada comparación de dos teléfonos requerirá cotejar menos bytes. Por cierto, si el resto del programa no consume mucha ram y si la tabla no es muy grande no descartaría cargar toda la base de datos en memoria (256 números long vendrían a ocupar 1kb de memoria), con lo que la búsqueda sería prácticamente instantánea.
70  International / Software / Re: Ayuda byte binario on: January 30, 2014, 03:24:28 am
Hola, kritter.
Aparentemente estás enviando correctamente el comando. No tiene sentido que tuvieras que enviar 8 caracteres 1-0. No necesitarías arrays ni cosas raras. Tan solo un par de operaciones de bit en un bucle:
byte numero=123;
for(byte b=b10000000;b>0; b>>=1)
    Serial.print(b&numero?1:0);

Pero ya te digo que no creo que sea el problema.
¿Tienes correctamente los parámetros de serial?
¿Te funcionan correctamente otros comandos?
¿Los nombres de las pistas comienzan con tres cifras de número de pista?
71  International / Software / Re: ayuda con libreria keypad y variable on: January 29, 2014, 03:34:51 pm
Hola.
A ver si esto te pudiera servir de ayuda.
Almacena y compara cuatro dígitos, pero no creo que sea muy difícil adaptarlo a tus necesidades.
Saludos.
72  International / Software / Re: Nunca Termina :/ on: January 28, 2014, 09:54:03 am
¿La variable riego_manual la has definido como unsigned long?
73  International / Software / Re: Ayuda con antenas Xbee on: January 28, 2014, 05:24:17 am
Probablemente sea lo que dices. Normalmente cuando he visto algún código para xbee trabajan con sendpacket o algo así. Tal vez el serial espere a llenar un buffer antes de enviar. ¿Has probado si admite println? Igual lo interpreta como fin de paquete y envía en el momento.
74  International / Proyectos / Re: Proyecto semaforo con panel solar controlado por arduino on: January 28, 2014, 04:53:33 am
Hombre, yo no tengo ni idea de electrónica, pero en nombre del insigne Perogrullo, supongo que en tu lista habrá también una batería, un controlador de carga para la susodicha y acople (relés, transistores o lo que sea) para conectar los focos al arduino 
75  International / Software / Re: Calculo de frecuencia. on: January 27, 2014, 06:19:11 pm
En la misma línea del código que estábais probando (con analogRead), pero simplificando un poco, e imprimiendo una vez cada 256 loops (para evitar que al aumentar la frecuencia aumenten los Serial.print):
Code:
int vActual;      
int vAnterior;
byte imprime=50;

unsigned long inicio=0;
unsigned long ciclo=0;
unsigned long frec;

void setup(){
  Serial.begin(115200);
}

void loop()
{
  vActual = analogRead(2);       // Leer señal
  if (vActual<vAnterior)      // Cresta señal
  {
    ciclo=micros()-inicio; // Tiempo de ciclo        
    inicio=micros();       // Inicio siguiente ciclo
    frec=1000000.0/ciclo;
  }
  imprime++;
  if (imprime==0) {
    Serial.print("Valor de la frecuencia: ");
    Serial.print(frec);
    Serial.println("  HZ");
  }
}

Lo que no sé es con qué exactitud y hasta qué frecuencia medirá.  smiley-confuse
Pages: 1 ... 3 4 [5] 6 7 ... 26