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

Temas similares

26/01/2013 #1


Programación con Matlab Y Micro 18F4550
HOLA A TODOS me gustaría lograr solicitar la ayuda de un experto ya que no me es posible lograr que matlab devuelva el caracter C al microcontrolador 18F4550, el cual debe tener encendido un motor (un plato giratorio con objetos), y cuando el sensor CNY encuentre la linea blanca se detenga por un momento (caracter a) mientras Matlab realiza la captura de una fotografía, convirtiéndola en tonos grises y conociendo el total de objetos que capto, después el motor deberá seguir girando(a donde se le envía la letra C)
Les dejo mi código para que lo corroboren por favor.


Código:
#include "18f4550.h"
#use delay(clock=48000000)
#build(reset=0x02000,interrupt=0x02008)
#org 0x0000,0x1FFF {}
#include "usb_cdc.h"
#int_ext                          // This function is called every time
void leersensor()
{
char v='a';
        output_low(PIN_C0);
      printf(usb_cdc_putc,"%c",v);     
      delay_ms(10);
}

void main() {
char x,s;
INT entrada=0;
port_b_pullups(true);
ext_int_edge( H_TO_L );
enable_interrupts(int_ext);
enable_interrupts(GLOBAL);


   usb_cdc_init();                   // Configuramos al puerto virtual.
   usb_init();                      // Inicializamos el stack USB.
   while(!usb_cdc_connected()) {}    // espera a detectar una transmisión de la PC (Set_Line_Coding)
     do{
          usb_task();
          if (usb_enumerated()){        // Espera a que el dispositivo sea enumerado por el host.
           
//------------------ colocar codigo de usuario--------------------------------

         //entrada=input(pin_a0);      
     //if( input(PIN_A0) )
     //if (entrada==0)
     
       
       
     
    if (usb_cdc_getc()=='c');
     {
     output_high(PIN_C0);
    // output_c (0b00000001);
     delay_ms (1000);     
     }

//----------------------------------------------------------------------------
             }
       }while (TRUE); // bucle infinito.
     
}





Codigo en Matlab

captura=videoinput('winvideo',2);
preview(captura);
pause(2)
s=serial('com7','BaudRate',9600);
set(s,'DataBits',8);
set(s,'Parity','none');
set(s,'StopBits',1);
set(s,'FlowControl','none');
set(s,'outputBufferSize');
fopen(s);
fprintf(s,'%s','c');pause(0.2)
x=fscanf(s,'%c');
y=0;
char n='c';
while(y~=2)
    %if a==2
    %y=2;
    %end
    %x= fscanf(s,'%c');
   % y=0;
    if(x=='a')
        close all;
        clc;
        preview(captura);    
        pause(0.5)
        figure
        toma_foto=getsnapshot(captura);
        closepreview(captura);
        figure 
        subplot (1,3,1); 
        imshow(toma_foto);
        title('original')
        subplot (1,3,2); 
        im_bin=im2bw(toma_foto,.45);
        imshow(im_bin); 
        title ('binaria')
        imbin=not(im_bin); 
        subplot(1,3,3); 
        imshow(imbin);
        title('invertida')
        im_label=bwlabel(imbin, 8);
        n=max(max(im_label))
        fuente=getselectedsource(videos);
        b=b+1;
        y=3;
        pause
    end
    
end
fclose(s);
delete(s);
clear s;
06/03/2013 #2


y cual es el problema? no te conviene mas enviar datos de tipo entero???? para enumerar los objetois?
Respuesta
¿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.