Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Isabella Lima

programação do potenciômetro no kit mcmaster

Recommended Posts

Boa noite pessoal! Estou com muitas dúvidas nessa prática de laboratório e gostaria que alguém me orientasse, esse kit tem o microcontrolador PIC16F877A.

- > Elabore um programa que comunique com o módulo McMaster através da porta serial. O programa deve ler o valor enviado pelo módulo (tensão ajustada no potenciômetro) e se o valor for < 2000, o programa deve enviar os caracteres “1” (liga a lâmpada) e “4” (desliga o ventilador). Caso o valor for >= 3000, o programa deve enviar os caracteres “2” (desliga a lâmpada) e “3” (liga o ventilador).

 

Desde já agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites
aphawk    2.452

@Isabella Lima ,

 

 Bem-vinda ao Fórum.

 

Não basta apenas saber que o seu kit usa o Pic 16F877A...

 

Sobre o McMaster... tem de saber qual o protocolo de comunicação, com o formato dos dados que são enviados, se são dois bytes apenas ou mais bytes, sinalizando Início ou Final de Frame, se tem checksum ....

 

E qual a linguagem ? 

 

Bola de cristal está em falta no mercado kkkkk !

 

Só com essas informações alguém pode te ajudar, ok ? (Eu não entendo mais nada de Pic, mas tem outros aqui que ainda usam ! )

 

Paulo

Compartilhar este post


