Haz una pregunta
  Foros de Electrónica » Diseño digital » Interfaces y Programación
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

12/03/2011 #81

Avatar de Meta

Buenas:

Te pido una cosa. Pon botones en el formulario, diseña tu propia Interfaz y pones una captura por aquí de cómo quieres que sea. ¿OK?

Ya me encargaré de la programación de los botones y luego del PIC.

Saludo.
12/03/2011 #82


hola META la interfaz ya la hice es la misma que tu pusiste con la t,b,a,l aunque yo le e puesto A,B,C,D
lo que no se hacer es lo de la lucesita que cuando reciba 000A se encienda y cuando reciba 000a se apage
por otro lado el programa del pic es el 2º que puse que funciona bien gracia pepe
12/03/2011 #83

Avatar de Meta

Ahora te hago un ejemplo.
14/03/2011 #84

Avatar de Meta

Depepees dijo: Ver Mensaje

Hola META Haber si puedo explicarme bien de lo que necesito se trata del interfaz que tiene 4
pulsadore t,b,a,l ese lo hice y me funciona bien pero el programa del pic no es igual el prog es el
2 que puse.Si te fijas en el prog veras que tiene 4 pulsadores para que se pueda acionar desde
el pic y desde el pc por eso es muy ynportante que cada pulsador tenga una lucesita encima
a continuacion paso a esplicate los datos que tienen que enviar cada cosa yo lo escriba como
sea ten presente que todo se tramsmite ascii datos que tiene que manda el interfaz.
1º pulsador 000A 1ª lucesita recibira 000A y debe encenderse con 000a apagarse
2º pulsador 000B 2ª lucesita recibira 000A y debe encenderse con 000b apagarse
3ª pulsador 000C 3ª lucesita recibira 000C y debe encenderse con 000b apagarse
4º pulsador 000D 4ª lucesita recibira 000D y debe encenderse con 000d apagarse
No te he entendido bien desde el principio. Por lo que te entiendo, que he estado leende varias veces esto. EL PIC tiene 4 pulsadores físicos, no son tipo interruptor. Al pulsarlo debe enviar en ASCII lo que indicas arriba. Si pulso el pulsador (no interruptor) el 3º llamado 000C. La lucesita de la interfaz (¿o Led conectado al PIC?) se enciende si recibe el ASCII 0C y se apaga cuando recibe 0c.

Si esto es así como dices, no te había entendido desde el principio y te estaba vovliendo loco o loca.

Voy hacer una prueba de que al pulsar el 000A, envía una lucesita encendida con 0A, al pulsar de nuevo el mismo pulsador, la lucesita de la Interfaz se apaga enviando por le puerto serie el caracter ASCII 0c.



Estoy haciendo pruebas, cuando tenga resultado te aviso. Confirmame si al final te he entendido lo que buscas. Déjame claro si las entradas del PIC son pulsadores o interruptores, cosa que no es lo mismo. Cuando me confirmes esta perte, ya nos meteremos en la parte de manejar varios PIC en el RS232 que no se como lo harás.
14/03/2011 #85


Hola META paso a lo de los pine PORTA0 a 2 tres interruptores de direccion PORTA,3 a 4 a
virtual terminal PORTB,0 a 3 cuatro led PORTB,4 a 7 cuatro pulsadores. Meta haz el circuito en
proteus veras como lo entiendes vien lo que me tienes que hacer es que un pulsador del interfaz
mande 000A cada vez que pulse y una luz que cuando reciba 000A se encienda y cuando reciba
000a se apague me da lo mismo si lo haces en basic como en C dado que lo pusistes en los 2
lenguajes el resto puedp hacerlo yo no te olvides que si los interruptores de porta estan cerrados
la direcion es 000.....y y si estan habierto la direccion es 111....y gracias por tu tienpo cualqui
er duda dimelo pepe

Meta no te olvides que que los interruptores y puldadores yo los tengo conectados a masa y
los 3 interruptores de porta con 3 resistencias de 10k a5v las de los pulsadores de portb no
hace falta porque estan activadas las resistencias internas gracias pepe

