Show Posts
Pages: [1] 2 3 4
1  International / Proyectos / Re: Proyecto nuevo con TM1640 Ayuda plz... on: September 14, 2012, 08:47:03 am
Buenas...

Tras estar rebuscando los numerosos scripts que hay circulando al respecto he encontrado este que se adapta a mis especiales encoders;)

Code:
#include <Bounce.h>

// This code increments or decrements a counter based on
// the status of a rotaty encoder

#define pin1 5
#define pin2 6
#define LED 13
int counter = 0;

// Instantiate a Bounce object with a 5 millisecond debounce time
// Only pin1 needs to be debounced. It is assumed that pin2
// will be stable when reading pin1
Bounce bouncer1 = Bounce( pin1,6 );

void setup() {
  pinMode(pin1,INPUT);
  pinMode(pin2,INPUT);
  pinMode(LED,OUTPUT);
  Serial.begin(9600);
}

void loop() {
 // Update the debouncer
  bouncer1.update ( );

 // Turn on or off the LED and
 // increment or decrement the counter
 if ( bouncer1.risingEdge()) {
   if (digitalRead(pin2)){
     digitalWrite(LED, HIGH );
     counter++;
     Serial.println(counter*10);
   }else{
     counter--;
     Serial.println(counter*10);
   }
 } else {
    digitalWrite(LED, LOW );
 }

}
A modo de prueba he modificado la asignacion de pines y el bounce lo he pasado a 6 milisegundos... y para hacer incrementos de 10 he multiplcado counter por ese digito...
El resultado...
http://www.youtube.com/watch?v=ZRu4MQbG_Dk&feature=youtu.be

Bueno, ahora a por el script principal a ver si consigo hacerlo sin meter mucho la pata.

Un saludo.

inigohe
2  International / Proyectos / Re: Proyecto nuevo con TM1640 Ayuda plz... on: September 14, 2012, 01:23:57 am
Buenas a todos...

He estado mirando en el blog Buxtronics... y he encontrado el siguiente script para el funcionamiento de encoders...

Code:
/* Rotary encoder handler for arduino.
 *
 * Copyright 2011 Ben Buxton. Licenced under the GNU GPL Version 3.
 * Contact: bb@cactii.net
 *
 * Quick implementation of rotary encoder routine.
 *
 * More info: http://www.buxtronix.net/2011/10/rotary-encoders-done-properly.html
 *
 */

// Half-step mode?
#define HALF_STEP
// Arduino pins the encoder is attached to. Attach the center to ground.
#define ROTARY_PIN1 5
#define ROTARY_PIN2 6
// define to enable weak pullups.
#define ENABLE_PULLUPS

#define DIR_CCW 0x10
#define DIR_CW 0x20

#ifdef HALF_STEP
// Use the half-step state table (emits a code at 00 and 11)
const unsigned char ttable[6][4] = {
  {0x3 , 0x2, 0x1,  0x0}, {0x23, 0x0, 0x1,  0x0},
  {0x13, 0x2, 0x0,  0x0}, {0x3 , 0x5, 0x4,  0x0},
  {0x3 , 0x3, 0x4, 0x10}, {0x3 , 0x5, 0x3, 0x20}
};
#else
// Use the full-step state table (emits a code at 00 only)
const unsigned char ttable[7][4] = {
  {0x0, 0x2, 0x4,  0x0}, {0x3, 0x0, 0x1, 0x10},
  {0x3, 0x2, 0x0,  0x0}, {0x3, 0x2, 0x1,  0x0},
  {0x6, 0x0, 0x4,  0x0}, {0x6, 0x5, 0x0, 0x10},
  {0x6, 0x5, 0x4,  0x0},
};
#endif
volatile unsigned char state = 0;

/* Call this once in setup(). */
void rotary_init() {
  pinMode(ROTARY_PIN1, INPUT);
  pinMode(ROTARY_PIN2, INPUT);
#ifdef ENABLE_PULLUPS
  digitalWrite(ROTARY_PIN1, HIGH);
  digitalWrite(ROTARY_PIN2, HIGH);
#endif
}

