Desenvolvi um supervisorio em HTML, Java Script e JQuery que roda direto do cartao SD do ARDUINO UNO, os botoes ja estao funcionando, agora estou trabalhando no DIMER, todos os controle serao sem fio ( RF ). PIC: Controlando PIC18F4550 via USBProjeto de um sistema de comunicacao via USB, entre o PIC18F4550 e o programa feito em C#. Este programa monitoras 8 entradas digitais e 8 entradas analogicas e controla 8 saidas digitais e 2 saidas PWM.O Firmware foi feito no MikroC PRO PIC. O codigo e simples, mas para realizar a comunicacao USB, voce deve configurar os seguintes bits de configuracao: Selecione o menu Project > Edit ProjectPLL Prescaler Selection: Caso voce queira utilizar um outro valor de cristal, altere este campo No download, estou incluindo o firmware, e o software junto com o seu codigo-fonte.DOWNLOAD:Projeto: ControladorUSB.rar #include "built_in.h"#define STX 0x0Funsigned char HidReadBuff[64] absolute 0x500;unsigned char HidWriteBuff[64] absolute 0x540;unsigned char Reserve4thBankForUSB[256] absolute 0x400;enum Comandos {None=0, Analog, DigitalIn, DigitalOut, PWM};char cmd = None;void interrupt(){ Usb_Interrupt_Proc();}void CheckCommand(){ if(cmd == None) { if(HidReadBuff[0] != STX) return; cmd = HIDReadBuff[1]; }}void EntradaAnalogica(){unsigned analogVal; HIDWriteBuff[1] = Analog;analogVal = ADC_get_sample(0); HIDWriteBuff[2] = Hi(analogVal); HIDWriteBuff[3] = Lo(analogVal);analogVal = ADC_get_sample(1); HIDWriteBuff[4] = Hi(analogVal); HIDWriteBuff[5] = Lo(analogVal);analogVal = ADC_get_sample(2); HIDWriteBuff[6] = Hi(analogVal); HIDWriteBuff[7] = Lo(analogVal);analogVal = ADC_get_sample(3); HIDWriteBuff[8] = Hi(analogVal); HIDWriteBuff[9] = Lo(analogVal);analogVal = ADC_get_sample(4); HIDWriteBuff[10] = Hi(analogVal); HIDWriteBuff[11] = Lo(analogVal);analogVal = ADC_get_sample(5); HIDWriteBuff[12] = Hi(analogVal); HIDWriteBuff[13] = Lo(analogVal);analogVal = ADC_get_sample(6); HIDWriteBuff[14] = Hi(analogVal); HIDWriteBuff[15] = Lo(analogVal);analogVal = ADC_get_sample(7); HIDWriteBuff[16] = Hi(analogVal); HIDWriteBuff[17] = Lo(analogVal); while(!HID_Write(&HIDWriteBuff, 64));}void EntradaDigital(){ HidWriteBuff[1] = DigitalIn; HidWriteBuff[2] = PORTD; while(!Hid_Write(&HidWriteBuff, 64));}void SaidaDigital(){ HidWriteBuff[1] = DigitalOut; HidWriteBuff[2] = PORTB; while(!Hid_write(&HidWriteBuff, 64));}void USB_Recv(){ char dataRx = 0; while(1) { HidWriteBuff[0] = STX; EntradaAnalogica(); EntradaDigital(); SaidaDigital(); dataRx = HID_Read(); if(dataRx) { dataRx = 0; CheckCommand(); if(cmd == DigitalOut) //Saidas Digitais { PORTB = PORTB ^ (1 << HidReadBuff[2]); cmd = None; } else if(cmd == PWM) { PWM1_Set_Duty(HidReadBuff[2]); PWM2_Set_Duty(HidReadBuff[3]); cmd = None; } } delay_ms(100); }}void main(){ TRISD = 255; TRISB = 0; TRISA = 255; TRISC = 0; PORTB = 0xAA; ADC_Init(); PWM1_Init(4000); PWM2_Init(3000); PWM1_Set_Duty(127); PWM2_Set_Duty(127); PWM1_Start(); PWM2_Start(); HID_Enable(&HidReadBuff, &HidWriteBuff); Usb_Recv();} DataLogger com PIC18FDataLogger e um equipamento destinado a coletar dados durante um certo tempo. Esses dados sao fornecidos por sensores e seus valores sao armazenados numa memoria.Este projeto trata-se de um datalogger que faz a medicao de temperatura utilizando o sensor LM35, e armazena seus valores num cartao SD, junto com a hora atual. O relogio utlizado e o RTC DS1307.O arquivo sera salvo no formato ".csv" para poder ser aberto no Excel. Para cada vez que reiniciar o microcontrolador, sera criado um novo arquivo.No caso utilizei o microcontrolador PIC18F4620, mas pode ser utilizado por qualquer PIC da familia 18F em diante.O cartao SD deve estar formatado como FAT16.Veja tambem que como o DS1307, comunica-se via I2C e o cartao SD comunica-se via SPI, ambas comunicacoes utilizam o mesmo pino no microcontrolador. Para facilitar o codigo, optei por utilizar a funcao SOFTWARE I2C. Software i2c, e uma emulacao da comunicacao i2c, utlizando qualquer pino do microcontrolador para essa comunicacao.A imagem do cartao SD para poder simular