Show Posts
Pages: 1 [2] 3
16  Using Arduino / Programming Questions / Re: String or Char Arrays Length Definition on: February 06, 2013, 06:57:05 am
I was thinking in something like this:

tmpName = Serial.read()

if (strlen($tmpName) < 2 || strlen($tmpName) > 8 )
     Serial.println("The input is not valid!, please retry (min: 3 chars, max 8 chars)");
else
     char Name[9] = tmpName

But I don't know how to work around strlen()
17  Using Arduino / Programming Questions / Re: String or Char Arrays Length Definition on: February 06, 2013, 05:45:55 am
Quote
What should I do:
Neither. 8 characters need a 9 element array, so there is room for the terminating NULL.
Ok, got it... Forgot about the NULL.
Are you suggesting me to go char text[9] instead of string?

Quote
In either case, how to limit Serial.read() to read only 8 chars?
That depends on what you intend to do if there is more than 8 characters sent. I would read and store the first 8, and read and discard the rest until the end-of-packet marker arrived.

I really want users to think through and only input 8 characters. If there is more than 8 chars, warn user and ask again. Only 'save' (change variable) if the input is 3<=text>=8, then LCD print some info with the user input!
18  Using Arduino / Programming Questions / String or Char Arrays Length Definition on: February 06, 2013, 05:33:46 am
Hi there,

I'm interfacing a LCD with a consumer, prompting to enter some text via serial.
I have some default text (easy enough), but I will like to limit input to 8 character strings. What should I do:

  • Define input as char text[8].
  • Define input as String.


In either case, how to limit Serial.read() to read only 8 chars? (If loop with string.lenght == 8 )? or is there a more efficient way?
19  Using Arduino / Programming Questions / Re: Benefits (advantages) of creating Libraries on: February 06, 2013, 04:30:43 am
Thanks! I now have a better understanding of Libraries!... Regards!
20  Using Arduino / Programming Questions / Benefits (advantages) of creating Libraries on: February 05, 2013, 02:24:59 pm
Hello everybody.

As my project progresses and I keep adding hardware and libraries I was wondering If I should create my own. I must admit that I'm not as C++ fluent as I would like to be, hence I come here for your comments.

What are the benefits of creating Libraries vs in-sketch formulas?
21  Using Arduino / Programming Questions / Re: How can I insert the password.keypad example in my code ? on: February 04, 2013, 12:10:12 pm
Good I speak two languages, I found the solution in Spanish... The only problem with the Library is 1.0 compatibility. You need to change in Password.h #include <WProgram.h> for #include <Arduino.h> and the library works great!
22  Using Arduino / Programming Questions / Re: How can I insert the password.keypad example in my code ? on: February 04, 2013, 11:09:15 am
Did you achieve this? I want to do exactly what you wanted... <i2ckeypad.h> & <Password.h>
23  Development / Other Hardware Development / Re: Troubleshooting a 4x4 16 keys keypad [solved] on: February 01, 2013, 06:32:54 am
After all it wasn't a hardware problem, I believe that with my keypad there's a need to include some pull-up resistors. I actually figure this out after changing my scope. As I wouldn't be able to use as many I/O pins anyways, I connected the keypad via I2C with a PCF8574AN (As instructed) with the http://playground.arduino.cc/Main/I2CPortExpanderAndKeypads library and the modifications suggested by PaulS here: http://arduino.cc/forum/index.php/topic,102018.0.html (5th post).
24  Development / Other Hardware Development / Re: Troubleshooting a 4x4 16 keys keypad on: January 31, 2013, 11:41:29 am
Hey CrossRoads,

what's a bdy ? a typo or abbreviation for...

If I jump pin 6 with the other pins, I get all the keys that are missing on ROW0 (2,3,A) without pressing the keypad.
Also if I jump 2 with the rest, I get all the missing keys in COL0 (4,7,*) without pressing the keypad.

