• 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

11 posts neste tópico

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

@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

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

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!)

1 pessoa curtiu isso

Compartilhar este post


Link para o post
Compartilhar em outros sites

@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

#7   Postado (editado)

@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

@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.

 

 

2 pessoas curtiram isso

Compartilhar este post


Link para o post
Compartilhar em outros sites

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ç

1 pessoa curtiu isso

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.  

1 pessoa curtiu isso

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

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