/* Read input pins and process for events. Call this either from a
 * loop or an interrupt (eg pin change or timer).
 *
 * Returns 0 on no event, otherwise 0x80 or 0x40 depending on the direction.
 */
unsigned char rotary_process() {
  unsigned char pinstate = (digitalRead(ROTARY_PIN2) << 1) | digitalRead(ROTARY_PIN1);
  state = ttable[state & 0xf][pinstate];
  return (state & 0x30);
}

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

void loop() {
  unsigned char result = rotary_process();
  if (result) {
    Serial.println(result == DIR_CCW ? "LEFT" : "RIGHT");   
  }

}


https://dl.dropbox.com/u/58726056/sketch_sep06c/rotary3.ino
https://dl.dropbox.com/u/58726056/sketch_sep06c/test%20encoders%20radio%20panel2.avi

http://www.youtube.com/watch?v=40EYTRmqg8A&feature=youtu.be

Como veis tengo una empanada en este momento que no se que hacer para salir de esta situacion...

Inigohe
3  International / Proyectos / Re: Proyecto nuevo con TM1640 Ayuda plz... on: September 13, 2012, 07:24:13 am
Saludos Jorge...

Ante todo gracias por contestar...

Te pongo el enlace publico dropbox donde tengo el .ino... en el aparecen las librerias empleadas y sus enlaces correspondientes...

https://dl.dropbox.com/u/58726056/sketch_sep06c/panel_inigo_02/panel_inigo_02.ino

Cuando te refieres a un timer, es a un ic??? o un modulo que cuente los ciclos de giro dentro del script???

He cargado el script de comprobacion de dos encoders que hay en el link de encoder.h y el resultado es el siguiente, con cada ciclo del encoder a derecha o izquierda sube 4 unds.



Es probable que el hecho de que sean 2-bit gray code sea el motivo por el cual ese funcionamiento digamos erroneo.

Luego estos funcionan bien y hay que modificar el script... digo yo!!!!

Un saludo.

inigohe
4  International / Software / Re: Ayuda con script Arduino on: September 12, 2012, 05:53:14 am
Saludos  a todos..

Alguien que controle bien el funcionamiento de encoders podira pasar por el post de proyectos por favor, tengo un problemilla que no consigo solucionar.

Gracias.

inigohe
5  International / Proyectos / Re: Proyecto nuevo con TM1640 Ayuda plz... on: September 12, 2012, 04:05:24 am
 Saludos a todos...

Aqui estoy de nuevo, tengo un pequeño problemilla...

De una parte tengo que hacer numerosos giros del encoder para incrementar el valor de la frecuencia, bien Active como StandBy, habria algun tipo de formula que permitiera de algun modo poder incrementar los valores de 10 en 10 o 100 en 100 en funcion de la velocidad de giro, teniendo en cuenta que el valor maximo es 999,99 hz.

Y de otra parte, mi idea es que al girar la frecuencia que sea la que sea hacia la izquierda el valor correspondiente minore, cosa que no me sucede... creo que he cometido algun tipo de error.



Aunque seguramente no sea el que me los vendio las especificaciones de los encoders son las siguientes...

Electrical Characteristics
Output .........................2-bit gray code
Closed Circuit Resistance ......3 ohms maximums
Contact Rating .................1 mA @ 5 VDC
Insulation Resistance ..........10 megohms @ 250 VDC
Dielectric Withstanding Voltage
Sea Level ......................50 VAC minimum
Electrical Travel ..............Continuous
Contact Bounce (15 RPM).........5.0 ms. maximum
RPM (Operating) ................100 maximum
Environmental Characteristics
Operating Temperature Range .....-30 °C to +70 °C (-22 °F to +158 °F)
Storage Temperature Range .......-40 °C to +85 °C (-40 °F to +185 °F)
Humidity.........................MIL-STD-202, Method 103B, Condition B
Vibration .......................30 G
Contact Bounce ..................10~55~10 Hz / 1 min. / Amplitude 1.5 mm
Shock ...........................100 G
Rotational Life..................30,000 cycles minimum
Switch Life .....................20,000 cycles minimum
IP Rating........................IP 40
Mechanical Characteristics
Mechanical Angle ................360 ° continuous
Running Torque ..................30.6 to 204 g-cm (0.42 to 2.83 oz.-in.)
Shaft Side Load (Static) ........2.04 kgf (4.5 lbs.) minimum
Weight ..........................3 gm (0.1 oz.) maximum
Terminals .......................Printed circuit board terminals
Terminals .......................Printed circuit board terminals
Soldering Condition
Wave Soldering...................Sn95.5/Ag2.8/Cu0.7 solder with no-clean flux: 260 °C max. for 3-5 seconds
Hand Soldering...................Not recommended
Hardware.........................Konb
Switch Characteristics
Switch Type .....................Contact Push ON Momentary SPST
Power Rating (Resistive Load) ...10 mA at 5 V DC
Switch Travel....................0.5 +0.4/-0.3 mm
Switch Actuation Force ..........360 +153/-102 gf (5 +2.1/-1.4 oz.-in.)

