Ir ao conteúdo

Posts recomendados

Postado

Olá, tudo bem? Alguem poderia me ajudar a converrter essalinguagem para c++??

 

Grato

 

os passos para lavar a roupa são:
1) ENCHER a cuba- roupa+água+sabão,
2) BATER a Roupa- 10min ou 20min ou 30min,
3) DESCANSAR por 10 min.
4) SOLTAR a água,
5) LAVAR - repetir os passos 1,2 e 3 em um tempo 5min (sem sabão),
6) ENXAGUAR - centrifugar jogando água (bomba ligada),
7) AMACIANTE- encher de água + amaciante a cuba agitar um pouco, descançar por 5 minutos e esvaziar,
😎 CENTRIFUGAR - girar para tirar toda água

FIM


//CONTROLANDO A MAQUINA DE LAVAR GE
//Paulo Roquetti
//Jun/2015
/*
PLACA CLPIC_VOICE
PIC18F4550
CRISTAL-20MHZ

RA0-I/O-DIGITAL-ANALOGICO
RA1-I/O-DIGITAL-ANALOGICO
RA2-I/O-DIGITAL-ANALOGICO
RA3-I/O-DIGITAL-ANALOGICO
RA4-IN-DIGITAL-CONTADOR DE EVENTOS - INC TIMER0 e IN-DIGITAL-OPTO
RA5-IN-DIGITAL-OPTO

RB0-OUT-RS-LCD
RB1-OUT-EN-LCD
RB2-OUT-DZ-7SEG
RB3-OUT-UN-7SEG
RB4-OUT-DADOS-LCD-7SEG
RB5-OUT-DADOS-LCD-7SEG
RB6-OUT-DADOS-LCD-7SEG
RB7-OUT-DADOS-LCD-7SEG


RC0-IN-DIGITAL-OPTO
RC1-OUT-PWM2
RC2-OUT-PWM1
RC3-VUSB
RC4-IN-D- USB
RC5-IN-D+ USB
RC6-IN-USART e IN-DIGITAL-OPTO
RC7-IN-USART e IN-DIGITAL-OPTO

RD0-OUT-DIGITAL-RELÉ
RD1-OUT-DIGITAL-RELÉ
RD2-OUT-DIGITAL-RELÉ
RD3-OUT-DIGITAL-RELÉ
RD4-OUT-DIGITAL-RELÉ
RD5-OUT-DIGITAL-RELÉ
RD6-OUT-DIGITAL-RELÉ
RD7-OUT-DIGITAL-RELÉ

RE0-IN-DIGITAL-OPTO
RE1-IN-DIGITAL-OPTO
RE2-OUT-DIGITAL-RELÉ
*/

#include
#include
#include "CLPIC_VOICE_biblioteca_lcd_2x16.h"//inclui biblioteca do lcd

// Fosc = 20MHz
// Tciclo = 4/Fosc = 0,2us
#pragma config FOSC = HS //Para cristal de 20MHz
#pragma config CPUDIV = OSC1_PLL2//sem PLL
#pragma config USBDIV = 1//para USB sem PLL
#pragma config PLLDIV = 5//Para cristal de 20MHz divide por 5, sempre tem que dar 4MHz
#pragma config WDT = OFF//Desabilita o Watchdog Timer (WDT).
#pragma config PWRT = OFF//Habilita o Power-up Timer (PWRT).
#pragma config BOR = OFF//Brown-out Reset (BOR) habilitado somente no hardware.
#pragma config BORV = 3//tensão do BOR é 2,0V.
#pragma config PBADEN = OFF//RB0,1,2,3 e 4 configurado como I/O digital.
#pragma config LVP = OFF//Desabilita o Low Voltage Program.
#pragma config MCLRE = OFF//Desabilita o RESET

/////////////////////////////////////
//    ENTRADAS
////////////////////////////////////

#define PARTIDA PORTAbits.RA5
#define PRESSOSTATO PORTEbits.RE0
#define TAMPA PORTEbits.RE1

///////////////////////////////////
//     SAIDAS
///////////////////////////////////

#define  FASE PORTDbits.RD0
#define  GIRO_ESQ  PORTDbits.RD1
#define  GIRO_DIR PORTDbits.RD2
#define  BOMBA PORTDbits.RD3  
#define  AGUA PORTDbits.RD4
#define  AMACIANTE PORTDbits.RD5
#define  TRAVA PORTDbits.RD6

