Show Posts
Pages: 1 ... 4 5 [6] 7
76  International / Software / Re: Pantalla standard Hitachi HD44780 on: January 31, 2011, 04:34:49 pm
a mí si me pasa de vez en cuando. En mi opinión es por un mal contacto en alguno de los cables.
Cuando pasa es necesario hacer 2 cosas: o reiniciar el arduino o de vez en cuando lanzar la instrucción  lcd.begin(16, 2);
Con ello se soluciona. lo malo es que se aprecia un parpadeo en la pantalla.
77  International / Software / Re: Sensor de Luz (LDR) on: January 29, 2011, 06:29:09 pm
aqui te dejo las funciones para manejar la eprom con INT.
Code:
void borra_EEPROM(){
  for (int i = 0; i < 512; i++)
    EEPROM.write(i, 0);
}

void Escribe_EEPROM(int Direccion, byte Dato){
  EEPROM.write(Direccion, Dato);
  Direccion = Direccion + 1;
  if (Direccion == 512) Direccion = 0;
  delay(100);
}

byte Lee_EEPROM(int Direccion){
  byte value = EEPROM.read(Direccion);
  delay(100);
  Direccion = Direccion + 1;
  if (Direccion == 512) Direccion = 0;
  return value;
}
/////////////////////////////////////////////////////////////////////////
     
int eeprom_read_int(int eeaddress ) {
   int rdata;
   rdata = rdata | Lee_EEPROM(eeaddress);
   rdata = rdata | Lee_EEPROM(eeaddress+1)<<8;
   return rdata; } 
   
void eeprom_write_int(int eeaddress, int data ) {
  Escribe_EEPROM(eeaddress, (data & 0xFF)) ; // parte baja un INT tiene una longitud de 2 bytes
  Escribe_EEPROM(eeaddress+1,((data >> 8) & 0xFF)); // parte alta
   }
espero que te ayude.
78  International / Software / Re: noTone on: January 29, 2011, 06:24:34 pm
ojo con las mayúsculas:
no es lo mismo
    noTOne(speaker);
    noTone(speaker);