http://www.sure-electronics.net/DC,IC%20chips/CS-CO043-5.jpg
http://www.sure-electronics.net/DC,IC%20chips/CS-CO043_7.jpg

Igualmente me he topado con el blog de Ben Buxton, donde habla de los rotary encoders problematicas y soluciones... pero sinceramente no me entero demasiado...

http://www.buxtronix.net/2011/10/rotary-encoders-done-properly.html


Gracias a todos por las respuestas.
]inigohe
6  International / Proyectos / Re: Proyecto nuevo con TM1640 Ayuda plz... on: September 10, 2012, 11:58:47 pm
Buenas...
Aqui estoy de nuevo... estoy tratando de recoger los datos que envia arduino a traves del puerto serie pero cuando hago el siguiente script
de phyton y me da error, algun compañero podria decirme donde meto el cazo...

Code:
import serial
ser = serial.Serial(‘com3’, 9600)
dato = ser.readline()
print dato

el mensaje de error

Code:
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    print dato
NameError: name 'dato' is not defined

Gracias de antemano.

inigohe
7  International / Proyectos / Re: Proyecto nuevo con TM1640 Ayuda plz... on: September 09, 2012, 07:01:10 am
Actualizado contenido con script depurado y video de funcionamiento.

inigohe
8  International / Proyectos / Re: Proyecto nuevo con TM1640 Ayuda plz... on: September 07, 2012, 07:09:33 am
Saludos,...

Por fin he conseguido compilar el script, a ver si hago el montaje con los dos encoders rotativos, el rotary switch y la tira Tm1640.

A ver que sale.... smiley-confuse

Os adjunto el fichero en formato pdf y punto ino, para que podais abrirlo con el compilador...

https://dl.dropbox.com/u/58726056/sketch_sep06c/video%20stack.avi
https://dl.dropbox.com/u/58726056/sketch_sep06c/panel_inigo_02.pdf
https://dl.dropbox.com/u/58726056/sketch_sep06c/panel_inigo_02.ino



He incluido las librerias Tm1640 de Ricardo Batista y compilado el conjunto satisfactoriamente.

Se ha simplificado mucho el script empleando arrays,... eneste punto ha sido decisivo Alvaro Alea, que me aconsejo y me facilito enormemente la faena.





Como podeis observar, no me he rascado mucho la cabeza con el proto... esto no deberia alterar el resultado final smiley-wink

Muchisimas gracias a Alvaro Alea, Norman Elliot y el resto de compañeros...

Muchas gracias a todos, seguro que os seguire dando la tabarra;))

inigohe
9  International / Proyectos / Re: Proyecto nuevo con TM1640 Ayuda plz... on: September 07, 2012, 02:26:42 am
Kaixo...

Muchas gracias por la respuesta, al igual que tu Norman Elliot del Google Group Tronixstuff, me dijo lo mismo pero cuando pongo el  puñetero ; y compilo me aparece el siguiente mensaje de error...

Code:

sketch_aug31b.cpp: In function 'void loop()':
sketch_aug31b:74: error: expected `;' before 'if'
sketch_aug31b:76: error: 'else' without a previous 'if'
sketch_aug31b.cpp: In function 'void readSwitch()':
sketch_aug31b:104: error: invalid array assignment
sketch_aug31b:107: error: invalid array assignment
sketch_aug31b:110: error: invalid array assignment
sketch_aug31b:113: error: invalid array assignment
sketch_aug31b:116: error: invalid array assignment
sketch_aug31b:119: error: invalid array assignment
sketch_aug31b:122: error: invalid array assignment
sketch_aug31b:125: error: invalid array assignment

No se el motivo, pero cuando pongo el "puñetero" ;, el error if desaparece dandome solamente los siguientes errores...

Code:
sketch_aug31b.cpp: In function 'void readSwitch()':
sketch_aug31b:104: error: invalid array assignment
sketch_aug31b:107: error: invalid array assignment
sketch_aug31b:110: error: invalid array assignment
sketch_aug31b:113: error: invalid array assignment
sketch_aug31b:116: error: invalid array assignment
sketch_aug31b:119: error: invalid array assignment
sketch_aug31b:122: error: invalid array assignment
sketch_aug31b:125: error: invalid array assignment

Como comprenderas estoy bloqueado, ante esta situacion.

Respecto a la longitud del script, es consecuencia de mis carencias en el lenguaje de programacion, seguro que empleando algun tipo de array, char o similar seria posible abreviarlo.

Un saludo desde Urnieta.

Inigohe
10  International / Software / Re: Ayuda con script Arduino on: September 07, 2012, 01:48:17 am
Buenas Pepe...

Ante todo gracias por contestar a mi requerimiento...

Por no repetirme he colocado un link donde tengo el script v.5 tras las ultimas correciones de sintaxis...

Gracias por todo.

inigohe
11  International / Proyectos / Re: Proyecto nuevo con TM1640 Ayuda plz... on: September 07, 2012, 12:26:53 am
Buenas a todos, actualizado post...

inigohe
12  International / Software / Re: Ayuda con script Arduino on: September 06, 2012, 04:48:54 pm
Buenas...

Necesito que me echeis un cable, tengo bloqueado el script porque me sale el siguiente mensaje...

error: expected `;' before 'if' , entre otros, entiendo que el compilador espera en la linea en cuestion un ";" despues de un "If", pero sinceramente, lo he colocado de cualquier manera y no doy en el clavo...

Un saludo.

inigohe
13  International / Proyectos / Re: Proyecto nuevo con TM1640 Ayuda plz... on: September 06, 2012, 01:58:27 pm
Buenas a todos...

Parece ser que no he definido correctamente las funciones readSwitch();   readEncoderCom1()      readEncoderCom2()      readEncoderNav1()      readEncoderNav2()      readEncoderAdf1()      readEncoderAdf2().

En este momento estoy bloqueado, porque creia haber definido correctamente estas funciones llamandolas desde el void loop y luego ejecutandolas, segun los bloques void que se encuentran en la parte inferior al void loop...

Code:
void loop() {
// flightSim.update();                                                                      // Data from Flight simulator Xplane
readSwitch();     // Lectura del sensor
if (stage == 1) {
readEncoderCom1();}
if (stage == 2){
readEncoderCom2();}
if (stage == 3){
readEncoderNav1();}
if (stage == 4){
readEncoderNav2();}
if (stage == 5){
readEncoderAdf1();}
if (stage == 6){
readEncoderAdf2();}
        if (stage == 7)
        readEncoderTrpdr();}

// printLine()     // Usado solo para calibrado y
    // pruebas del Rotary switch y encoders.
}
Code:
 
///////////////////////////////////////////////////
///////////////////////////////////////////////////

 void readEncoderCom1()
{
long encActive=wheelActive.read();                         // Leer el encoder y si ha cambiado
    // escribir Com1FrequencyHz Activo y
    // Standby.
long encStndby=wheelStndby.read();
if (encActive != encoder_prevActive) {
Com1FrequencyHzActive=Com1FrequencyHzActive+(encActive-encoder_prevActive);
encoder_prevActive=encActive;
}
if (encStndby != encoder_prevStndby) {
Com1FrequencyHzStndby=Com1FrequencyHzStndby+(encStndby-encoder_prevStndby);
encoder_prevStndby=encStndby;
    }
}