Link para o post
Compartilhar em outros sites
Isabella Lima    0
  • Autor do tópico
  • Desculpa kkkkkkkkk
    Linguagem C

     

    9 horas atrás, aphawk disse:

    @Isabella Lima ,

     

     Bem-vinda ao Fórum.

     

    Não basta apenas saber que o seu kit usa o Pic 16F877A...

     

    Sobre o McMaster... tem de saber qual o protocolo de comunicação, com o formato dos dados que são enviados, se são dois bytes apenas ou mais bytes, sinalizando Início ou Final de Frame, se tem checksum ....

     

    E qual a linguagem ? 

     

    Bola de cristal está em falta no mercado kkkkk !

     

    Só com essas informações alguém pode te ajudar, ok ? (Eu não entendo mais nada de Pic, mas tem outros aqui que ainda usam ! )

     

    Paulo

     

    adicionado 1 minuto depois
    29 minutos atrás, ViniciusKruz disse:

    Quais linguagens serão usadas tanto no programa quanto no PIC?

     

    Linguagem C

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    Isadora Ferraz    1.595

    qual/como é o protocolo deste tal macmaster? a propósito, wtf? conversor ad? como os dados estão distribuídos no frame? etc... Baseando nisso você pode tentar usar alguma função mastigada (e gulosa) como getc() ou getchar() ou scanf(), converter pra numero decimal inteiro e fazer as comparações

     

    E puts! ia me esquecendo da a pergunta que não quer calar: com mc, você já fez um pisca led? Se sim, que cor ele era? (isto sim é importante!)

    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    ViniciusKruz    492

    @Isabella Lima  Pelo que deu a entender, você está ainda começando na programação e ainda não tem nada "palpável", a ideia da @Isadora Ferraz  é boa, começa fazendo um led piscar, a partir daí, vai pesquisando e incrementando o que for necessário e se não estiver conseguindo, estamos aqui.

     

    Pra começar, me diga qual compilador/IDE que vai usar no PC e também no PIC, depois disso ficará mais fácil te passar as dicas.

     

    Abraço.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    Isabella Lima    0
  • Autor do tópico
  • @ViniciusKruz Linguagem C nem tanto, o problema mesmo é a programação utilizando o microcontrolador... O compilador que utilizo é o CODBLOCK.

    Esse é o Kit McMaster que utilizo na faculdade (http://www.mosaico.com.br/?canal=5&pg=showProduto&path=produtos&id=16#)

    Editado por Isabella Lima
    Acrescentar mais informações.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    ViniciusKruz    492

    @Isabella Lima  

     

    Bacana esse kit!!!

     

    Tem certeza que o CodeBlocks compila para PIC, se não me engano ele é para AVR. De qualquer maneira, pelo fato dessa IDE ser relativamente nova, vai ser um pouco complicado encontrar ajuda, pra sua sorte a linguagem C é muito difundida, creio que a dificuldade maior mesmo será com relação a IDE.

     

    Infelizmente, nessa IDE, não vou conseguir te ajudar muito, mas vai postando suas dúvidas na medida em que elas forem aparecendo pra podermos ver o que poderemos fazer pra ajudar ok.

     

     

    • Curtir 2

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    Isadora Ferraz    1.595

    Vamos tentar uma ou duas gotas...

     

    Este treco (caro!) conversa com o mplab. Escolha um compilador que se "pluga" no mplab. Tem vários, destaque para o hitech-c. O codeblock conecta com ele? Legal.

     

    Pelo que entendi você quer algo assim...

    Em 20/03/2017 às 21:51, Isabella Lima disse:

    ler o valor enviado pelo módulo (tensão ajustada no potenciômetro)

    a=adcread(0);

    Em 20/03/2017 às 21:51, Isabella Lima disse:

    se o valor for < 2000

    if (a<2000) {putc(1);putc("4");}

    e o outro if.. ... ...já sabe

     

    Detalhe: só funciona se o conversor ad do seu mc for de mais de 10 bits

     

    Penso que você deve ser + específica na dúvida, pois como disse o amigo paulão

    Em 21/03/2017 às 00:52, aphawk disse:

    Bola de cristal está em falta no mercado kkkkk !

    kk

     

    Permita-me mencionar de novo que não deve queimar a etapa pisca led, ok?

     

    To junto com o amigo @ViniciusKruz no tocante ao codeblock. Certa feita cogitei instalá-lo mas o cheiro de talco tava me incomodando. kk

    abç

    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    ViniciusKruz    492

    Desconheço a licença do CodeBlock mas geralmente nas faculdades eles direcionam sempre para as melhores opções FREE, só que às vezes o barato sai caro a longo prazo. Acredito que a versão de estudante do Mplab para esse kit seja uma das melhores opções porque o que não vai faltar é ajuda na internet e se a coisa se tornar profissional, seria só comprar uma licença básica. 

     

    Aconselho, se possível partir pro Mplab(eu particularmente continuaria sem poder ajudar muito mas isso não seria um problema), verifica com seu professor se tem possibilidade, caso contrário, não desfazendo deste fórum e nem da boa vontade do pessoal daqui, mas você conseguiria mais ajuda em um fórum(imagino que exista) específico do codeblock.  

    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    Isabella Lima    0
  • Autor do tópico
  • Eu e uns colegas chegamos próximos do que queremos, fizemos a programação em C++ achamos mais eficaz, ainda falta alguns ajustes, pois na hora que compila o oscilador ainda não está 100% certo, mas segue o código até o momento:

     

    #include <iostream>

    #include <windows.h>

    #include <conio.h>

    #include <cctype>

    using namespace std;

    int main(void)

    {

    // Variáveis

        char opc;

        int valor;

        char szBuff[4];

        char szBuff3[25];

        char szBuff2[6];//='Caracter ';

     

        strcpy(szBuff2, "Chave ");

        strcpy(szBuff3, " press...#### ECOM 7 #####");

        HANDLE hSerial;

        DCB dcbSerialParams = {0};

        DWORD dwBytesRead = 0;

        DWORD dwBytesWrite = 0;

        cout << endl;

        cout << "___ Interface Serial ___" << endl;

        cout << endl;

    // Abre a porta serial COM1

        hSerial = CreateFile("COM1",GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);

     

        if(hSerial==INVALID_HANDLE_VALUE)

        {

            if(GetLastError()==ERROR_FILE_NOT_FOUND)

            {

                cout << "Erro! Porta não encontrada." << endl;

            }

            cout << "Erro! A porta não pode ser aberta." << endl;

        }

    // Configura os parâmetros da porta

     

        dcbSerialParams.DCBlength=sizeof(dcbSerialParams);

        if (!GetCommState(hSerial, &dcbSerialParams))

        {

            cout << "Erro! Parâmentros da porta não encontrados." << endl;

        }

        dcbSerialParams.BaudRate=CBR_9600;

        dcbSerialParams.ByteSize=8;

        dcbSerialParams.StopBits=ONESTOPBIT;

        dcbSerialParams.Parity=NOPARITY;

        if(!SetCommState(hSerial, &dcbSerialParams))

        {

            cout << "Erro! Os parâmentros da porta não puderam ser setados." << endl;

        }

     

        opc = '0';

        while (opc != '3')

        {

            cout << endl;

            cout << "2) Ler e escrever na porta COM1" << endl;

            cout << "3) Sair" << endl;

            cout << "Opcao = ";

            cin >> opc;

     

                if (opc == '2')

                {

     

                    cout << "Tecle algo para encerrar a leitura..." << endl;

                    while (!kbhit())

                    {

                        strcpy(szBuff,"");

     

     

                        if(!ReadFile(hSerial, szBuff, 4, &dwBytesRead, NULL))

                        {

                            cout << "Erro! Leitura da porta." << endl;

                        }

                        ///cout << endl;

     

                        cout << "Caracter  = " << szBuff<< endl;

     

                        char var1[4];

                        int aux;

     

                        cout<< "szBuff = " << szBuff << endl;

                        for(int i = 0 ; i < 5 ; i++)

                            if(!isdigit(szBuff))

                                szBuff='0';

     

     

                        valor = atoi(szBuff);

     

                        if(szBuff!=0)

                        {

                            if(valor < 2000)

                            {

     

                                WriteFile(hSerial, "1", 1, &dwBytesRead, NULL);

                                WriteFile(hSerial, "4", 1, &dwBytesRead, NULL);

                            }

                            if(valor >=3000)

                            {

                                WriteFile(hSerial, "2", 1, &dwBytesRead, NULL);

                                WriteFile(hSerial, "3", 1, &dwBytesRead, NULL);

                            }

                        }

                        //  szBuff = strcpy("0000");

                    }

                }

        }

    // Fecha a porta serial COM1

        CloseHandle(hSerial);

        system("pause");

        return 0;

    }

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

    ×