What should I do?
25  Development / Other Hardware Development / Troubleshooting a 4x4 16 keys keypad [solved] on: January 31, 2013, 08:22:23 am
Hello community, I come here because I'm not quite sure if I'm doing something wrong or if there is something wrong with my hardware. Here's the deal:

1. I have connected as directed per tutorial a 4x4 keypad to an arduino leonardo using the following code:
Code:
#include <Keypad.h>

const byte ROWS = 4; // Four rows
const byte COLS = 4; // Four columns
// Define the Keymap
char keys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'},
};
// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.
byte rowPins[ROWS] = { 6, 8, 7, 9 };
// Connect keypad COL0, COL1 and COL2 to these Arduino pins.
byte colPins[COLS] = { 2, 5, 4, 3 };

// Create the Keypad
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

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

void loop()
{
  char key = kpd.getKey();
  if(key)  // Check for a valid key.
  {
    Serial.println(key);
    }
}

It works quite ok, but some keys are not read by the Arduino when the're hit.
  • Keys that don't work: 2, 3, A & 4, 7, *.
  • All rest work and show accordingly
  • All col OR row have at least 1 key working OK

What am i missing here?
26  International / Español / Re: Hackeando una báscula de baño para obtener más resolución [INFO] on: January 30, 2013, 09:03:46 am
Chicos, otra duda. Antes estaba usando dos celdas de 3 cables cada una de una báscula de baño (para evitar errores), ahora, cambié esas celdas, por una de 4 cables de 5km de báscula de cocina. La verdad es que funciona bastante bien, pero tengo unas dudas:

  • Aunque leo 2.5V en cada salida de la celda (una azul y otra blanca), la salida del amplificador está entre 0.12V y 2,70V (con una resistencia de 100 Ohm), si vario la resistencia, logro lo siguente (0.23V -a-2.70V con 4,7ohm -y-0.08V -a- 2.02V)  ... nunca llega a los 5V. Por qué pierdo casi la midad de mi rango? cómo puedo aumentar hasta un máximo de 5V? 
  • Considerando que lo máximo de voltaje que tengo es 2.7V; intenté aplicar el código del otro día y al medir unos datos conocidos (p.e.: 1Kg de harina - 518 analógico; lata de atún, 370g - 307), con esto en mente... todos los valores entre estos dos números o cercanos a ellos pintan bien, PERO al quitar todo el peso, la lectura es Analog(29) -y- MAP(-470) y un sobre con 90g de semillas es Analog (88), MAP (-285). Debería poner rangos y hacer un switch/caso o varios if concatenados o estoy interpretando mal la fórmula?
27  International / Español / Re: Hackeando una báscula de baño para obtener más resolución [INFO] on: January 29, 2013, 12:29:51 pm
Ya ví el error, cambie los cables rojos, el que estaba en 6) lo puse en 7) y viceversa y listo, el voltaje parte ahora desde 0 cuando no hay excitación!
Ahora al código, jajaja
28  International / Español / Re: Hackeando una báscula de baño para obtener más resolución [INFO] on: January 29, 2013, 12:05:40 pm
Es bastante errática la lectura, pero efectivamente funciona el circuito. Lo único que me pareció un poco extraño es que en reposo (es decir, sin aplicarle carga a la célula) la salida indica 5V y según voy aplicando fuerza, baja hasta cero... (aplicando mucha fuerza).

Por esta misma razón, no puedo leer en miliV las celdas, porque en reposo una está en 2.5 y la otra en -2.5
Estoy conectando mal el circuito?
29  International / Español / Re: Hackeando una báscula de baño para obtener más resolución [INFO] on: January 29, 2013, 11:30:51 am
Hola chicos, a ver si me pueden ayudar.

Compre una balanza de baño por 5€ en un mercadillo y la balanza funcionaba bien. Le quite las células de carga y tras recibir el INA125P estoy tratando de obtener los resultados y no veo luz. Queria ver si me podían ayudar.