Meta lo de varios es lo siguien te yo pondre X pulsadores dividido en grupos de 4 pulsadores en
el interfaz el1º pulsasor mandara 000A, el2º pulsador 000B el 3º pulsador 000C y el 4º pulsador
000D y los recibira el pic que tenga los 3 pulsadores de porta cerrados en el 2º grupo de pulsa-
dores mandara 001A,001B,001C,00D y los recibira el pic que tenga los interruptores del porta que
coincidan con dicha combinacion asis asta 8 con el pil 16f84 y 32 con el pic 16f628 hata ahora
pepe

META no te olvides que el programa del pic es el 2º que puse.Con respecto a lo tuyo e estado mirendo sobre
el 16f887 y no hay mucha cosa pero estoy seguro que configurando bien las interrupciones y que los puerto
que se use esten configurados como digutales funcionara hasta ahora pepe
14/03/2011 #86

Avatar de Meta

No te tengo que hacer nada.

Bormas a parte. Me cuesta entenderte lo que me expresas. Si es posible, coge al menos el Paint de Windows o un papel y lápiz para que hagas el esquema del circuito antes de programar.

Vamos hacerlo paso a paso, ya me encargaré de pasarlo a proteus en simulación.

Saludo.
14/03/2011 #87


Hala META ya lo tengo el circuito hecho en proteus pero no allo la forma de copiar y pegar lo
tengo en el pain pero tampoco.Pero veras cuando lo agas el programa que es el2º veras como
con lo simple que es "ALUCINAS" yo lo tengo hecho con un pic en un circuito y despues tengo
otro con tres pic y funciona a la perfecion por favor tomate la molestia de hacerlo en proteus
y veras como lo entiendes bien gracias pepe

Hola META de lo que me dices que te cuesta entenderme te dire que en una oportunida di clases de electri_
cidad en venezuela en una escuela industrial, para que me ejilizacen los papeles y a los 15 dias me dijo el
rector pepe me consta que es usted un gran electricista,pero en mi colegio usted no da mas clase
hasta ahora pepe
14/03/2011 #88

Avatar de Meta

Captura la pantalla con el botón Impr PetSis del teclado de tu PC, con el proteus abierto, que se vea el circuito. Luego abres el Paint de Windows, luego pulsas "Control + V" que es pegar. Luego le dar guardar como... en formato .jpg. No quiero perder el tiempo adivinando.

La imagen puedes subirla en el foro o por este enlace.
http://www.subeimagenes.com/

Me imagino que el código segundo es este que me dices.
Comunicación serial con Visual Basic 2008

14/03/2011 #89


Hola META si ese es el codigo.
14/03/2011 #90

Avatar de Meta

Entendido.

Al menos con el Paint, escribes el dibujo con el lápiz. Te esperaré o envía el esquema del Proteus por aquí comprimido en .zip.

Esperando...

Saludo.
15/03/2011 #91


http://www.subeimagenes.com/img/006-24217.html