a ver si el fallo es ese.
79  Forum 2005-2010 (read only) / Español / Re: ethernet enc28j60 tutorial on: January 20, 2011, 05:47:29 pm
para que funcione tienes que meter las librerías adecuadas. esta tarjeta no funciona con las shield standard. bájalas de nucleonics.
yo al menos fue el fallo que tuve al principio.
80  Forum 2005-2010 (read only) / Español / Re: Servidor domotico con ethernet shield on: September 22, 2010, 04:25:26 pm
para pasar más letras cambia por ejemplo:
if (*strbuf < 0x4f && *strbuf > 0x40){  
a esto:
if (*strbuf < 0x58 && *strbuf > 0x40){
con esto tienes hasta la "V")
¿hasta cuanto puedes crecer el buffer? ¿por qué es tan crítico?
81  Forum 2005-2010 (read only) / Español / Re: Servidor domotico con ethernet shield on: September 22, 2010, 03:49:30 am
codigo 2/2
Code:
  // The returned value is stored in the global var strbuf
    uint8_t find_key_val(char *str,char *key)
    {
            uint8_t found=0;
            uint8_t i=0;
            char *kp;
            kp=key;
            while(*str &&  *str!=' ' && found==0){
                    if (*str == *kp){
                            kp++;
                            if (*kp == '\0'){
                                    str++;
                                    kp=key;
                                    if (*str == '='){ found=1;}
                            }
                    }else{kp=key;}
                    str++;
            }
            if (found==1){
                    // copy the value to a buffer and terminate it with '\0'
                    while(*str &&  *str!=' ' && *str!='&' && i<STR_BUFFER_SIZE){
                            strbuf[i]=*str;
                            i++;
                            str++;}
                    strbuf[i]='\0';
            }
            return(found);
}


int8_t analyse_cmd(char *str)
{      int8_t r=-1;
         if (find_key_val(str,"cmd")){
                if (*strbuf < 0x4f && *strbuf > 0x40){   //PACO antes era:   if (*strbuf < 0x3a && *strbuf > 0x2f) ahora permito de la 'A' a la 'N'
                        // is a ASCII number, return it
                        r=*strbuf;               // PACO antes era:   r=(*strbuf-0x30);  ahora esto 40 A->0 ; B -> 1 ; ....
                }
        }
        return r;
}


uint16_t print_webpage(uint8_t *buf, byte on_off1, byte on_off2, byte on_off3, byte on_off4, byte on_off5, byte on_off6)
{       int i=0;
        uint16_t plen;
        plen=es.ES_fill_tcp_data_p(buf,0,PSTR("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n"));
        plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<FONT FACE=\"arial\"><center><p><A HREF=\"/\"><b>SERVIDOR DOMOTICO</b></A></p>"));
        plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<table bgcolor=\"#f7f7f7\"><tr><td align=center>"));
 switch (on_off1) {
          case 1:
               plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("Out 1: <font color=\"#00FF00\">On</font><br>"));
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<form METHOD=get action=\""));
              plen=es.ES_fill_tcp_data(buf,plen,baseurl);
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("\">"));
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=hidden name=cmd value=B>")); // B apaga; A enciende
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=submit value=\"Switch off\"></form>"));
                break;
          case 0:
               plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("Out 1: <font color=\"#CC0000\">Off</font><br>"));
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<form METHOD=get action=\""));
              plen=es.ES_fill_tcp_data(buf,plen,baseurl);
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("\">"));
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=hidden name=cmd value=A>"));
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=submit value=\"Switch on\"></form>"));
                break;
          }
        plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("</td><td align=center>"));
 switch (on_off2) {
          case 1:
               plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("Out 2: <font color=\"#00FF00\">On</font><br>"));
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<form METHOD=get action=\""));
              plen=es.ES_fill_tcp_data(buf,plen,baseurl);
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("\">"));
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=hidden name=cmd value=D>"));
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=submit value=\"Switch off\"></form>"));
                break;
          case 0:
               plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("Out 2: <font color=\"#CC0000\">Off</font><br>"));
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<form METHOD=get action=\""));
              plen=es.ES_fill_tcp_data(buf,plen,baseurl);
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("\">"));
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=hidden name=cmd value=C>"));
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=submit value=\"Switch on\"></form>"));
                break;
          }
        plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("</td></tr><tr><td align=center>"));
 switch (on_off3) {
          case 1:
               plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("Out 3: <font color=\"#00FF00\">On</font><br>"));
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<form METHOD=get action=\""));
              plen=es.ES_fill_tcp_data(buf,plen,baseurl);
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("\">"));
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=hidden name=cmd value=F>"));
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=submit value=\"Switch off\"></form>"));
                break;
          case 0:
               plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("Out 3: <font color=\"#CC0000\">Off</font><br>"));
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<form METHOD=get action=\""));
              plen=es.ES_fill_tcp_data(buf,plen,baseurl);
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("\">"));
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=hidden name=cmd value=E>"));
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=submit value=\"Switch on\"></form>"));
                break;
          }
        plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("</td><td align=center>"));
 switch (on_off4) {
          case 1:
               plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("Out 4: <font color=\"#00FF00\">On</font><br>"));
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<form METHOD=get action=\""));
              plen=es.ES_fill_tcp_data(buf,plen,baseurl);
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("\">"));
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=hidden name=cmd value=H>"));
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=submit value=\"Switch off\"></form>"));
                break;
          case 0:
               plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("Out 4: <font color=\"#CC0000\">Off</font><br>"));
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<form METHOD=get action=\""));
              plen=es.ES_fill_tcp_data(buf,plen,baseurl);
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("\">"));
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=hidden name=cmd value=G>"));
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=submit value=\"Switch on\"></form>"));
                break;
          }
        plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("</td></tr><tr><td align=center>"));
 switch (on_off5) {
          case 1:
               plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("Out 5: <font color=\"#00FF00\">On</font><br>"));
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<form METHOD=get action=\""));
              plen=es.ES_fill_tcp_data(buf,plen,baseurl);
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("\">"));
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=hidden name=cmd value=J>"));
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=submit value=\"Switch off\"></form>"));
                break;
          case 0:
               plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("Out 5: <font color=\"#CC0000\">Off</font><br>"));
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<form METHOD=get action=\""));
              plen=es.ES_fill_tcp_data(buf,plen,baseurl);
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("\">"));
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=hidden name=cmd value=I>"));
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=submit value=\"Switch on\"></form>"));
                break;
          }
        plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("</td><td align=center>"));
 switch (on_off6) {
          case 1:
               plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("Out 6: <font color=\"#00FF00\">On</font><br>"));
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<form METHOD=get action=\""));
              plen=es.ES_fill_tcp_data(buf,plen,baseurl);
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("\">"));
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=hidden name=cmd value=L>"));
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=submit value=\"Switch off\"></form>"));
                break;
          case 0:
               plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("Out 6: <font color=\"#CC0000\">Off</font><br>"));
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<form METHOD=get action=\""));
              plen=es.ES_fill_tcp_data(buf,plen,baseurl);
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("\">"));
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=hidden name=cmd value=K>"));
              plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=submit value=\"Switch on\"></form>"));
                break;
          }
        plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("</td></tr></table></center><hr>Ethernet Shield Arduino 1.0"));

        return(plen);
}
82  Forum 2005-2010 (read only) / Español / Re: Servidor domotico con ethernet shield on: September 22, 2010, 03:48:32 am
Adjunco codigo Dricote modificado para que funcionen los 6 botones
¿alquien me dice como pasar también valores analógicos del arduino a la página web y viceversa.
codigo 1/2
Code:
#include "etherShield.h"

