Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature currently requires accessing the site using the built-in Safari browser.
Bueno ya logre hacer funcionar mas o menos el codigo del triac con el serin cuando lo tenga mas completo lo coloco, ahora les dejo otro aporte de control de dos lcd con un solo pic, un ejemplo que saque de otro foro de http://www.picbasic.co.uk muy bueno de echo tienen librerias para picbasic pro, en fin aca esta la simulacion y el codigo...saludosss
muchas gracias por la respuesta si estoy usando el virtual serial port pero al momento de usarlo y quererlo conectar no se envian los datos yo subi el esquema del proteus y del labview que he estado probando pero no lo he logrado..segun no mal entiendo tengo que usar el max232 por acomples de niveles porque quiero transmitir y recibir desde el micro a la pc
esa es mi duda que no puedo simularlo o soy bien inutil o bien bruto que no alxanzo ha hacerlo
Yo estoy haciendo mi mejor esfuerzo en decirte como lo puedes hacer, lamentablemente yo ni instalado tengo el labview por eso no puedo ayudarte con esa parte del codigo...pero al momento de usarlo y quererlo conectar no se envian los datos yo subi el esquema del proteus y del labview que he estado probando pero no lo he logrado.
segun no mal entiendo tengo que usar el max232 por acomples de niveles porque quiero transmitir y recibir desde el micro a la pc
Al principio se batalla un poco pero es bien sencillo... verificaste que el pic este en un puerto com y el labview en otro....esa es mi duda que no puedo simularlo o soy bien inutil o bien bruto que no alxanzo ha hacerlo
Sigo intentando hacerlo pero le hare la lucha
Hola dario...hoy me ha llegado un wii motion
Hola dario...
pon por aqui la ficha tecnica del aparato....
en esta debe estar el protocolo, o las direcciones y los datos....
Mmm.. pues lei el link del wiki pero no creo que sea lo mismo a lo que necesitas... y el protocolo del giroscopio puede no ser igual al protocolo del aparato en si, es decir, puede que uno se comunique externamente con un microcontrolador que tenga el aparato y ese comunicarse con el giroscopio, tu necesitarias el protocolo del microcontrolador del aparato obvio....no el del giroscopio.
ese protocolo debe ser similar a esto...
Ver el archivo adjunto 65996
y debe estar explicado para que sirve cada instruccion, sino es como intentar manejar un avion sin algun manual de vuelo, ni instructivo, ni instructor
#if !GYRO
// ************************************************************************************************************
// I2C Wii Motion Plus + optional Nunchuk
// ************************************************************************************************************
// I2C adress 1: 0xA6 (8bit) 0x53 (7bit)
// I2C adress 2: 0xA4 (8bit) 0x52 (7bit)
// ************************************************************************************************************
void WMP_init(uint8_t d) {
delay(d);
i2c_writeReg(0xA6, 0xF0, 0x55); // Initialize Extension
delay(d);
i2c_writeReg(0xA6, 0xFE, 0x05); // Activate Nunchuck pass-through mode
delay(d);
if (d>0) {
// We need to set acc_1G for the Nunchuk beforehand; It's used in WMP_getRawADC() and ACC_Common()
// If a different accelerometer is used, it will be overwritten by its ACC_init() later.
acc_1G = 200;
uint8_t numberAccRead = 0;
// Read from WMP 100 times, this should return alternating WMP and Nunchuk data
for(uint8_t i=0;i<100;i++) {
delay(4);
if (WMP_getRawADC() == 0) numberAccRead++; // Count number of times we read from the Nunchuk extension
}
// If we got at least 25 Nunchuck reads, we assume the Nunchuk is present
if (numberAccRead>25)
nunchuk = 1;
delay(10);
}
}
uint8_t WMP_getRawADC() {
uint8_t axis;
TWBR = ((16000000L / I2C_SPEED) - 16) / 2; // change the I2C clock rate
i2c_getSixRawADC(0xA4,0x00);
if (micros() < (neutralizeTime + NEUTRALIZE_DELAY)) {//we neutralize data in case of blocking+hard reset state
for (axis = 0; axis < 3; axis++) {gyroADC[axis]=0;accADC[axis]=0;}
accADC[YAW] = acc_1G;
return 1;
}
// Wii Motion Plus Data
if ( (rawADC[5]&0x03) == 0x02 ) {
// Assemble 14bit data
gyroADC[ROLL] = - ( ((rawADC[5]>>2)<<8) | rawADC[2] ); //range: +/- 8192
gyroADC[PITCH] = - ( ((rawADC[4]>>2)<<8) | rawADC[1] );
gyroADC[YAW] = - ( ((rawADC[3]>>2)<<8) | rawADC[0] );
GYRO_Common();
// Check if slow bit is set and normalize to fast mode range
gyroADC[ROLL] = (rawADC[3]&0x01) ? gyroADC[ROLL]/5 : gyroADC[ROLL]; //the ratio 1/5 is not exactly the IDG600 or ISZ650 specification
gyroADC[PITCH] = (rawADC[4]&0x02)>>1 ? gyroADC[PITCH]/5 : gyroADC[PITCH]; //we detect here the slow of fast mode WMP gyros values (see wiibrew for more details)
gyroADC[YAW] = (rawADC[3]&0x02)>>1 ? gyroADC[YAW]/5 : gyroADC[YAW]; // this step must be done after zero compensation
return 1;
} else if ( (rawADC[5]&0x03) == 0x00 ) { // Nunchuk Data
ACC_ORIENTATION( ( (rawADC[3]<<2) | ((rawADC[5]>>4)&0x02) ) ,
- ( (rawADC[2]<<2) | ((rawADC[5]>>3)&0x02) ) ,
( ((rawADC[4]>>1)<<3) | ((rawADC[5]>>5)&0x06) ) );
ACC_Common();
return 0;
} else
return 2;
}
#endif
void initSensors() {
delay(200);
POWERPIN_ON
delay(100);
i2c_init();
delay(100);
if (GYRO) Gyro_init();
else WMP_init(250);
if (BARO) Baro_init();
if (ACC) {ACC_init();acc_25deg = acc_1G * 0.423;}
if (MAG) Mag_init();
'****************************************************************
'* Name : NUNCHUCK RF.BAS *
'* Author : [Hugo Oliveira] *
'* Notice : Copyright (c) 2010 *
'* : All Rights Reserved *
'* Date : 09-07-2010 *
'* Version : 1.0 *
'* Notes : BreadBoard *
'* : PIC16F628A *
'****************************************************************
include "modedefs.bas"
DEFINE OSC 4
DEFINE I2C_HOLD 1
@ DEVICE pic16F628A, INTOSC_OSC_NOCLKOUT
@ DEVICE pic16F628A, WDT_OFF
@ DEVICE pic16F628A, PWRT_OFF
@ DEVICE pic16F628A, MCLR_OFF
@ DEVICE pic16F628A, BOD_OFF
@ DEVICE pic16F628A, LVP_OFF
@ DEVICE pic16F628A, CPD_OFF
@ DEVICE pic16F628A, PROTECT_OFF
' VARIÁVEIS
' ====================================================================
Jx var byte
Jy var byte
Ax var Byte
Ay var byte
BE var bit
BD var bit
buffer var byte[6]
' REGISTOS PINOUT 1 = IN; 0 = OUT
' ====================================================================
'76543210
TRISA = %00000000
TRISB = %00000010
CMCON = 7
VRCON = 0
' NOMES PINOUT
' ====================================================================
LED VAR PORTA.1
TX Var PORTB.2
RX VAR PORTB.1
SDA var PORTB.4
SCL var PORTB.5
' DEFENIÇÕES
' ====================================================================
DEFINE DEBUG_REG PORTB
DEFINE DEBUG_BIT 2
DEFINE DEBUG_BAUD 19200
DEFINE DEBUG_MODE 0
' INICIO PROGRAMA
' ====================================================================
Start:
HIGH LED
PAUSE 500
LOW LED
PAUSE 500
HIGH LED
PAUSE 500
LOW LED
PAUSE 500
HIGH LED
Main:
GOSUB NUNCHUCK
' JoyStick Eixo X
' ====================================================================
if JX>70 and JX<=100 then
'SEROUT TX,T9600,["%TE"]
DEBUG "%TE"
pause 20
endif
if JX>0 and JX<=70 then
'SEROUT TX,T9600,["%TE1"]
DEBUG "%TE1"
pause 20
endif
if Jx>180 and Jx<210 then
'SEROUT TX,T9600,["%TD"]
DEBUG "%TD"
pause 20
endif
if Jx>=210 then
'SEROUT TX,T9600,["%TD1"]
DEBUG "%TD1"
pause 20
endif
' JoyStick Eixo Y
' ====================================================================
if JY>70 and JY<=100 then
'SEROUT TX,T9600,["%TB"]
DEBUG "%TB"
pause 20
endif
if JY>0 and JY<=70 then
'SEROUT TX,T9600,["%TB1"]
DEBUG "%TB1"
pause 20
endif
if Jy>180 and Jy<210 then
'SEROUT TX,T9600,["%TC"]
DEBUG "%TC"
pause 20
endif
if Jy>=210 then
'SEROUT TX,T9600,["%TC1"]
DEBUG "%TC1"
pause 20
endif
' Axis - Eixo X
' ====================================================================
if Ax<100 then
'SEROUT TX,T9600,["%TE2"]
DEBUG "%TE2"
pause 20
endif
if Ax>140 then
'SEROUT TX,T9600,["%TD2"]
DEBUG "%TD2"
pause 20
endif
' Axis - Eixo Y
' ====================================================================
if Ay<110 then
'SEROUT TX,T9600,["%TB2"]
DEBUG "%TB2"
pause 20
endif
if Ay>140 then
'SEROUT TX,T9600,["%TC2"]
DEBUG "%TC2"
pause 20
endif
' Botões
' ====================================================================
IF BE = 0 then
'SEROUT TX,T9600,["%RL1"]
DEBUG "%RL1"
pause 80
endif
IF BD = 0 then
'SEROUT TX,T9600,["%RD1"]
DEBUG "%RD1"
pause 80
endif
goto Main
' SUB ROTINA - LEITURA DADOS NUNCHUK
' ====================================================================
NUNCHUCK:
i2cwrite sda,scl,$A4,$40,[$00]
pause 10
i2cwrite sda,scl,$A4,[$00]
pause 10
i2cread sda,scl,$A5,[STR buffer\6]
pause 10
Jx=(buffer[0] ^ $17)+ $17
Jy=(buffer[1] ^ $17)+ $17
Ax=(buffer[2] ^ $17)+ $17
Ay=(buffer[3] ^ $17)+ $17
buffer[5]=((buffer[5] ^ $17)+ $17 )
if (buffer[5] & $01) <> 0 then
BE=1
else
BE=0
endif
if (buffer[5] & $02) <> 0 then
BD=1
else
BD=0
endif
RETURN
END
Reconato puedes proporcionarnos el esquema de tu dimmer?.....gracias
Hola a todos, baterod3 el esquema está por debajo. reyvilla también tratando de conseguir algo para poner aquí. Perdón por la mala pronunciación, estoy utilizando un traductor.
Saludos.
ok, muchas gracias amigo reyvilla por el ejemplo. ahora me que da una duda, he estado leyendo el codigo en c y he notado que al principio dice: I2C adress 1: 0xA6 (8bit) 0x53 (7bit) al parecer el bit de control del wii motion seria este y el de abajo seria para el nunchak ¿uds que opinan?
y si fuera este y yo quisiera leer los datos utilizando tu ejemplo amigo rey ¿deberia quedar algo asi?
I2CREAD sda,scl,0xA6,addr,[TEMPERATURAH, TEMPERATURAL, EJEZH, EJEZL, EJEYH, EJEYL, EJEXH_
EJEXL]
o la declaracion CONT CON es valida para cualquier dispositivo? perdon si me estoy equivocando
saludosss