Hola Meta al final pude poner el circuito,gracias a ti, por que yo en algunas cosas soy muy tocho.Te dire
en en pic de la derecha no me e dado cuenta y les falta las resistencias de 10K de PORTA,0,1,2 .Por otra
parte tienes que cargar los dos pic con el mismo programa pero con direcciones distintas por ejen pic 1
(de la izquierda) todos los interructores habiertos y pic 2 (de la derecha todos cerrados y cuando varies
los pulsadores lo entederas mejor.muchas gracias por tu tiempo y no tires la toalla que veras al final que
no es una idea rara asta luego pepe
15/03/2011 #92

Avatar de Meta

Buenas:



Pedazo de esquema hiciste. Si puedes pasarlo el circuuito del Proteus cuando lo termines bien, mejor que mejor. Lo envías por e-mail. Lo puedes ver aquí: Mejor leo las Normas de Participación@forosdeelectronica.com


Fíjate el código por aquí. El base que he dado.
Código:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;

namespace Puerto_Serie
{
  public partial class Form1 : Form
  {
    // Utilizaremos un string como buffer de recepcion
    string Recibidos;

    public Form1()
    {
      InitializeComponent();
      // Abrir puerto mientra se ejecute la aplicación
      if (!serialPort1.IsOpen)
      {
        try
        {
          serialPort1.Open();
        }
        catch (System.Exception ex)
        {
          MessageBox.Show(ex.ToString());
        }
      }
      // Ejecutar la funcion Recepcion por disparo del Evento 'DataReived'
      serialPort1.DataReceived += new
      System.IO.Ports.SerialDataReceivedEventHandler(Recepcion);
    }
    // Al recibir los datos
    private void Recepcion(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
    {
      // Acumular los carácteres recibidos a nuestro 'buffer' (string)
      Recibidos += serialPort1.ReadExisting();
      // Invocar o llamar al proceso de tramas
      this.Invoke(new EventHandler(Actualizar));
    }
    // Procesar los datos recibidos en el buffer y extraer tramas completas
    private void Actualizar(object s, EventArgs e)
    {
      // Asignar el valor de la trama al textBox
      richTextBox1.Text = Recibidos;
    }
  }
}
En la variable
Recibidos Recibidos es donde reciben los Bytes en ASCII. Claro que debes ponerlo en su lugar por cada lucesitas que deseas y que lo entiendas.

Código:
private void textBox1_TextChanged(object sender, EventArgs e)
        {
            char[] charNum;
            if (textBox1.Text.Length > 0)
            {
                string Str = textBox1.Text;
                charNum = Str.ToCharArray();
                switch ((int)charNum[0])
                {
                    case 65:    // 'A'
                    case 66:    // 'B'
                    case 67:    // 'C'
                    case 68:    // 'D'
                    case 69:    // 'E'
                    case 70:    // 'F'
                        MessageBox.Show("Mayuscula" + charNum[0]);
                        break;
                    case 97:    // 'a'
                    case 98:    // 'b'
                    case 99:    // 'c'
                    case 100:   // 'd'
                    case 101:   // 'e'
                    case 102:   // 'f'
                        MessageBox.Show("Minuscula" + charNum[0]);
                        break;
                }
            }
        }
Me pica mucho la curiosidad tu circuito. Sigo investigando la parte de la programación, ya lo adaptaremos a C#, C++ y VB .net
15/03/2011 #93


Hola meta ten presente que el interfaz que yo hice es el de visual basic 2008,te lo digo porque si ahora
me pones lo de las lucesitas en visual basic.net pues no me va a funcionar o al menoas que me pongas
todo el codigo sin el texbox.gracias hasta ahora
15/03/2011 #94

Avatar de Meta

Depepees dijo: Ver Mensaje
Hola meta mira con detalle lo queexplico a continuacion yo te e puesto un pulsador y una luz porque sabiendo como es el codigo de uno se sabe el de todos 1ºPULSADOR ENVIA 000A 1 LUZ RECIBE 000A PARA ENCENDERSE,RECIBE 000a PARA APAGARSE
2ºPULSADOR ENVIA 000B 2º LUZ RECIBE 000B PARA ENCENDERSE,RECIBE 000b PARA APAGARSE
3º PULSADOR ENVIA 000C 3 LUZ RECIBE 000C PARA ENCENDERSE,RECIBE 000c PARA APAGARSE
4º PULSADOR ENVIA 000D 4 LUZ RECIBE 000D PARA ENCENDERSE,RECIBE 000d PARA APAGARSE
5 PULSADOR ENVIA 001A 5 LUZ RECIBE 001A PARA ENCENDERSE ,RECIBE 001a PARA APAGARSE
6 PULSADOR ENVIA 001B 6 LUZ RECIBE 001B PARA ENCENDERSE RECIBE 001b PARA APAGARSE


Ten presente que la lucesita tiene que cambiar con el mensaje que reciba del pic
Esto lo e pensado asi por dos motivos 1 si hay un fallo en la comunicacion la luz no te engaña
2º todos los pic tienen el mismo programa solo hay que cambiar la combinacion de porta,0,1,2
para que los mensajes cada uno se haloje en su sitio por eje pic 1 000+ A,B,C,D PIC 2 001+A,B,C,D
3 PIC 010+,A,B,C,D 4 PIC 110+ A,B,C,D 5 PIC 001+ A,B,C,D, 6 PIC 101+A,B,C,D, 7 PIC 110+A,B,C,D
8 PIC 111+A,B,C,D
Esto es asi porque suponiendo que tu tienes una instalacion con x pic y se estropea uno lo puedes
sustituir por otro porque todos son iguales solo hay que ponerle la direccion adecuada con los
interruptores de porta,0,1,2
hata ahora pepe
Primero lo haré bajo C#, luego lo paso a VB.

En esta parte que dices para entenderte mejor.

1ºPULSADOR ENVIA 000A 1 LUZ RECIBE 000A PARA ENCENDERSE,RECIBE 000a PARA APAGARSE.


Por lo que te entiendo, el pulsador envía algo a la Interfaz Visual Studio del PC por puerto serie que ese algo es 000A. Lo vuelve a enviar desde el PC al PIC16F84A de nuevo, que es el 000A, la luz enciende, si envía 000a la luz del PIC se apaga.

¿Estás diciendo que el mismo pulsador del PIC hace de 000A y 000a?

¿Como si fuera un ON-OFF?

Espero que me entregues por email lo del Proteus, los dos esquemas que me digiste. En cuanto el cambio de configuración de la dirección del PIC, si se puede controlar con otro PIC. Por ahora nos centramos manualmente como estás haciendo.
16/03/2011 #95


Hola meta si anbos pulsadores hacen lo siguiente:e si pulsas el pulsador del interfaz pc .siempre mandara
000A cuando sicha señal llege al pic y si este esta apagado,se encendera y mandara al pc 000A si por el
contrario el pic esta encendido,se apagara y mandara al pc 000a
el pulsador del pic hace lo mismo,hay que aprobecha que cuando el pc reciba 000A encienda la luz del pulsador
y cuando el pc reciba 000a la luz del pulsador del pc se apague. depueste mado los esquemas hasta
ahora pepe

Claro que hay un lio porque no lo especifico bien la luz del PC recibe 000A para encenderse y 000a para apa-
garse sin enbargo el pic siempre recibe 000A y el se encarga de hacer la inversion
16/03/2011 #96

Avatar de Meta

Depepees dijo: Ver Mensaje
Hola meta si anbos pulsadores hacen lo siguiente:e si pulsas el pulsador del interfaz pc .siempre mandara
000A cuando sicha señal llege al pic y si este esta apagado,se encendera y mandara al pc 000A si por el
contrario el pic esta encendido,se apagara y mandara al pc 000a

¿Con el botón desde la Interfaz del PC al PIC siempre envía 000A?


el pulsador del pic hace lo mismo,hay que aprobecha que cuando el pc reciba 000A encienda la luz del pulsador
y cuando el pc reciba 000a la luz del pulsador del pc se apague. depueste mado los esquemas hasta
ahora pepe

Mejor encárgate de la programación del PIC.

Claro que hay un lio porque no lo especifico bien la luz del PC recibe 000A para encenderse y 000a para apa-
garse sin enbargo el pic siempre recibe 000A y el se encarga de hacer la inversion
No te olvides de los dos esquemas.

Otra cosa.
Son 4 byte a enviar al PIC, lo enviaré a tramas el 000A, te pondré un pequeño código.

Haz una prueba, en tal caso, prefiero que te bajes el
Visual C# Express 2010 gratuito. De todas formas también te paso el VB .net.

En el formulario introduces un botón, lo puedes llamar 000A. Su nombre interno es button_000A. Como indica los códigos de abajo, la interfaz desde el PC siempre envía 000A, nunca 000a. El cuadro de texto abajo lo puedes ignorar.




C#
Código:
        private void button_000A_Click(object sender, EventArgs e)
        {
            byte[] mBuffer = new byte[4];
            mBuffer[0] = 0x0; // Es el número 0.
            mBuffer[1] = 0x0;
            mBuffer[2] = 0x0;
            mBuffer[3] = 0x41; // Es la letra A.
            serialPort1.Write(mBuffer, 0, mBuffer.Length);

            // También puedes enviarlo así:
            // byte[] mBuffer = Encoding.ASCII.GetBytes("000A");
            // serialPort1.Write(mBuffer, 0, mBuffer.Length);

        }
VB .net
Código:
Private Sub button_000A_Click(sender As Object, e As EventArgs)
    Dim mBuffer As Byte() = New Byte(3) {}
    mBuffer(0) = &H0 ' Es el número 0.
    mBuffer(1) = &H0
    mBuffer(2) = &H0
    mBuffer(3) = &H41 ' Es la letra A.
    serialPort1.Write(mBuffer, 0, mBuffer.Length)

    ' También puedes enviarlo así:
    ' byte[] mBuffer = Encoding.ASCII.GetBytes("000A");
    ' serialPort1.Write(mBuffer, 0, mBuffer.Length);

End Sub
Imágenes Adjuntas
Tipo de Archivo: jpg 0.01.jpg (38,3 KB (Kilobytes), 142 visitas)
16/03/2011 #97


http://www.fileupyours.com/view/3038...rt%20serie.rar
http://www.fileupyours.com/view/3038...plication1.zip

no he conseguido enviarlos por mail, los he subido a fileupyours, te servirá igual.

Hola meta si abre el circuito de 3 pic pon el 1º pic con los tres interruptores abiertos el2 pic con los 3
interruptores cerrados y el siguiente como te parezca,pero que todas sean distintas y apertale a los
pulsadores veras que pronto entiendes el asunto hata ahora pepe
16/03/2011 #98

Avatar de Meta

OK. Puedes usar el SkyDriver del www.hotmail.com o el site de google.

Deja investigar, ya que esta atrde tengo trabajo fuera y no estaré mucho en mi casa. El proyecto es muy interesante.

Le heché un ojo rápido al esquema. Parece que funciona bien. Pulsé las direcciones del PIC 1, la verdad que los Led fucniona igual.

No se qeu hiciste con el formulario que me da fallos, no lo puedo abrir el Form, salen errores.

¿Puedes crearlo desde 0?
Puedes subir el .rar por este foro.
17/03/2011 #99


Hola META me ha pasado un pequeño problema,tengo un amiguete que es un sabio en esto y me dice¿te pongon el W7 que funciona mejor? en definitiva que en un principio se me ha ido a pique el PC por suerte
se ha podido recuperar pero todos los rero los archibos los he perdido por suerte todos los ASM los imprimo
en papel,lo unico que tengo que hacer es teclear otra vez
Una pregunta, me he bajado otra vez el visual C# y he echo un interfaz de 32 pulsadores,y 32 texbox para
la lucesita (que me imajino que es eso) encima de los pulsadores.El caso es que lo depure y todo bien
apague el ordenador,cuando lo encendi fuy otra vez a cargar el programa y cuando lo cargo desde la carpeta no se habilita la flechita de depuracion osea que no me sale otra vez la pantalla con los 32 pulsadores.como te dije me me compre el libro de visual basic.net de francisco charter.si sabes algun otro
que sea mas para pricipiantes dimelo.gracias pepe
18/03/2011 #100

Avatar de Meta

Si, es mejor usar el Windows 7, está más optimizado para usar el Visual Studio 2010.

El más fácil dicen que es este, pero es muy caro.



http://www.anayamultimedia.es/cgigen...ercial=2301537

Cuando tenga los ejemplos me los pasa.

Quiero comprarme este



http://www.anayamultimedia.es/cgigen...ercial=2301538

Cuesta mucho más caro y tiene cerca de 300 páginas más y con más ejemplos. Es más completo.

Saludo.
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Interfaces y Programación

Lenguajes de programación, gestión y manejo de puertos

Cerrar
Foros de Electrónica » Diseño digital » Interfaces y Programación

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.