static uint8_t mymac[6] = {0x54,0x55,0x58,0x10,0x00,0x24};
static uint8_t myip[4] = {192,168,2,205};
static char baseurl[]="http://192.168.2.205/";
static uint16_t mywwwport =80; // listen port for tcp/www (max range 1-254)

// Relay status. Start Off.
byte on_off1;
byte on_off2;
byte on_off3;
byte on_off4;
byte on_off5;
byte on_off6;

#define BUFFER_SIZE 1500
static uint8_t buf[BUFFER_SIZE+1];
#define STR_BUFFER_SIZE 22
static char strbuf[STR_BUFFER_SIZE+1];

EtherShield es=EtherShield();

// prepare the webpage by writing the data to the tcp send buffer
uint16_t print_webpage(uint8_t *buf, byte on_off1, byte on_off2, byte on_off3, byte on_off4, byte on_off5, byte on_off6);
int8_t analyse_cmd(char *str);

// 6 relays connected to output
#define SW1  2
#define SW2  3
#define SW3  4
#define SW4  5
#define SW5  6
#define SW6  7

void setup(){
Serial.begin(9600); //PACO para depurar el programa
  /*initialize enc28j60*/
   es.ES_enc28j60Init(mymac);
   es.ES_enc28j60clkout(2);
   delay(10);
        es.ES_enc28j60PhyWrite(PHLCON,0x880);
      delay(250);
      es.ES_enc28j60PhyWrite(PHLCON,0x990);
      delay(250);
      es.ES_enc28j60PhyWrite(PHLCON,0x880);
      delay(250);
      es.ES_enc28j60PhyWrite(PHLCON,0x990);
      delay(250);
        delay(100);
  //init the ethernet/ip layer:
  es.ES_init_ip_arp_udp_tcp(mymac,myip,mywwwport);
  // Init outputs
       pinMode(SW1, OUTPUT);
       digitalWrite(SW1, LOW);  // switch off LED
       pinMode(SW2, OUTPUT);
       digitalWrite(SW2, LOW);  // switch off LED
        pinMode(SW3, OUTPUT);
       digitalWrite(SW3, LOW);  // switch off LED
        pinMode(SW4, OUTPUT);
       digitalWrite(SW4, LOW);  // switch off LED
        pinMode(SW5, OUTPUT);
       digitalWrite(SW5, LOW);  // switch off LED
        pinMode(SW6, OUTPUT);
       digitalWrite(SW6, LOW);  // switch off LED
}

