Programación con Matlab Y Micro 18F4550

#1
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;
 
Última edición por un moderador:
Arriba