///////////////////////////////////////////////////
///////////////////////////////////////////////////
el resto es similar en el script...

Link del script en pdf
http://www.4shared.com/office/mWsqssuj/sketch_aug31b_5.html

Errores que persisten...
Code:

sketch_aug31b.cpp: In function 'void readSwitch()':
sketch_aug31b:104: error: invalid array assignment
sketch_aug31b:107: error: invalid array assignment
sketch_aug31b:110: error: invalid array assignment
sketch_aug31b:113: error: invalid array assignment
sketch_aug31b:116: error: invalid array assignment
sketch_aug31b:119: error: invalid array assignment
sketch_aug31b:122: error: invalid array assignment
sketch_aug31b:125: error: invalid array assignment

He corregido todas las coladas que eran bastantes, solo me queda la asignacion del array...  que seguramente sea igualmente facil de resolver.

Gracias a todos por las respuestas...

inigohe
14  International / Proyectos / Re: Proyecto nuevo con TM1640 Ayuda plz... on: September 06, 2012, 09:47:37 am
Buenas tardes Jorge..

Ante todo gracias por la respuesta y disculpa por el retraso en contestarte, he estado unos dias de viaje con la familia fuera.

He estado trabajando en el script y he localizado algunos errores, por ello actualizo este...

Tienes razon con el cortar y pegar y con los cambios de formato (tabuladores y demas).. me estoy creando mas de un problema, de todos modos creo que ahora esta un poco mas claros.

En principio mi idea era crear un void loop con una serie de comandos en funcion de la orden seleccionada por el rotary switch, la lectura del circuito divisor de voltage es correcta, lo he comprobado haciendo un sencillo script de lectura a traves del puerto serie.

He incluido un rango +/- 50 el valor visto en pantalla, como puedes observar.

He puesto el skecht adjunto con este, para que este claro smiley-wink con este solo deciros que los errores que me presenta son..

Code:

sketch_aug31b.cpp: In function 'void loop()':
sketch_aug31b:71: error: 'readSwitch' was not declared in this scope (solucionado)
sketch_aug31b:73: error: 'readEncoderCom1' was not declared in this scope (solucionado)
sketch_aug31b:73: error: expected `;' before '}' token
sketch_aug31b:75: error: 'readEncoderCom2' was not declared in this scope (solucionado)
sketch_aug31b:75: error: expected `;' before '}' token
sketch_aug31b:77: error: 'readEncoderNav1' was not declared in this scope (solucionado)
sketch_aug31b:77: error: expected `;' before '}' token
sketch_aug31b:79: error: 'readEncoderNav2' was not declared in this scope (solucionado)
sketch_aug31b:79: error: expected `;' before '}' token
sketch_aug31b:81: error: 'readEncoderAdf1' was not declared in this scope (solucionado)
sketch_aug31b:81: error: expected `;' before '}' token
sketch_aug31b:83: error: 'readEncoderAdf2' was not declared in this scope (solucionado)
sketch_aug31b:83: error: expected `;' before '}' token
sketch_aug31b.cpp: At global scope:
sketch_aug31b:93: error: expected unqualified-id before '{' token


Es como si no identificara elementos del bucle void loop...

El objetivo es lograr con los encoders mover tanto los digitos de un lado como el otro... estos seran modo activo y standby luego en medio tendremos la variable que corresponde a estos por ejemplo Com 1, que seria seleccionada con el rotary switch con divisores de voltaje.



Este es un faceplate para el panel de control, como veis es una version digamos Beta...



Bueno no se si me he explicado del todo.

Un saludo.

inigohe
15  International / Software / Ayuda con script Arduino on: September 01, 2012, 09:57:34 pm
Saludos a todos compañeros...

Os agradeceria mucho, que echarais un vistazo al script que estoy adaptando para un panel de control de simulador de vuelo. Dado mis pocos conocimientos, seguro que he metido muchas patadas...

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

Todas las correciones seran bienvenidas.

inigohe
Pages: [1] 2 3 4