void loop(){
  uint16_t plen, dat_p;
  int8_t cmd;

// Ethernet Mode
  plen = es.ES_enc28j60PacketReceive(BUFFER_SIZE, buf);

  if(plen!=0){  /*plen will ne unequal to zero if there is a valid packet (without crc error) */
              // arp is broadcast if unknown but a host may also verify the mac address by sending it to a unicast address.
            if(es.ES_eth_type_is_arp_and_my_ip(buf,plen)){
              es.ES_make_arp_answer_from_request(buf);
              return;    }
            // check if ip packets are for us:
            if(es.ES_eth_type_is_ip_and_my_ip(buf,plen)==0){return;}
            if(buf[IP_PROTO_P]==IP_PROTO_ICMP_V && buf[ICMP_TYPE_P]==ICMP_TYPE_ECHOREQUEST_V){
                    es.ES_make_echo_reply_from_request(buf,plen);
                    return;    }
            
            // tcp port www start, compare only the lower byte
      if (buf[IP_PROTO_P]==IP_PROTO_TCP_V&&buf[TCP_DST_PORT_H_P]==0&&buf[TCP_DST_PORT_L_P]==mywwwport){
             if (buf[TCP_FLAGS_P] & TCP_FLAGS_SYN_V){
                     es.ES_make_tcp_synack_from_syn(buf); // make_tcp_synack_from_syn does already send the syn,ack
                     return;}
             if (buf[TCP_FLAGS_P] & TCP_FLAGS_ACK_V){
                    es.ES_init_len_info(buf); // init some data structures
                    dat_p=es.ES_get_tcp_data_pointer();
                    if (dat_p==0){ // we can possibly have no data, just ack:
                            if (buf[TCP_FLAGS_P] & TCP_FLAGS_FIN_V){es.ES_make_tcp_ack_from_any(buf);}
                            return;}
                    if (strncmp("GET ",(char *)&(buf[dat_p]),4)!=0){
                            // head, post and other methods for possible status codes see: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
                            plen=es.ES_fill_tcp_data_p(buf,0,PSTR("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n<h1>200 OK</h1>"));
                            goto SENDTCP;}
                    // If "get /" without parameters
                       if (strncmp("/ ",(char *)&(buf[dat_p+4]),2)==0){
                            plen=print_webpage(buf, on_off1, on_off2, on_off3, on_off4, on_off5, on_off6);
                            goto SENDTCP;}
                    cmd=analyse_cmd((char *)&(buf[dat_p+5]));
                    
                    // Process commands
                    switch (cmd) {
                    case 'A':      //PACO: cambio los números por letras
                            on_off1=1;
                              digitalWrite(SW1, HIGH);  // switch on LED1
                            break;
                    case 'B':
                            on_off1=0;
                                 digitalWrite(SW1, LOW);  // switch off LED1
                            break;
                    case 'C':
                            on_off2=1;
                              digitalWrite(SW2, HIGH);  // switch on LED2
                            break;
                    case 'D':
                            on_off2=0;
                              digitalWrite(SW2, LOW);  // switch off LED2
                            break;
                    case 'E':
                            on_off3=1;
                              digitalWrite(SW3, HIGH);  // switch on LED3
                            break;
                    case 'F':
                            on_off3=0;
                              digitalWrite(SW3, LOW);  // switch off LED3
                            break;
                    case 'G':
                            on_off4=1;
                              digitalWrite(SW4, HIGH);  // switch on LED4
                            break;
                    case 'H':
                            on_off4=0;
                              digitalWrite(SW4, LOW);  // switch off LED4
                            break;
                    case 'I':
                            on_off5=1;
                              digitalWrite(SW5, HIGH);  // switch on LED5
                            break;
                    case 'J':
                            on_off5=0;
                              digitalWrite(SW5, LOW);  // switch off LED5
                            break;
                    case 'K':
                            on_off6=1;
                              digitalWrite(SW6, HIGH);  // switch on LED6
                            break;
                    case 'L':
                            on_off6=0;
                              digitalWrite(SW6, LOW);  // switch off LED6
                            break;                
                        }
                    plen=print_webpage(buf, on_off1, on_off2, on_off3, on_off4, on_off5, on_off6);
                    
          SENDTCP:  es.ES_make_tcp_ack_from_any(buf); // send ack for http get
                    es.ES_make_tcp_ack_with_data(buf,plen); // send data      
    } } } }