/////////////////////////////////////

//variaveis globais
int cont=0,x,y,z,i,j,ch;
char envia;

//prototipo de funcoes
void agitar();
void escreve_dado();
char recebe_caracter();
char envia_caracter();


void main() //funcao principal
{
//configura entradas e saida
TRISA = 0b111111;
TRISB = 0b00000000;
TRISC = 0b11110001;
TRISD = 0b00000000;
TRISE = 0b111;

//configura digitais
ADCON1 = 0b00001111;
//configura interrupcao
INTCON = 0b11000000;
//7-habilita chave geral
//6-habilita perifericos
PIE1bits.RCIE = 1;
//configura UART
TXSTA = 0b00000000;
//7-não usado - assincrono
//6-transmissão 8bits
//5-desabilitada transmissão
//4-modo assincrono
//3-sync Break
//2-baixa velocidade
//1-Transmit Shift Register Status bit full
//0-não usado

RCSTA = 0b10010000;
//7-porta serial habilitada
//6-recepcao de 8bits
//5-nao usado
//4-recepcao habilitada
//3-desabilitada deteccao de endereco
//2-nao usado
//1-nao usado
//0-nao usado

BAUDCON = 0b00000000;
//7-AutoBAUD desabilitado EUSART
//6-não usado
//5-não usado
//4-não usado
//3-BAUD RATE em 8 bits
//2-não usado
//1-WAKE-UP (despertar) desabilitado,
//0-não usado


SPBRG = 0b10000001; // 129 em decimal para 9600bps


//configurações iniciais
PORTA = 0x00;//limpa as saídas
PORTB = 0x00;
PORTC = 0x00;
PORTD = 0x00;
PORTE = 0x00;
lcd_inicia(0x28, 0x0E, 0x06);// inicializa o Display LCD com quatro linha de dados

////////////////////////////////////////////////////////////////////////////////////
//      INICIANDO A LAVAGEM
////////////////////////////////////////////////////////////////////////////////////
lcd_posicao(1,1);
imprime_string_lcd("CONTROLE        ");
lcd_posicao(2,1);
imprime_string_lcd("MAQ DE LAVAR    ");
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 2,5seg lcd_posicao(1,1);
imprime_string_lcd("COLOQUE         ");
lcd_posicao(2,1);
imprime_string_lcd("ROUPA E SABAO");
for(i=0; i<20 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 5seg lcd_posicao(1,1);
imprime_string_lcd("SELECIONE       ");
lcd_posicao(2,1);
imprime_string_lcd("NIVEL DE AGUA");
for(i=0; i<20 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 5seg lcd_posicao(1,1);
imprime_string_lcd("APERTE          ");
lcd_posicao(2,1);
imprime_string_lcd("PARTIDA         ");
/////////////////////////////////////////////////////////////////////////////////////
// 1)INICIO LAVAGEM
/////////////////////////////////////////////////////////////////////////////////////
while(PARTIDA == 1);
FASE = 1;
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 2,5seg AGUA = 1;
lcd_posicao(1,1);
imprime_string_lcd("ENCHENDO        ");
lcd_posicao(2,1);
imprime_string_lcd("DE AGUA         ");
while(PRESSOSTATO == 0)
{
Delay10KTCYx(125);
cont++;
}
AGUA = 0;
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 2,5seg////////////////////////////////////////////////////////////////////////////////////
// 2) BATER A ROUPA
////////////////////////////////////////////////////////////////////////////////////
TRAVA = 1;
lcd_posicao(1,1);
imprime_string_lcd("BATER A         ");
lcd_posicao(2,1);
imprime_string_lcd("ROUPA           ");

GIRO_DIR = 0;//giro horario
GIRO_ESQ = 0;//giro horario
for(i=0; i<2 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 500ms
for(j=0; j<150 10="" j="" minutos="" p=""> {
agitar();
x=j;
escreve_dado();
}

GIRO_DIR = 0;//giro horario
GIRO_ESQ = 0;//giro horario
for(i=0; i<2 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 500ms////////////////////////////////////////////////////////////////////////////////////
// 3) DESCANCO DE 10 MINUTOS
////////////////////////////////////////////////////////////////////////////////////

lcd_posicao(1,1);
imprime_string_lcd("DESCANCO        ");
lcd_posicao(2,1);
imprime_string_lcd("10 MINUTOS      ");

for(i=0; i<2400 i="" p=""> {
Delay10KTCYx(125); //tempo de 10 minutos
x=i;
escreve_dado();
}

////////////////////////////////////////////////////////////////////////////////////
// 4) SOLTAR A AGUA
////////////////////////////////////////////////////////////////////////////////////
lcd_posicao(1,1);
imprime_string_lcd("SOLTANDO        ");
lcd_posicao(2,1);
imprime_string_lcd("A AGUA          ");
BOMBA = 1; // liga a bomba dágua para sair a agua
cont=cont+40;
for(i=0; i
Delay10KTCYx(125); //tempo de enchimento + 10 segundos BOMBA = 0; // desliga a bomba dagua

////////////////////////////////////////////////////////////////////////////////////
// 5)  LAVAR
////////////////////////////////////////////////////////////////////////////////////
// 5.1)  enchendo de agua
//////////////////////////
lcd_posicao(1,1);
imprime_string_lcd("OPERACAO        ");
lcd_posicao(2,1);
imprime_string_lcd("LAVAR           ");
AGUA = 1;
while(PRESSOSTATO == 0);
AGUA = 0;
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 2,5seg
// 5.2) bater roupa
///////////////////

for(j=0; j<75 5="" j="" minutos="" p=""> {
agitar();
x=j;
escreve_dado();
}



// 5.3) desligando motor e giro
//////////////////////
GIRO_DIR = 0;//giro horario
GIRO_ESQ = 0;//giro horario
for(i=0; i<2 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 500ms

// 5.4) soltar a agua
////////////////////////////////////////////////////////////////////////////////////
BOMBA = 1; // liga a bomba dágua para sair a agua
lcd_posicao(1,1);
imprime_string_lcd("FINAL OPERACAO  ");
lcd_posicao(2,1);
imprime_string_lcd("LAVAR           ");
cont=cont+40;
for(i=0; i
Delay10KTCYx(125); //tempo de enchimento + 10s

///////////////////////////////////////////////////////////////////////////////////////
// 6) ENXAGUAR
///////////////////////////////////////////////////////////////////////////////////////
lcd_posicao(1,1);
    imprime_string_lcd("OPERACAO        ");
    lcd_posicao(2,1);
    imprime_string_lcd("ENXAGUAR        ");
GIRO_DIR = 1;//liga motor
AGUA = 1; // liga agua
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 2,5seg GIRO_DIR = 0;//desliga motor
AGUA = 0; // desliga agua
for(i=0; i<20 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 5seg ////////////////////////////////////////////////////////
GIRO_DIR = 1;//liga motor
AGUA = 1; // liga agua
for(i=0; i<20 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 5seg GIRO_DIR = 0;//desliga motor
AGUA = 0; // desliga agua
for(i=0; i<20 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 5seg ////////////////////////////////////////////////////////
GIRO_DIR = 1;//liga motor
AGUA = 1; // liga agua
for(i=0; i<40 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 10seg GIRO_DIR = 0;//desliga motor
AGUA = 0; // desliga agua
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 2,5seg; ////////////////////////////////////////////////////////
GIRO_DIR = 1;//liga motor
AGUA = 1; // liga agua
for(i=0; i<1200 i="" p=""> {
Delay10KTCYx(125); //tempo de 5 min
x=i;
escreve_dado();

}

GIRO_DIR = 0;//desliga motor
AGUA = 0; // desliga agua
lcd_posicao(1,1);
     imprime_string_lcd("FINALIZANDO     ");
     lcd_posicao(2,1);
     imprime_string_lcd("ENXAGUAR        ");
for(i=0; i<60 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 15 segundos BOMBA = 0;

////////////////////////////////////////////////////////////////////////////////////////
//  7) AMACIANTE
////////////////////////////////////////////////////////////////////////////////////////


///////////////////////////////////////////////////////////////////////////////////////
// 😎 CENTRIFUGAR
///////////////////////////////////////////////////////////////////////////////////////
lcd_posicao(1,1);
    imprime_string_lcd("OPERACAO        ");
     lcd_posicao(2,1);
     imprime_string_lcd("CENTRIFUGAR     ");
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 2,5seg; BOMBA = 1;
GIRO_DIR = 1;//liga motor
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 2,5seg GIRO_DIR = 0;//desliga motor
for(i=0; i<20 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 5seg ////////////////////////////////////////////////////////
GIRO_DIR = 1;//liga motor
for(i=0; i<20 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 5seg GIRO_DIR = 0;//desliga motor
for(i=0; i<20 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 5seg ////////////////////////////////////////////////////////
GIRO_DIR = 1;//liga motor
for(i=0; i<40 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 10seg GIRO_DIR = 0;//desliga motor
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 2,5seg; ////////////////////////////////////////////////////////
GIRO_DIR = 1;//liga motor
lcd_posicao(1,14);
for(i=0; i<1200 i="" p=""> {
Delay10KTCYx(125); //tempo de 5 min
x=i;
escreve_dado();
}
GIRO_DIR = 0;//desliga motor
    lcd_posicao(1,1);
    imprime_string_lcd("FINALIZANDO     ");
    lcd_posicao(2,1);
     imprime_string_lcd("CENTRIFUGAR     ");
for(i=0; i<60 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 15 segundos BOMBA = 0;
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(500); //tempo de 2,5seg; FASE = 0;
TRAVA = 0;
lcd_posicao(1,1);
     imprime_string_lcd("FIM DA LAVAGEM  ");
     lcd_posicao(2,1);
     imprime_string_lcd("****************");
envia = 'F';
envia_caracter();
// FIM
while(1);
}

/////////////////////////////////////////////////////////////////////////////////////////
void agitar()
{

GIRO_DIR = 1;//giro_direita
for(i=0; i<4 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 1seg GIRO_DIR = 0;//desliga motor
for(i=0; i<4 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 1seg GIRO_ESQ = 1;// giro_esquerda
for(i=0; i<4 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 1seg     GIRO_ESQ = 0; //desliga motor
for(i=0; i<4 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 1seg
}

//////////////////////////////////////////////////////////////////////////////////////////

void escreve_dado()
{
int ch;

ch = (x / 1000) % 10;           // extract 0.1  digit
lcd_posicao(1,10);
lcd_escreve_dado(48+ch);           // write ASCII digit at cursor point

ch = (x / 100) % 10;           // extract 0.1  digit
lcd_posicao(1,11);
lcd_escreve_dado(48+ch);           // write ASCII digit at cursor point

    ch = (x / 10) % 10;            // extract 0.01  digit
lcd_posicao(1,12);
    lcd_escreve_dado(48+ch);           // write ASCII digit at cursor point

ch = x  % 10;                   // extract 0.001 volts digit
lcd_posicao(1,13);
    lcd_escreve_dado(48+ch);           // write ASCII digit at cursor point


}

//////////////////////////////////////////////////////////////////////////////////////////
char recebe_caracter()
{
while(!PIR1bits.RCIF);// aguarda chegada de um novo byte
PIR1bits.RCIF = 0;
if(RCSTAbits.FERR)  // se houve erro de transmissao
{
RCSTAbits.CREN = 0;//sim, desabilita recepcao
return 'E'; //retorna 'E' de erro
}
else return RCREG; // nao, retorna dado

}
////////////////////////////////////////////////////////////////////////////////////////
char envia_caracter()
{
TXREG = envia;
while(!TXSTAbits.TRMT);//aguarda transmissao terminar

}
////////////////////////////////////////////////////////////////////////////////////////
void acao()
{

switch(RCREG)
{
case 'A':
lcd_limpa_tela();
lcd_posicao(1,1);
imprime_string_lcd("ROQUETTI        ");
// lcd_escreve_dado(RCREG);//mostra o conteudo do registrador RCREG
break;

default:
lcd_limpa_tela();
lcd_posicao(1,1);
// lcd_escreve_dado(RCREG);//mostra o conteudo do registrador RCREG
imprime_string_lcd("BLUETOOTH RC05  ");
Delay10KTCYx(500);
}

}os passos para lavar a roupa são:
1) ENCHER a cuba- roupa+água+sabão,
2) BATER a Roupa- 10min ou 20min ou 30min,
3) DESCANSAR por 10 min.
4) SOLTAR a água,
5) LAVAR - repetir os passos 1,2 e 3 em um tempo 5min (sem sabão),
6) ENXAGUAR - centrifugar jogando água (bomba ligada),
7) AMACIANTE- encher de água + amaciante a cuba agitar um pouco, descançar por 5 minutos e esvaziar,
😎 CENTRIFUGAR - girar para tirar toda água

FIM


//CONTROLANDO A MAQUINA DE LAVAR GE
///*
PLACA CLPIC_VOICE
PIC18F4550
CRISTAL-20MHZ

RA0-I/O-DIGITAL-ANALOGICO
RA1-I/O-DIGITAL-ANALOGICO
RA2-I/O-DIGITAL-ANALOGICO
RA3-I/O-DIGITAL-ANALOGICO
RA4-IN-DIGITAL-CONTADOR DE EVENTOS - INC TIMER0 e IN-DIGITAL-OPTO
RA5-IN-DIGITAL-OPTO

RB0-OUT-RS-LCD
RB1-OUT-EN-LCD
RB2-OUT-DZ-7SEG
RB3-OUT-UN-7SEG
RB4-OUT-DADOS-LCD-7SEG
RB5-OUT-DADOS-LCD-7SEG
RB6-OUT-DADOS-LCD-7SEG
RB7-OUT-DADOS-LCD-7SEG


RC0-IN-DIGITAL-OPTO
RC1-OUT-PWM2
RC2-OUT-PWM1
RC3-VUSB
RC4-IN-D- USB
RC5-IN-D+ USB
RC6-IN-USART e IN-DIGITAL-OPTO
RC7-IN-USART e IN-DIGITAL-OPTO

RD0-OUT-DIGITAL-RELÉ
RD1-OUT-DIGITAL-RELÉ
RD2-OUT-DIGITAL-RELÉ
RD3-OUT-DIGITAL-RELÉ
RD4-OUT-DIGITAL-RELÉ
RD5-OUT-DIGITAL-RELÉ
RD6-OUT-DIGITAL-RELÉ
RD7-OUT-DIGITAL-RELÉ

RE0-IN-DIGITAL-OPTO
RE1-IN-DIGITAL-OPTO
RE2-OUT-DIGITAL-RELÉ
*/

#include
#include
#include "CLPIC_VOICE_biblioteca_lcd_2x16.h"//inclui biblioteca do lcd

// Fosc = 20MHz
// Tciclo = 4/Fosc = 0,2us
#pragma config FOSC = HS //Para cristal de 20MHz
#pragma config CPUDIV = OSC1_PLL2//sem PLL
#pragma config USBDIV = 1//para USB sem PLL
#pragma config PLLDIV = 5//Para cristal de 20MHz divide por 5, sempre tem que dar 4MHz
#pragma config WDT = OFF//Desabilita o Watchdog Timer (WDT).
#pragma config PWRT = OFF//Habilita o Power-up Timer (PWRT).
#pragma config BOR = OFF//Brown-out Reset (BOR) habilitado somente no hardware.
#pragma config BORV = 3//tensão do BOR é 2,0V.
#pragma config PBADEN = OFF//RB0,1,2,3 e 4 configurado como I/O digital.
#pragma config LVP = OFF//Desabilita o Low Voltage Program.
#pragma config MCLRE = OFF//Desabilita o RESET

/////////////////////////////////////
//    ENTRADAS
////////////////////////////////////

#define PARTIDA PORTAbits.RA5
#define PRESSOSTATO PORTEbits.RE0
#define TAMPA PORTEbits.RE1

///////////////////////////////////
//     SAIDAS
///////////////////////////////////

#define  FASE PORTDbits.RD0
#define  GIRO_ESQ  PORTDbits.RD1
#define  GIRO_DIR PORTDbits.RD2
#define  BOMBA PORTDbits.RD3  
#define  AGUA PORTDbits.RD4
#define  AMACIANTE PORTDbits.RD5
#define  TRAVA PORTDbits.RD6

/////////////////////////////////////

//variaveis globais
int cont=0,x,y,z,i,j,ch;
char envia;

//prototipo de funcoes
void agitar();
void escreve_dado();
char recebe_caracter();
char envia_caracter();


void main() //funcao principal
{
//configura entradas e saida
TRISA = 0b111111;
TRISB = 0b00000000;
TRISC = 0b11110001;
TRISD = 0b00000000;
TRISE = 0b111;

//configura digitais
ADCON1 = 0b00001111;
//configura interrupcao
INTCON = 0b11000000;
//7-habilita chave geral
//6-habilita perifericos
PIE1bits.RCIE = 1;
//configura UART
TXSTA = 0b00000000;
//7-não usado - assincrono
//6-transmissão 8bits
//5-desabilitada transmissão
//4-modo assincrono
//3-sync Break
//2-baixa velocidade
//1-Transmit Shift Register Status bit full
//0-não usado

RCSTA = 0b10010000;
//7-porta serial habilitada
//6-recepcao de 8bits
//5-nao usado
//4-recepcao habilitada
//3-desabilitada deteccao de endereco
//2-nao usado
//1-nao usado
//0-nao usado

BAUDCON = 0b00000000;
//7-AutoBAUD desabilitado EUSART
//6-não usado
//5-não usado
//4-não usado
//3-BAUD RATE em 8 bits
//2-não usado
//1-WAKE-UP (despertar) desabilitado,
//0-não usado


SPBRG = 0b10000001; // 129 em decimal para 9600bps


//configurações iniciais
PORTA = 0x00;//limpa as saídas
PORTB = 0x00;
PORTC = 0x00;
PORTD = 0x00;
PORTE = 0x00;
lcd_inicia(0x28, 0x0E, 0x06);// inicializa o Display LCD com quatro linha de dados

////////////////////////////////////////////////////////////////////////////////////
//      INICIANDO A LAVAGEM
////////////////////////////////////////////////////////////////////////////////////
lcd_posicao(1,1);
imprime_string_lcd("CONTROLE        ");
lcd_posicao(2,1);
imprime_string_lcd("MAQ DE LAVAR    ");
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 2,5seg lcd_posicao(1,1);
imprime_string_lcd("COLOQUE         ");
lcd_posicao(2,1);
imprime_string_lcd("ROUPA E SABAO");
for(i=0; i<20 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 5seg lcd_posicao(1,1);
imprime_string_lcd("SELECIONE       ");
lcd_posicao(2,1);
imprime_string_lcd("NIVEL DE AGUA");
for(i=0; i<20 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 5seg lcd_posicao(1,1);
imprime_string_lcd("APERTE          ");
lcd_posicao(2,1);
imprime_string_lcd("PARTIDA         ");
/////////////////////////////////////////////////////////////////////////////////////
// 1)INICIO LAVAGEM
/////////////////////////////////////////////////////////////////////////////////////
while(PARTIDA == 1);
FASE = 1;
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 2,5seg AGUA = 1;
lcd_posicao(1,1);
imprime_string_lcd("ENCHENDO        ");
lcd_posicao(2,1);
imprime_string_lcd("DE AGUA         ");
while(PRESSOSTATO == 0)
{
Delay10KTCYx(125);
cont++;
}
AGUA = 0;
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 2,5seg////////////////////////////////////////////////////////////////////////////////////
// 2) BATER A ROUPA
////////////////////////////////////////////////////////////////////////////////////
TRAVA = 1;
lcd_posicao(1,1);
imprime_string_lcd("BATER A         ");
lcd_posicao(2,1);
imprime_string_lcd("ROUPA           ");

GIRO_DIR = 0;//giro horario
GIRO_ESQ = 0;//giro horario
for(i=0; i<2 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 500ms
for(j=0; j<150 10="" j="" minutos="" p=""> {
agitar();
x=j;
escreve_dado();
}

GIRO_DIR = 0;//giro horario
GIRO_ESQ = 0;//giro horario
for(i=0; i<2 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 500ms////////////////////////////////////////////////////////////////////////////////////
// 3) DESCANCO DE 10 MINUTOS
////////////////////////////////////////////////////////////////////////////////////

lcd_posicao(1,1);
imprime_string_lcd("DESCANCO        ");
lcd_posicao(2,1);
imprime_string_lcd("10 MINUTOS      ");

for(i=0; i<2400 i="" p=""> {
Delay10KTCYx(125); //tempo de 10 minutos
x=i;
escreve_dado();
}

////////////////////////////////////////////////////////////////////////////////////
// 4) SOLTAR A AGUA
////////////////////////////////////////////////////////////////////////////////////
lcd_posicao(1,1);
imprime_string_lcd("SOLTANDO        ");
lcd_posicao(2,1);
imprime_string_lcd("A AGUA          ");
BOMBA = 1; // liga a bomba dágua para sair a agua
cont=cont+40;
for(i=0; i
Delay10KTCYx(125); //tempo de enchimento + 10 segundos BOMBA = 0; // desliga a bomba dagua

////////////////////////////////////////////////////////////////////////////////////
// 5)  LAVAR
////////////////////////////////////////////////////////////////////////////////////
// 5.1)  enchendo de agua
//////////////////////////
lcd_posicao(1,1);
imprime_string_lcd("OPERACAO        ");
lcd_posicao(2,1);
imprime_string_lcd("LAVAR           ");
AGUA = 1;
while(PRESSOSTATO == 0);
AGUA = 0;
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 2,5seg
// 5.2) bater roupa
///////////////////

for(j=0; j<75 5="" j="" minutos="" p=""> {
agitar();
x=j;
escreve_dado();
}



// 5.3) desligando motor e giro
//////////////////////
GIRO_DIR = 0;//giro horario
GIRO_ESQ = 0;//giro horario
for(i=0; i<2 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 500ms

// 5.4) soltar a agua
////////////////////////////////////////////////////////////////////////////////////
BOMBA = 1; // liga a bomba dágua para sair a agua
lcd_posicao(1,1);
imprime_string_lcd("FINAL OPERACAO  ");
lcd_posicao(2,1);
imprime_string_lcd("LAVAR           ");
cont=cont+40;
for(i=0; i
Delay10KTCYx(125); //tempo de enchimento + 10s

///////////////////////////////////////////////////////////////////////////////////////
// 6) ENXAGUAR
///////////////////////////////////////////////////////////////////////////////////////
lcd_posicao(1,1);
    imprime_string_lcd("OPERACAO        ");
    lcd_posicao(2,1);
    imprime_string_lcd("ENXAGUAR        ");
GIRO_DIR = 1;//liga motor
AGUA = 1; // liga agua
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 2,5seg GIRO_DIR = 0;//desliga motor
AGUA = 0; // desliga agua
for(i=0; i<20 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 5seg ////////////////////////////////////////////////////////
GIRO_DIR = 1;//liga motor
AGUA = 1; // liga agua
for(i=0; i<20 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 5seg GIRO_DIR = 0;//desliga motor
AGUA = 0; // desliga agua
for(i=0; i<20 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 5seg ////////////////////////////////////////////////////////
GIRO_DIR = 1;//liga motor
AGUA = 1; // liga agua
for(i=0; i<40 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 10seg GIRO_DIR = 0;//desliga motor
AGUA = 0; // desliga agua
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 2,5seg; ////////////////////////////////////////////////////////
GIRO_DIR = 1;//liga motor
AGUA = 1; // liga agua
for(i=0; i<1200 i="" p=""> {
Delay10KTCYx(125); //tempo de 5 min
x=i;
escreve_dado();

}

GIRO_DIR = 0;//desliga motor
AGUA = 0; // desliga agua
lcd_posicao(1,1);
     imprime_string_lcd("FINALIZANDO     ");
     lcd_posicao(2,1);
     imprime_string_lcd("ENXAGUAR        ");
for(i=0; i<60 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 15 segundos BOMBA = 0;

////////////////////////////////////////////////////////////////////////////////////////
//  7) AMACIANTE
////////////////////////////////////////////////////////////////////////////////////////


///////////////////////////////////////////////////////////////////////////////////////
// 😎 CENTRIFUGAR
///////////////////////////////////////////////////////////////////////////////////////
lcd_posicao(1,1);
    imprime_string_lcd("OPERACAO        ");
     lcd_posicao(2,1);
     imprime_string_lcd("CENTRIFUGAR     ");
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 2,5seg; BOMBA = 1;
GIRO_DIR = 1;//liga motor
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 2,5seg GIRO_DIR = 0;//desliga motor
for(i=0; i<20 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 5seg ////////////////////////////////////////////////////////
GIRO_DIR = 1;//liga motor
for(i=0; i<20 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 5seg GIRO_DIR = 0;//desliga motor
for(i=0; i<20 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 5seg ////////////////////////////////////////////////////////
GIRO_DIR = 1;//liga motor
for(i=0; i<40 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 10seg GIRO_DIR = 0;//desliga motor
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 2,5seg; ////////////////////////////////////////////////////////
GIRO_DIR = 1;//liga motor
lcd_posicao(1,14);
for(i=0; i<1200 i="" p=""> {
Delay10KTCYx(125); //tempo de 5 min
x=i;
escreve_dado();
}
GIRO_DIR = 0;//desliga motor
    lcd_posicao(1,1);
    imprime_string_lcd("FINALIZANDO     ");
    lcd_posicao(2,1);
     imprime_string_lcd("CENTRIFUGAR     ");
for(i=0; i<60 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 15 segundos BOMBA = 0;
for(i=0; i<10 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(500); //tempo de 2,5seg; FASE = 0;
TRAVA = 0;
lcd_posicao(1,1);
     imprime_string_lcd("FIM DA LAVAGEM  ");
     lcd_posicao(2,1);
     imprime_string_lcd("****************");
envia = 'F';
envia_caracter();
// FIM
while(1);
}

/////////////////////////////////////////////////////////////////////////////////////////
void agitar()
{

GIRO_DIR = 1;//giro_direita
for(i=0; i<4 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 1seg GIRO_DIR = 0;//desliga motor
for(i=0; i<4 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 1seg GIRO_ESQ = 1;// giro_esquerda
for(i=0; i<4 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 1seg     GIRO_ESQ = 0; //desliga motor
for(i=0; i<4 class="Apple-tab-span" i="" span="" style="white-space: pre;">
Delay10KTCYx(125); //tempo de 1seg
}

//////////////////////////////////////////////////////////////////////////////////////////

void escreve_dado()
{
int ch;

ch = (x / 1000) % 10;           // extract 0.1  digit
lcd_posicao(1,10);
lcd_escreve_dado(48+ch);           // write ASCII digit at cursor point

ch = (x / 100) % 10;           // extract 0.1  digit
lcd_posicao(1,11);
lcd_escreve_dado(48+ch);           // write ASCII digit at cursor point

    ch = (x / 10) % 10;            // extract 0.01  digit
lcd_posicao(1,12);
    lcd_escreve_dado(48+ch);           // write ASCII digit at cursor point

ch = x  % 10;                   // extract 0.001 volts digit
lcd_posicao(1,13);
    lcd_escreve_dado(48+ch);           // write ASCII digit at cursor point


}

//////////////////////////////////////////////////////////////////////////////////////////
char recebe_caracter()
{
while(!PIR1bits.RCIF);// aguarda chegada de um novo byte
PIR1bits.RCIF = 0;
if(RCSTAbits.FERR)  // se houve erro de transmissao
{
RCSTAbits.CREN = 0;//sim, desabilita recepcao
return 'E'; //retorna 'E' de erro
}
else return RCREG; // nao, retorna dado

}
////////////////////////////////////////////////////////////////////////////////////////
char envia_caracter()
{
TXREG = envia;
while(!TXSTAbits.TRMT);//aguarda transmissao terminar

}
////////////////////////////////////////////////////////////////////////////////////////
void acao()
{

switch(RCREG)
{
case 'A':
lcd_limpa_tela();
lcd_posicao(1,1);
imprime_string_lcd("ROQUETTI        ");
// lcd_escreve_dado(RCREG);//mostra o conteudo do registrador RCREG
break;

default:
lcd_limpa_tela();
lcd_posicao(1,1);
// lcd_escreve_dado(RCREG);//mostra o conteudo do registrador RCREG
imprime_string_lcd("BLUETOOTH RC05  ");
Delay10KTCYx(500);
}

 

  • Obrigado 1
Postado

@Daniel Martins Pereira    essa linguagem  c  , é para usar em microcontroladores tipo pic 16F676 ou outro , e o mais comum é usar a linguagem c mesmo ,  e creio que tanto faz usar c ou c++ , igual é no computador se você fizer um código em linguagem c , ele funciona em c e em c++. e nesse caso não precisa converter esse código  para outra  linguagem , não .

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!