Show Posts
Pages: [1] 2 3 4
1  International / Software / Re: CAMBIAR LA FORMA DE PROGRAMAR on: April 21, 2014, 07:23:18 am
Hola pincho41700

Pues no es necesario el crear el puntero, son manías mías para poder recorrer arrays mediante "++" o "--"

Prueba este otro código es  el mismo

Code:
void loop(){
if (SIM900.available()>0)
  {
 char lectura[10];   // array de char
 byte pos;          // creamos un puntero  para saber donde meter el char                  
                  
     while(SIM900.available()>0){  // mientras tengamos un char en el bufer
    lectura[pos]= SIM900.read() ; // llamamos al  lectura y  metemos el char en su posición
    pos=pos+1;      //   subimos una posición en el array    
                                                                
 delay(3);    // le damos un tiempo de espera para que no se pierda ningún char del bufer
    }
lectura[pos]='\0';
 
Serial.println("Llamada entrante...");
Serial.println(lectura);
  }
}



saludos
2  International / Software / Re: CAMBIAR LA FORMA DE PROGRAMAR on: April 21, 2014, 04:24:57 am
Hola pincho41700.


Prueba con estas lineas de código en la que se utiliza un puntero.

Code:
void loop(){
if (SIM900.available()>0)
  {
  char lectura[10];                                // array de char o String
  char *_lectura=lectura; // creamos un puntero a lectura llamado _lectura
     while(SIM900.available()>0){  // mientras tengamos un char en el bufer
    *_lectura++=SIM900.read(); // llamamos al *_lectura y  metemos el char,  
//al mismo tiempo subimos una posición en el array
 delay(3);   // le damos un tiempo de espera para que no se pierda ningún char del bufer
    }
*_lectura='\0';                                     // añadimos carácter nulo
Serial.println("Llamada entrante...");
Serial.println(lectura);
  }
}



Espero que te sea de ayuda

Saludos
3  International / Español / Re: Presentación y ayuda con código GPS+SD on: April 09, 2014, 02:20:50 am
Hola badel.

cierto perrociego, cuando utilices la macro F() en Serial.println() se verá incrementada la memoria flash.
BAdel si tu proyecto no va mas lejos de lo que tienes echo, para que una eeprom externa?

Aun no as utilizado la eeprom de arduino, y aparte tienes una sd(supongo con mucha capacidad) de la cual podrías recuperar los texto que luego mandarías por el serial o a la sd otra vez con los textos y variables que te interesen así no consumirías tanta memoria flash si la tienes a tope también.



Saludos
4  International / Español / Re: Presentación y ayuda con código GPS+SD on: April 07, 2014, 05:44:11 pm
Hola badel.


Se me ocurre que puede ser que no te quede memoria RAM, y se te queda bloqueado. Si  es  un arduino uno puede ser eso.

mira la memoria SRAM que te queda con esta función que la colocarás antes del inicio del setup junto con tu código