83  Forum 2005-2010 (read only) / Español / Re: Servidor domotico con ethernet shield on: September 15, 2010, 03:03:07 am
buscando por internet he encontrado varias librecerías modificadas para funcionar con la tarjeta basada en el enc28j60.
En algunas de ellas la programación es similar a la tarjeta standar.
Lo malo es que siempre hay alguna instrucción no compatible entre unas librerías y otras y los ejemplos que funcionan con una librería hay que depurarlos para que funcionen con otra y en este punto me pierdo.
El problema es que la mayoría modifica la librería y se sigue llamando "etherShield" por lo que no puedes tenerlas simultáneamente en la ruta de búsqueda.
Por ejemplo en OpenEnergyMonitor hay ejemplos.


84  Forum 2005-2010 (read only) / Español / Re: Servidor domotico con ethernet shield on: September 11, 2010, 02:47:45 pm
mi intención sería poder desde una página poder leer todos los datos posibles (entredas y salidas digitales y analógicas), y poder enviar valores a las que sean salidas, tado digitales como analógicas.
Mi problema es como pasar diferentes tidos de datos del arduino a la página web (floats y similares) o en caso contrario hacer la conversión matemática dentro de la página web(por ejemplo de una sonda de temperatura.

La versión que tenemos de ethernet shield es un poco puñetera, pues casi todo lo que hay en la red es para la standar.

después otra duda que tengo es si es más rápido pasar datos por ethernet que por el puerto serie. Porque mi otra intención es hacer un analizador de red.
Bueno, ya hablaremos.
Un saludo.
85  Forum 2005-2010 (read only) / Español / Re: Servidor domotico con ethernet shield on: September 10, 2010, 04:38:56 pm
yo he intentado lo mismo que tu y no lo conseguí. Me rompe la cabeza el HTML
sin embargo si que te puedo ayudar en el problema de que no funcionen los últimos botones.
en la línea 248 del programa "f (*strbuf < 0x3a && *strbuf > 0x2f)"
estás verificando que el dato que le pasas está entre 0 y 9, por eso no traga ni con 10, 11, 12 y similares. smiley-wink
86  Forum 2005-2010 (read only) / Español / Re: conversión AD,canales diferenciales en Mega 2560 on: January 14, 2011, 05:18:55 pm
no se puede con el Arduiono. Yo ya lo he intentado. Si le metes 2 señales analógicas y ninguna tiene como referencia la tierra del arduino, lo único que mides es ruido entre ellas.
87  Forum 2005-2010 (read only) / Español / Re: Arduino se cuelga si cierro el monitor serie on: January 10, 2011, 05:20:41 pm
Gracias por todas las aclaraciones. Yo últimamente para monitorizar el estatus usaba una pantalla LCD en vez del puerto serie por eso de los reinicios de la placa.
88  Forum 2005-2010 (read only) / Español / Re: Arduino se cuelga si cierro el monitor serie on: January 07, 2011, 02:45:16 pm
pongo un ejemplo simple. un segundero que empieza en cero y sique uno, dos,...
cada vez que se abre el monitor serie se reinicia y empieza en cero.
Code:
int numero;
void setup() {
  Serial.begin(9600);
 }

void loop() {
  delay(50);
  Serial.println(numero);
  delay(1000);
  numero++;
}
el delay de 50mseg no tiene ningún efecto
89  Forum 2005-2010 (read only) / Español / Re: Arduino se cuelga si cierro el monitor serie on: January 04, 2011, 05:08:47 am
no se muy bien el por qué, pero cada vez que conectas el monitor del puerto serie es como si hicieras un reset al arduino. Por elemplo si corres un sketch que cada segundo envíe por el puerto serie los segundos que lleva funcionando el programa, cada vez que actives la monitorización de puerto serie, el arduino va a empezar en 1,2,3...
el por qué lo hace no tengo ni idea, pero es una realidad.
Yo tengo un programa que graba datos en una SD y cada vez que monitorizo por el puerto serie para ver si está funcionando, me crea un archivo nuevo.
90  Forum 2005-2010 (read only) / Español / Re: Tonos con mando a distancia - problema on: January 02, 2011, 08:00:01 am
la función TONE y la librería IR no se llevan muy bien no se exactamente el por qué.
Cuando usas TONE se corrompe el programa y no lee ya bien el código infrarrojos.
Para solucionarlo, al final de skech añade lo siguiente:

results.value = 0;
irrecv.enableIRIn();
delay(200);
con esto se soluciona
Pages: 1 ... 4 5 [6] 7