Show Posts
Pages: 1 ... 75 76 [77] 78 79 ... 95
1141  International / Español / Re: Sticky - Post fijo en el foro para cosas importantes on: August 07, 2011, 06:23:00 am
pues creo que un gran fallo es q si pinchas en "playground" te vas al ingles, con esto ya la gente puede desanimarse y cerrar la ventana.

La lista de proyectos esta bien, pero creo que podriamos intentar organizarlos un poco porque al menos yo, con tal tocho de texto sin subtitulos ni nada se me hace pesado. podriamos organizarlo en plan Almacenamiento, LCD, interfase, etc

he añadido el enlace a al post de tiendas online en el playground.

sigo pensando que un usuario nuevo se registra, entra al foro a preguntar...y hay mas opciones de que abra un post que este al principio y le eche un vistazo a que se vaya al playground que para empezar no sabra que es. (entiendo el problema de que no todo el mundo puede editar un post, pero si el creador esta un poco atento puede ir añadiendo cosas segun la gente escriba en ese mismo post.
1142  International / Español / Re: Alguien monto el RTC con el DS1703 (Circuito) on: August 06, 2011, 08:57:09 pm
me alegro que lo hayas solucionado.
si quieres puedo pasarte la libreria y los ejemplos que tengo yo. bueno mas facil lo pongo aqui y ya esta.
para no tener que copiar el archivo comprimido  a un servidor que luego puede que falle, te copio los dos archivos de la libreria y el archivo del ejemplo.

Libreria

RTClib.h
Code:
// Code by JeeLabs http://news.jeelabs.org/code/
// Released to the public domain! Enjoy!

// Simple general-purpose date/time class (no TZ / DST / leap second handling!)
class DateTime {
public:
    DateTime (uint32_t t =0);
    DateTime (uint16_t year, uint8_t month, uint8_t day,
                uint8_t hour =0, uint8_t min =0, uint8_t sec =0);
    DateTime (const char* date, const char* time);
    uint16_t year() const       { return 2000 + yOff; }
    uint8_t month() const       { return m; }
    uint8_t day() const         { return d; }
    uint8_t hour() const        { return hh; }
    uint8_t minute() const      { return mm; }
    uint8_t second() const      { return ss; }
    uint8_t dayOfWeek() const;

    // 32-bit times as seconds since 1/1/2000
    long secondstime() const;   
    // 32-bit times as seconds since 1/1/1970
    uint32_t unixtime(void) const;

protected:
    uint8_t yOff, m, d, hh, mm, ss;
};

// RTC based on the DS1307 chip connected via I2C and the Wire library
class RTC_DS1307 {
public:
  static uint8_t begin(void);
    static void adjust(const DateTime& dt);
    uint8_t isrunning(void);
    static DateTime now();
};

// RTC using the internal millis() clock, has to be initialized before use
// NOTE: this clock won't be correct once the millis() timer rolls over (>49d?)
class RTC_Millis {
public:
    static void begin(const DateTime& dt) { adjust(dt); }
    static void adjust(const DateTime& dt);
    static DateTime now();

protected:
    static long offset;
};


RCTlib.cpp
Code:
// Code by JeeLabs http://news.jeelabs.org/code/
// Released to the public domain! Enjoy!

#include <Wire.h>
#include <avr/pgmspace.h>
#include "RTClib.h"
#include <WProgram.h>

#define DS1307_ADDRESS 0x68
#define SECONDS_PER_DAY 86400L

#define SECONDS_FROM_1970_TO_2000 946684800

////////////////////////////////////////////////////////////////////////////////
// utility code, some of this could be exposed in the DateTime API if needed

static uint8_t daysInMonth [] PROGMEM = { 31,28,31,30,31,30,31,31,30,31,30,31 };

// number of days since 2000/01/01, valid for 2001..2099
static uint16_t date2days(uint16_t y, uint8_t m, uint8_t d) {
    if (y >= 2000)
        y -= 2000;
    uint16_t days = d;
    for (uint8_t i = 1; i < m; ++i)
        days += pgm_read_byte(daysInMonth + i - 1);
    if (m > 2 && y % 4 == 0)
        ++days;
    return days + 365 * y + (y + 3) / 4 - 1;
}

static long time2long(uint16_t days, uint8_t h, uint8_t m, uint8_t s) {
    return ((days * 24L + h) * 60 + m) * 60 + s;
}

////////////////////////////////////////////////////////////////////////////////
// DateTime implementation - ignores time zones and DST changes
// NOTE: also ignores leap seconds, see http://en.wikipedia.org/wiki/Leap_second

DateTime::DateTime (uint32_t t) {
  t -= SECONDS_FROM_1970_TO_2000;    // bring to 2000 timestamp from 1970

    ss = t % 60;
    t /= 60;
    mm = t % 60;
    t /= 60;
    hh = t % 24;
    uint16_t days = t / 24;
    uint8_t leap;
    for (yOff = 0; ; ++yOff) {
        leap = yOff % 4 == 0;
        if (days < 365 + leap)
            break;
        days -= 365 + leap;
    }
    for (m = 1; ; ++m) {
        uint8_t daysPerMonth = pgm_read_byte(daysInMonth + m - 1);
        if (leap && m == 2)
            ++daysPerMonth;
        if (days < daysPerMonth)
            break;
        days -= daysPerMonth;
    }
    d = days + 1;
}

DateTime::DateTime (uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t min, uint8_t sec) {
    if (year >= 2000)
        year -= 2000;
    yOff = year;
    m = month;
    d = day;
    hh = hour;
    mm = min;
    ss = sec;
}

static uint8_t conv2d(const char* p) {
    uint8_t v = 0;
    if ('0' <= *p && *p <= '9')
        v = *p - '0';
    return 10 * v + *++p - '0';
}

// A convenient constructor for using "the compiler's time":
//   DateTime now (__DATE__, __TIME__);
// NOTE: using PSTR would further reduce the RAM footprint
DateTime::DateTime (const char* date, const char* time) {
    // sample input: date = "Dec 26 2009", time = "12:34:56"
    yOff = conv2d(date + 9);
    // Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
    switch (date[0]) {
        case 'J': m = date[1] == 'a' ? 1 : m = date[2] == 'n' ? 6 : 7; break;
        case 'F': m = 2; break;
        case 'A': m = date[2] == 'r' ? 4 : 8; break;
        case 'M': m = date[2] == 'r' ? 3 : 5; break;
        case 'S': m = 9; break;
        case 'O': m = 10; break;
        case 'N': m = 11; break;
        case 'D': m = 12; break;
    }
    d = conv2d(date + 4);
    hh = conv2d(time);
    mm = conv2d(time + 3);
    ss = conv2d(time + 6);
}

uint8_t DateTime::dayOfWeek() const {   
    uint16_t day = date2days(yOff, m, d);
    return (day + 6) % 7; // Jan 1, 2000 is a Saturday, i.e. returns 6
}

uint32_t DateTime::unixtime(void) const {
  uint32_t t;
  uint16_t days = date2days(yOff, m, d);
  t = time2long(days, hh, mm, ss);
  t += SECONDS_FROM_1970_TO_2000;  // seconds from 1970 to 2000

  return t;
}

////////////////////////////////////////////////////////////////////////////////
// RTC_DS1307 implementation

static uint8_t bcd2bin (uint8_t val) { return val - 6 * (val >> 4); }
static uint8_t bin2bcd (uint8_t val) { return val + 6 * (val / 10); }

uint8_t RTC_DS1307::begin(void) {
  return 1;
}

uint8_t RTC_DS1307::isrunning(void) {
  Wire.beginTransmission(DS1307_ADDRESS);
  Wire.send(0);
  Wire.endTransmission();

  Wire.requestFrom(DS1307_ADDRESS, 1);
  uint8_t ss = Wire.receive();
  return !(ss>>7);
}

void RTC_DS1307::adjust(const DateTime& dt) {
    Wire.beginTransmission(DS1307_ADDRESS);
    Wire.send(0);
    Wire.send(bin2bcd(dt.second()));
    Wire.send(bin2bcd(dt.minute()));
    Wire.send(bin2bcd(dt.hour()));
    Wire.send(bin2bcd(0));
    Wire.send(bin2bcd(dt.day()));
    Wire.send(bin2bcd(dt.month()));
    Wire.send(bin2bcd(dt.year() - 2000));
    Wire.send(0);
    Wire.endTransmission();
}

DateTime RTC_DS1307::now() {
  Wire.beginTransmission(DS1307_ADDRESS);
  Wire.send(0);
  Wire.endTransmission();
 
  Wire.requestFrom(DS1307_ADDRESS, 7);
  uint8_t ss = bcd2bin(Wire.receive() & 0x7F);
  uint8_t mm = bcd2bin(Wire.receive());
  uint8_t hh = bcd2bin(Wire.receive());
  Wire.receive();
  uint8_t d = bcd2bin(Wire.receive());
  uint8_t m = bcd2bin(Wire.receive());
  uint16_t y = bcd2bin(Wire.receive()) + 2000;
 
  return DateTime (y, m, d, hh, mm, ss);
}

////////////////////////////////////////////////////////////////////////////////
// RTC_Millis implementation

long RTC_Millis::offset = 0;

void RTC_Millis::adjust(const DateTime& dt) {
    offset = dt.unixtime() - millis() / 1000;
}

DateTime RTC_Millis::now() {
  return (uint32_t)(offset + millis() / 1000);
}

////////////////////////////////////////////////////////////////////////////////

Ejemplo que me funciona con IDE 22

ds1307.pde
Code:
// Date and time functions using a DS1307 RTC connected via I2C and Wire lib

#include <Wire.h>
#include "RTClib.h"

RTC_DS1307 RTC;

void setup () {
    Serial.begin(57600);
    Wire.begin();
    RTC.begin();

  if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
}

void loop () {
    DateTime now = RTC.now();
   
    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(' ');
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();
   
    Serial.print(" since midnight 1/1/1970 = ");
    Serial.print(now.unixtime());
    Serial.print("s = ");
    Serial.print(now.unixtime() / 86400L);
    Serial.println("d");
   
    // calculate a date which is 7 days and 30 seconds into the future
    DateTime future (now.unixtime() + 7 * 86400L + 30);
   
    Serial.print(" now + 7d + 30s: ");
    Serial.print(future.year(), DEC);
    Serial.print('/');
    Serial.print(future.month(), DEC);
    Serial.print('/');
    Serial.print(future.day(), DEC);
    Serial.print(' ');
    Serial.print(future.hour(), DEC);
    Serial.print(':');
    Serial.print(future.minute(), DEC);
    Serial.print(':');
    Serial.print(future.second(), DEC);
    Serial.println();
   
    Serial.println();
    delay(3000);
}
1143  International / Español / Re: Tutorial para Interrupciones on: August 06, 2011, 08:53:11 pm
exacto ionhs ese era el video del que hablaba. la verdad es que todos los videos de ese chico son muuuuy buenos, explica de forma super clara y sencilla, yo he aprendido muchisimo simplemente viendo sus videos.

genial que hayas incluido el enlace en el primer post.
1144  International / Español / Re: Sticky - Post fijo en el foro para cosas importantes on: August 06, 2011, 01:18:46 pm
pues tambien, pero yo veo la Guia esa y pienso, ni de coña usuarios nuevos (y no tan nuevos) se la leen toda para buscar lo que necesitan.
Ademas era por poner post nuestros que nos parezcan utiles.

pero vamos, como querais
1145  International / Español / Re: Construir regulador de AC a DC para alimentar Arduino on: August 06, 2011, 01:16:47 pm
Genial creo que ya esta todo claro, el lunes ire a la tienda a por el puente de diodos y los condensadores.
Entonces necesito:
- Puente de diodos que equivalgan a 1N4001
- c2= 0.33μF
- C3 = 0.1μF

cuanto le meto al C1 para que no me afecte las lecturas?
1146  International / Español / Sticky - Post fijo en el foro para cosas importantes on: August 06, 2011, 11:52:54 am
Hola a todos, que os parece si pedimos crear un post fijo en el foro para que aparezca tipo "Colabora con el equipo de robotica infantil Complubot" y el de "Licencias de Hardware de Fuentes Abiertas - Definición 1.0"
En el podríamos poner varios listados de post importantes que contengan información difícil de encontrar o respuesta a preguntas que se hacen muy amenudo por foreros nuevos.
Podríamos usar este (el que estáis leyendo) para proponer una estructura inicial y 2 o 3 post para cada apartado y luego crear dicho post fijo, y a partir de ahi, ir ampliando.
Temas que se podrían tratan y posts ejemplo:

Documentos útiles
-- Acordeón/Chuleta del lenguaje Arduino

- Tutoriales
--  Tutorial para Interrupciones
-- recuerdo que habia un post con un listado de tutoriales y material para gente que empieza
-- etc

- Post Útiles
-- En qué tiendas soleis comprar ?


que os parece la idea? Lo ampliamos ??
1147  International / Español / Re: Tutorial para Interrupciones on: August 06, 2011, 11:46:46 am
muchas gracias ionhs !!!

recuerdo que antes de encontrar un tutorial en youtube de interrupciones no terminaba de pillarlo, tus archivos estan genial, ahora los leere con mas calma pero igual es buena idea crear un PDF con los 3.
1148  International / Español / Re: Problema con el ángulo del servo (knob) on: August 06, 2011, 11:34:06 am
que extraño, hombre siempre puedes probar a hacer esto, pero claro pierdes mucha precisión...

  val = map(val, 800, 1023, 0, 179);     // scale it to use it with the servo (value between 0 and 180)

si le metes los valores de 0 a 179 mediante un 'for' te funciona bien el servo?? Es decir gira todos los 180 grados? por descartar que sea problema del servo.
1149  International / Español / Re: Alguien monto el RTC con el DS1703 (Circuito) on: August 06, 2011, 11:30:41 am

usa la libreria que viene con el programa, hoy mismo he estado trasteandola por primera vez y funciona perfectamente, incluso te actualiza la fecha y hora en base a la de tu ordenador en el momento de compilar el programa !! una bendición vamos !! eso si recuerda luego comentar la linea de ajuste de fecha y hora y volver a cargar el programa sino cada vez que se resetee te metera la fecha y hora de cuando se compilo.

SergeGsx

¿Donde esta esa opcion que te actualiza la hora en el momento de compilar con la de tu ordenador?

No encuentro en wire esa opcion ni ejemplo

Es que lo estoy haciendo manualmente y seria genial olvidarte de eso

Un saludo de un Gsf

Lo tienes en el Arduino 22, entras en File...Examples...RTCLib...ds1307, te lo copio aqui de todas formas

Code:
// Date and time functions using a DS1307 RTC connected via I2C and Wire lib

#include <Wire.h>
#include "RTClib.h"

RTC_DS1307 RTC;

void setup () {
    Serial.begin(57600);
    Wire.begin();
    RTC.begin();

  if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
}

void loop () {
    DateTime now = RTC.now();
   
    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(' ');
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();
   
    Serial.print(" since midnight 1/1/1970 = ");
    Serial.print(now.unixtime());
    Serial.print("s = ");
    Serial.print(now.unixtime() / 86400L);
    Serial.println("d");
   
    // calculate a date which is 7 days and 30 seconds into the future
    DateTime future (now.unixtime() + 7 * 86400L + 30);
   
    Serial.print(" now + 7d + 30s: ");
    Serial.print(future.year(), DEC);
    Serial.print('/');
    Serial.print(future.month(), DEC);
    Serial.print('/');
    Serial.print(future.day(), DEC);
    Serial.print(' ');
    Serial.print(future.hour(), DEC);
    Serial.print(':');
    Serial.print(future.minute(), DEC);
    Serial.print(':');
    Serial.print(future.second(), DEC);
    Serial.println();
   
    Serial.println();
    delay(3000);
}


esta es la linea que ajusta el reloj, pero recuerda que una vez este ajustado, debes quitar ese programa del arduino o comentar dicha linea y volver a cargar el programa, sino cada vez que se resetee volvera a establecer la fecha y hora de cuando se compilo y ya no sera valida.
Code:
    RTC.adjust(DateTime(__DATE__, __TIME__));
1150  International / Español / Re: Alguien monto el RTC con el DS1703 (Circuito) on: August 05, 2011, 06:12:24 pm
Que librerías usáis? Algún tutorial?

Si es el mismo circuito. Lo único que también monte el SQW que en principio no se usa. Pues voy a soldar el GND y probar si funciona!

Los nuevos llevan?

(Creo que vale la pena comprarlo hecho porque si vale 15€ casi en material seguro que sale por 10€ y con lo que se tarda...)

Gracias

Nota: también tiene un condensador multicapa 100k entre la patilla 8 y massa.

usa la libreria que viene con el programa, hoy mismo he estado trasteandola por primera vez y funciona perfectamente, incluso te actualiza la fecha y hora en base a la de tu ordenador en el momento de compilar el programa !! una bendición vamos !! eso si recuerda luego comentar la linea de ajuste de fecha y hora y volver a cargar el programa sino cada vez que se resetee te metera la fecha y hora de cuando se compilo.

yo compre 2 kits montados por ebay y me salieron muy bien de precio, te lo busco...
encontrado
http://myworld.ebay.es/i.control/
1151  International / Español / Re: ¿Cuantas veces se puede programar el chip Atmega de Arduino? on: August 05, 2011, 06:06:43 pm
3 meses? vamos como no estuvieses haciendo esto...



yo estoy ahora calculando cada cuanto hacer que mi programa guarde en la EEPROM, asi que sigo atento de este post.

me surge una duda, si solo utilizamos una dirección para escribir y leer, los 100,000 ciclos son para esa dirección o afecta a toda la EEPROM? porque yo por ahora solo necesito 1 o 2 direcciones de la EEPROM por lo que el resto de la memoria estaria limpia y al 100% de vida,no?
1152  International / Español / Re: Construir regulador de AC a DC para alimentar Arduino on: August 05, 2011, 11:29:53 am
ante todo muchas gracias por intentar ayudarme heke.

me flipe con lo del diodo zener, lo que necesito son diodos normales para poner en el rectificador para pasar de AC a DC, verdad? los 1N4001 serian correctos?

tras estros cuatro diodos (1N4001) deberia ir el esquema 2 que has puesto,no? que es el que se encarga de regular a 5V.
ese esquema es muy parecido al que yo habia puesto, los diodos 1N4148 puedo sustituirlos por 1N4001 y asi solo tengo que ir a comprar 1 tipo de diodo?
El S1 es un switch? no entiendo ese componente, por lo demas creo que esta claro.
Lo unico que si quiero darle mas estabilidad a los 5V, y a su vez garantizar que la medicion de 9Vac no es afectada, deberia hacer algun condensador mas grande?

mil gracias
1153  International / Español / Re: Problema con el ángulo del servo (knob) on: August 05, 2011, 07:15:03 am
puedes poner las lecturas del potenciometro cuando lo cambias de un extremo a otro?
simplemente haz un Serial.println(analogRead(potpin)); y gira el potenciometro de un extremo al otro, que valores salen? de 0 a 1023 ??
1154  International / Español / Re: corregirme el codigo plis on: August 04, 2011, 06:38:38 pm
val = map(val, 0, 1023, 0, 179);
supongo que debería ser
val1 = map(val1, 0, 1023, 0, 179);

bravo !!

te me has adelantado. jj
1155  International / Español / Re: CAN BUS: Red de Arduinos on: August 04, 2011, 05:47:30 pm
Haber si lo pillo, tiene el pin INT del mcp2515 conectado a una entrada del arduino y en el loop lee estas entrada para saber si hay un mensaje CAN.

Preparo mi idea de casa domotica y lo pongo aquí.
Saludos.

correcto! (a no ser que Igor diga lo contrario smiley-razz)
Pages: 1 ... 75 76 [77] 78 79 ... 95