Code:
..........
 int freeRam () {
  extern int __heap_start, *__brkval;
  int v;
  return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);
}
Void setup(){
............


llama a la función antes de iniciar el loop para que te muestre la memoria SRAM libre en bytes

Code:
................
Serial,print(F("Memoria libre en SRAM  ---> "));Serial.print(freeRam ());Serial.println(F(" bytes"));
} //fin del setup
void loop(){
...........................

Arduino uno ------>2000 bytes SRAM
Arduino mega----->8000 bytes SRAM

Si fuese eso el problema, sustituye todos los Serial.print("__TEXTO__") que tienes por Serial.print(F("__TEXTO__")) y no consumirás tanta memoria.
Hazlo también en myFile.println(F("__TEXTO__"))

Espero que te sea de ayuda.

Saludos.
5  International / Software / Re: Forma de poner la siguiente expresión on: April 03, 2014, 10:55:35 am
Hola cromo24
Si se es algo lioso el código, prueba a utilizar String:

cliente.println("GET /ardu/insertar.php?temperatura="+String(t)+"&humedad="+String(h));



Saludos
6  International / Software / Re: Forma de poner la siguiente expresión on: April 02, 2014, 02:23:26 pm
Hola Cromo24.

dale vuelta a este código que seguro te saca del aprieto, y no consumirás tanta memoria

 
Quote
// Creamos lineas
PROGMEM char   lineadatos0[]="GET /ardu/insertar.php?temperatura=%d&humedad=%d";
PROGMEM char   lineadatos1[]="Antonio tenia %d perros y %d gallinas";
PROGMEM char   lineadatos2[]="";

PROGMEM char *_gdatos[] = { lineadatos0,lineadatos1,lineadatos2};

char *gdatos(byte linea){// retorna la linea que se le pide de _gdatos
     char evento[200];char *_evento=evento;char c;
  char *even=(char*)pgm_read_word(&(_gdatos[linea])) ;
 while (c = pgm_read_byte(even++)){
 *_evento++=c;}
 *_evento = '\0';
 return evento;
  }


char *crea_linea_t_h(unsigned int t,unsigned int h){
  char datos[300]="";char *_datos=datos;
 sprintf(_datos,gdatos(0),t,h);// cambia en esta linea gdatos(1)
 strcat(_datos,"\0");// eliminar si interesa
 
   // Serial.println(datos);
     
  return datos;
}
  //////////////////////////////////////////////////////// 
     unsigned int t=24;
 unsigned int h=65;


void setup(){
 
  Serial.begin(9600);
  Serial.println(  crea_linea_t_h(t,h));

 //return;

}


void loop(){
 
}
7  International / Software / Re: Duda sobre 1 Pulsador 2 Led´s on: September 21, 2012, 11:44:31 am
Hola nataly!!!
 
prueba este código, compila bien pero no lo he probado, animo...

Code:
enum _estadoBoton  // Creamos un tipo nuevo
{
  noPulsado=0,
  pulsado=1,
};
enum _opcionesBoton
{
  ledsApagados=0,
  led1Encendido=1,
  led2Encendido=2,
 };


struct teclado{// creamos una estructura para recoger datos de la variables
               // y sus funciones
 
  int pinBoton;
  int pinLed1;
  int pinLed2;
  _estadoBoton estadoBoton;  // cremos una variable de tipo _estadoBoton
  _opcionesBoton opcionBoton;// cremos una variable de tipo _opcionesBoton

  void compruevaEstadoBoton(){
    if (digitalRead(pinBoton)==HIGH && estadoBoton==noPulsado){
      estadoBoton=pulsado;
      sumaOpcion();
      actuaOpcion(opcionBoton);

    }
    else
      if (digitalRead(pinBoton)==LOW){
      estadoBoton=noPulsado;

    }
  }

  void sumaOpcion(){
    if (opcionBoton==ledsApagados){
      opcionBoton=led1Encendido;
    }
    if (opcionBoton==led1Encendido){
      opcionBoton=led2Encendido;
    }
    if (opcionBoton==led2Encendido){
      opcionBoton=ledsApagados;
    }


  }

  void actuaOpcion(_opcionesBoton opcion){
    if (opcion==ledsApagados){
      digitalWrite(pinLed2,LOW);
    }
    if (opcion==led1Encendido){
      digitalWrite(pinLed1,HIGH);
    }
    if (opcion==led2Encendido){
      digitalWrite(pinLed1,LOW);
      digitalWrite(pinLed2,LOW);
    }

  }
}
botones[1];// incrementando el valor obtendremos mas botones


void setup(){
  botones[1].pinBoton=5;// definimos los valores dentro de la estructura de datos
  botones[1].pinLed1=10;// del boton 1
  botones[1].pinLed2=11;
// si quisieramos mas botones:
/*
botones[0].pinBoton=4;
botones[0].pinLed1=9;
botones[0].pinLed2=8;
*/
// definimos los pines
  pinMode(botones[1].pinBoton,INPUT);
  pinMode(botones[1].pinLed1,OUTPUT);
  pinMode(botones[1].pinLed2,OUTPUT);

/*pinMode(botones[0].pinBoton,INPUT);
  pinMode(botones[0].pinLed1,OUTPUT);
  pinMode(botones[0].pinLed2,OUTPUT);*/

}


void loop(){
  // llamo a la función para controlar el estado del boton 1
  botones[1].compruevaEstadoBoton();
   // llamo a la funcion para controlar el estado del boton 0
//botones[0].compruevaEstadoBoton();

}


 
8  International / Español / Re: En construcción: Automatización de persiana on: May 13, 2012, 10:53:39 am
hola a todos!!!

yo soy partidario de centralizar el control (pulsadores, sensores, detectores,...)y las maniobras( luces, persianas, bombas,...), en el mismo sitio( conjunto de contactores, mega,...)y si hay que controlar otro arduino( más sensores, pulsadores, maniobras)conectado mediante canbus.


En un principio el tema de las persianas las controlo mediante un solo pulsador ,ubicado al lado de ella.Los motores de las persianas de por si tienen finales de carrera, que se han de graduar, que nos valdrán como de seguridad. aun así siempre se ha de calcular el recorrido de la persiana para guardar el tiempomaximo y arduino lo controle
el pulsador recoge 2 tipos de pulsaciones: corta y larga.
y el estado de las persianas en un principio son 5:abajo, subiendo, medio, bajando y arriba.

las persianas tiene variables que cuentan el tiempo en los estados de subiendo y bajando para controlar el paro automático a la llegada del tiempomáximo o tiempo0 en el recorrido de la persiana
cada persiana contara con otra variable tempomáximo independiente al resto pues no todas las persianas, son igual de largas, o toldos o proyectores.... tienen el mismo recorrido

y el comportamiento de la persiana según el tipo de pulsación, y el estado de la persiana es el siguiente;
ESTADO       PULSACIÓN 
abajo-------->corta------->la persiana sube( empieza a contar tiempo asta tiempomaximo) estado=subiendo
subiendo----->corta-------> la persiana se para(memoriza tiempo)estado =medio
medio-------->corta-------> la persiana sube(empieza a contar tiempo + tiempo memorizado) estado=subiendo
        \___--->larga--------> la persiana baja(empieza a contar tiempo + tiempo memorizado ) estado=bajando
bajando------>corta-------> la persiana se para(memoriza tiempo) estado=medio
arriba--------->larga-------> la persiana baja(empieza a contar tiempo)estado=bajando

espero que te sea de ayuda.


saludos



9  International / Español / Re: Actualizar hora DS1307 leyendola desde una WEB on: April 05, 2012, 08:07:44 am
hola compañeros!!!
hace unos días estuve indagando sobre rtc y para poderlo actualizar con la hora de la web, y encontré, este hilo en inglés  smiley-roll-blue





http://arduino.cc/forum/index.php/topic,92632.0.html

saludos
10  International / Español / Re: Arduino 1.0, errores on: December 07, 2011, 12:38:25 pm
Los ejemplos de string en el 0.22 funcionan bien pero en la versión nueva dan error

http://arduino.cc/en/Tutorial/StringCharacters

11  International / Español / Re: ayuda con cadenas de datos on: December 06, 2011, 03:11:08 pm
uy!! perdón...

es curioso los ejemplos me funcionan bien en la ide 0.22, pero en la versión 1.0 me salen errores,
12  International / Español / Re: ayuda con cadenas de datos on: December 06, 2011, 03:08:30 pm
Arduino 1.0 incluye un par de funciones nuevas para hacer estas cosas,si no recuerdo mal

Sergegsx, te refieres ha "Strings" ? http://arduino.cc/en/Tutorial/StringCharacters

lo estoy probando estos días, y esta muy bien, para recuperar caracteres de una String, identificar partes de testo, cambiar...

pero es curioso

13  International / Español / Re: Máquina de estados: Librería FSM on: December 06, 2011, 03:02:01 pm
lo tengo Igor R!!! gracias por la pista...  me ha costado encontrarlo, pero google al final me lo soluciono,  cambiar Wprogram.h por Arduino.h

Salu2
14  International / Español / Re: Máquina de estados: Librería FSM on: December 04, 2011, 12:18:30 pm
hola Igor R,

haber si te he entendido: supongo que debo de ir a tu librería y cambiar el #include <avr/pgmspace.h> en el fichero FSM.h o el #include "WProgram.h" en el fichero FSM.cpp pero por cual??

gracias Igor R nuevamente.
15  International / Español / Re: Máquina de estados: Librería FSM on: December 03, 2011, 10:32:56 am
buenas tardes a todos!!

he estado instalando el nuevo ide de arduino 1.0 y las libreeias con las que trasteo y cuando intento cargar un ejemplo (FSM_V5) me sale un error.
a que puede ser devido??

os dejo el error que os comento
Pages: [1] 2 3 4