Conecciones: 1) y 2) a 5V, 3) a GND, 4) a 15), 5) a GND, 6) cable rojo de célula #1, 7) cable rojo de célula #2, smiley-cool y 9) conectados a través de una resistencia de 1K, 10) y 11) conectados a A3, 12) a GND, 13) 14) y 16) N.C. (libres).

Parecido al de este abajo, pero en vez de usar una celda de 4 cables, uso 2 de tres cables. los cables blancos van a 5V y los negros van a GND


Estoy probando este código:
Code:
// Arduino as load cell amplifier
// by Christian Liljedahl
// christian.liljedahl.dk

// Load cells are linear. So once you have established two data pairs, you can interpolate the rest.

// Step 1: Upload this sketch to your arduino board

// You need two loads of well know weight. In this example A = 10 kg. B = 30 kg
// Put on load A
// read the analog value showing (this is analogvalA)
// put on load B
// read the analog value B

// Enter you own analog values here
float loadA = 0; // kg
int analogvalA = 70; // analog reading taken with load A on the load cell

float loadB = 10; // kg
int analogvalB = 600; // analog reading taken with load B on the load cell

// Upload the sketch again, and confirm, that the kilo-reading from the serial output now is correct, using your known loads

float analogValueAverage = 0;

// How often do we do readings?
long time = 0; //
int timeBetweenReadings = 200; // We want a reading every 200 ms;

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

void loop() {
  int analogValue = analogRead(0);

  // running average - We smooth the readings a little bit
  analogValueAverage = 0.99*analogValueAverage + 0.01*analogValue;

  // Is it time to print?
  if(millis() > time + timeBetweenReadings){
    float load = analogToLoad(analogValueAverage);

    Serial.print("analogValue: ");Serial.println(analogValueAverage);
    Serial.print("             load: ");Serial.println(load,5);
    time = millis();
  }
}

float analogToLoad(float analogval){

  // using a custom map-function, because the standard arduino map function only uses int
  float load = mapfloat(analogval, analogvalA, analogvalB, loadA, loadB);
  return load;
}

float mapfloat(float x, float in_min, float in_max, float out_min, float out_max)
{
  return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}

Resultados:
Code:
analogValue: 73.83
             load: 0.07219
analogValue: 78.28
             load: 0.15627
analogValue: 80.07
             load: 0.19009

Tengo varias dudas, la primera es si tengo bien conectado el circuito. (estoy siguiendo lo visto aqui: http://cerulean.dk/words/?page_id=42). Después, si bien entiendo como funciona la función MAP y sé que al principio tengo declaradas dos variables que se deben ajustar para calibrar la balanza, cómo puedo asegurarme que la léctura tiene sentido?

Gracias de antemano!!!
30  International / Español / Re: Lectura DNIe on: January 24, 2013, 07:30:49 pm
@rfken acabo de probar con mi DNIe y el ATR que me deja tanto en SCTest como en SCTest2 (el segundo sólo sirve para tarjetas asíncronas) es un sólo byte en mi caso 3B. Las tarjetas SIM son de este tipo (asíncronas) y esta librería logra leer 22 bytes de ATR en ella.

Según el autor, el la librería esta todo lo que necesito para poder leer y escribir en ella, pero realmente me supera el código y no se cómo implementarlo. Con respecto al post que compartes, ya lo había visto. Intenté usar su código, pero lo único que recibo son puros bytes FF. Puede ser que él lo ha diseñado para 3 tipos de tarjetas (ninguna tan grande como la mía), que usa directamente un hardware más costoso (que no se si es un socket sobre un PCB o tiene algo escondido) o una combinación de ambas. Nuevamente, si supiera como ver las diferencias en el código lo intentaría.

Seguiré intentando a ver hasta donde llego...

Creo que la opción que me indicas es muy válida, la del EEPROM, de hecho, la descripción del producto dice "Intelligent 1-KByte EEPROM with Write Protect Function and Programmable Security Code (PSC)" así que supongo que si se podría. Si sabes de algún tutorial al que pueda hacer referencia (español o inglés) te lo agradecería. Dejo copia de las tarjetas que tengo!
Pages: 1 [2] 3