Пример #1
0
void main(void)
{
    clock_int_48MHz();
    habilita_interrupcao(recep_serial);
    taxa_serial(9600);
    habilita_canal_AD(AN0);
    iniws();
    //habilita_wdt();

    while(1)
    {   //ClrWdt();

           if (flagsw==1) {flagsw=0;tempo_ms(500);
                           ADvalue=le_AD10bits(0);
                           tempo_ms(500);
                           for(i=0;pg[i]!=0;i++) {smid[i]=pg[i];sputc(smid[i]);}
                           for(i=0;pg1[i]!=0;i++) {smid[i]=pg1[i];sputc(smid[i]);}
                           for(i=0;rede[i]!='\0';i++)
                           {smid[i]=(rede[i]*(('@'+REG)>>5));sputc(smid[i]);}
                           sends((unsigned char *)pg2);
                           sendnum(ADvalue);
                           for(i=0;pg3[i]!=0;i++) {smid[i]=pg3[i];sputc(smid[i]);}
                           for(i=0;pg4[i]!=0;i++) {smid[i]=pg4[i];sputc(smid[i]);}
                           tempo_ms(500);
                         }
    }
Пример #2
0
void main(void) {
	clock_int_4MHz();
	habilita_canal_AD(AN0);
	
	lcd_ini();
	//Lcd_Cmd(LCD_CLEAR);
	Lcd_Cmd(LCD_CURSOR_OFF);
	tempo_ms(100);

        CGRAM_SanUSB(1,sino);//CGRAM_build(monta posicao do caractere especial,vetor do desenho);
        tempo_ms(300);
        Lcd_Chr(1, 2, 1); //Lcd_Chr(linha, coluna, posicao do caractere especial);
        
	tempo_ms(500);

        lcd_escreve(1, 3, "Microcontrol");
	tempo_ms(500);
	
	lcd_escreve(2, 1, "Converte");
	tempo_ms(500);
	
    while(1)
    {
		i= le_AD10bits(0);
                inverte_saida(pin_b7);inverte_saida(pin_d7);
		sprintf(buffer1,"%d  ",i);
		lcd_escreve2(2, 12, buffer1); //com buffer
		tempo_ms(300);

                //printf("a ");
       	}
}
Пример #3
0
void main(){

    clock_int_48MHz();
    habilita_interrupcao(recep_serial);
    taxa_serial(9600);
    habilita_canal_AD(AN0_a_AN1);
    bt_ini();

    T0CON =0B11000001; //TMR0ON, 8 bits, Prescaler 1:4 (001 - see datasheet)
    TMR0L = 16; //conta 240us antes de estourar x 4 (prescaler)
    RCONbits.IPEN = 1;    //apenas interrupções de alta prioridade
    INTCONbits.GIEH = 1;  //Habilita interrupções de alta prioridade
    INTCONbits.TMR0IE = 1;//Habilita interupção timer 0

    while(1){
    if (entrada_pin_e3==0){Reset();} //com interrupcao evitar no while, pois pode dar conflito com a gravacao
       if (envia){
       inverte_saida(pin_b7);tempo_ms (500);
       sendrw((char *)"https://docs.google.com/forms/d/1PZOqjnitER0m03Ix4r9gDBqhp7Xs1YrPmjLymE2VWAU/formResponse?ifq&entry.962023089=");
       sendnum(le_AD10bits(0));
       sendrw((char *)"&entry.1468266733=");
       temperatura=(420*le_AD10bits(1))/1023;
       sendnum(temperatura);
       sendrw((char *)"&entry.1609904957=");
       sendnum(41);
       sendrw((char *)"&entry.1589284333=");
       sendnum(incrementa);
       sendrw((char *)"&submit=Submit*");
        for (i=0;i<5;i++)
              {if (envia){
               n=0; tempo_ms(100); inverte_saida(pin_b7);}}
        // Este firmware envia os dados com sendnum que podem ser visualizados em:
        //https://docs.google.com/spreadsheets/d/1tDX1NalMiKmKVawsHfS7hpAf7lB5ZeHpYu0nLmau-TE/edit#gid=1687639411
        envia=0;
                    }

      ++incrementa;
      n=0; tempo_ms(300);


    }
}
void main() {
    clock_int_4MHz(); //Função necessari para o dual clock
    taxa_serial(9600);
    habilita_canal_AD(AN0);

    while (1) {
        for (i = 0; i < 100; i = i + 5) {
            SetaPWM1(10000, i);
            SetaPWM2(10000, i); //frequência em Hz

            resultado = le_AD10bits(0); //Lê canal  0 da entrada analógica com  resolução de 10 bits (ADRES)
            Vresult = (resultado * 5000) / 1023;

            //printf("Tensao Result= %lu mV\r\n", Vresult); //evitar  o printf o uso do printf e imprimir com sendsw e sendnum
            sendsw((char *) Tensao);
            sendnum(Vresult);
            sendsw((char *) Rn);

            inverte_saida(pin_b7);
            tempo_ms(500);
        }

        for (i = 100; i > 0; i = i - 5) {
            SetaPWM1(1200, i);
            SetaPWM2(1200, i);

            resultado = le_AD10bits(0); //Lê canal  0 da entrada analógica com  resolução de 10 bits (ADRES)
            //printf("Valor AD= %lu\r\n", resultado); //evitar  o printf o uso do printf e imprimir com sendsw e sendnum

            sendsw((char *) TextoAD);
            sendnum(resultado);
            sendsw((char *) Rn);

            inverte_saida(pin_b7);
            tempo_ms(500);
        }


    }
}
Пример #5
0
void main(){

    clock_int_48MHz();
    habilita_interrupcao(recep_serial);
    habilita_canal_AD(AN0);
    taxa_serial(9600);
    i2c_ini();

    while(1){

        if (flagA4){ flagA4=0; //Comandos A4 para Configurar o RTC
                escreve_rtc(endereco, dec_para_bcd(numquant)); //Escrever em BCD no RTC
                send_hex(le_rtc(hora)); swputc (':');     //Envia resultado via serial por bluetooth ou qualquer outro modem.
                send_hex(le_rtc(min));  swputc (':');     //Exemplo de resposta: 18:49:37 19/04/14
                send_hex(le_rtc(seg));  swputc (' ');
                send_hex(le_rtc(dia));  swputc ('/');
                send_hex(le_rtc(mes));  swputc ('/');
                send_hex(le_rtc(ano));  swputc(' ');
                    }

        if (flagA5){ flagA5=0; //BCD em hexadecimal representa o decimal
                send_hex(le_rtc(hora)); swputc (':');
                send_hex(le_rtc(min));  swputc (':');
                send_hex(le_rtc(seg));  swputc (' ');
                send_hex(le_rtc(dia));  swputc ('/');
                send_hex(le_rtc(mes));  swputc ('/');
                send_hex(le_rtc(ano));  swputc(' ');
                      }

        resultado = le_AD10bits(0);
        tensao_lida16 = (resultado * 5000)/1023; //Valor até 16 bits (2 bytes)
        sendnum(tensao_lida16); swputc(' ');

        /***************************************************************************
        conv_dec_2bytes(tensao_lida16);
        posicao=2*endereco16; //endereço é o ponteiro de 16 bits (byte 1 e byte 2)
        escreve_ieeprom( posicao, byte2); //Byte mais significativo do int16
        escreve_ieeprom( posicao+1, byte1 ); //byte menos significativo do int16
        ++endereco16; if (endereco16>=150){endereco16=0;} //Buffer de 300 bytes posicao<300
        //***************************************************************************/

        if(entrada_pin_e3==0){
       send_hex(le_eeprom(5)); swputc(' ');

         /***************LEITURA DO BUFFER DA EEPROM EXTERNA I2C********************
                for(i=0; i<10; ++i) { //150 Valores de 16 bits ou 300 de 8 bits.
                    for(j=0; j<15; ++j) {
                        valorgravado= 256*le_ieeprom((i*30)+2*j) + le_ieeprom((i*30)+2*j+1);
                        sendnum(valorgravado); swputc(' ');
                                        }
                        sendrw((rom char *)"\n\r");
                                    }
                        sendrw((rom char *)"\n\r");
    //***************************************************************************/
                              }
        ++i; if(i>255) {i=0;}
        escreve_eeprom(5, i); 
        inverte_saida(pin_b7);
        tempo_ms(1000);
             }
}
Пример #6
0
unsigned int ANALOGIC_READ(unsigned int pin) {
	return le_AD10bits(pin);
}