sábado, 27 de agosto de 2016

Supervisão

Sistemas supervisórios

Quando nos referimos aos sistemas supervisórios, o próprio nome já da uma ideia do que se trata. Os sistemas supervisórios são de extrema importância dentro da industria no acompanhamento da produção para melhoria dos processos.
Além disso um sistema supervisório dentro da empresa tem a função de traçar um histórico de um equipamento por meio de captura e armazenagem num banco de dados. Essas informações vêm de sensores destinados a fins específicos.
Os sistemas supervisórios mais encontrados no mercado como Elipse, ScadaBR entre outros, trazem diversas vantagens como análise de tendências, alarmes, geração de relatórios e gráficos.

 Sistemas de supervisão - projeto

Visando essa ideia de acompanhamento e supervisão , a partir de agora vamos elaborar alguns projetos bem simples de supervisão com algumas ferramentas que estão ao nosso alcance.

Usando o Visual Studio C# foi elaborado uma tela com os conceitos que foram passadas em diversas vídeo-aulas e uma estrutura bem elaborada baseada em linguagem C.

O aplicativo pode ser baixado por esse link onde com a ligação demonstrada abaixo é possível ver o funcionamento conforme o vídeo disponível.

O esquema de ligação:


fonte: próprio autor

Nessa ligação existe um Led que usa o mesmo endereçamento do led 13 do Arduino e dois botões, que ligam e desligam o sistema luminoso respectivamente.

Material:

1 Protoboard (matriz de contatos)
1Arduino Uno R3 ou compatível
2 push-buttons
2 resistores 10k
1 resistor 150 ohms
1 led
cabos jumpers ou fios

O código-fonte:


Segue abaixo o código fonte comentado:

/*
Projeto Arduino acendendo e apagando o led com botão e 
via serial aplicativo C#
by: TonY EmersoN MariM
----------------------------------------
--=<| www.mecatronizar.blogspot.com.br |>=--
----------------------------------------
*/
//Declaração das constantes
const int led = 13;//constante led refere-se ao pino digital 13
const int botao = 2;//constante botão refere-se ao pino digital 2
const int botao2 = 3;//constante botão refere-se ao pino digital 3.
char dado; //caracteres que fazem comuicação com o C#

//Variável que conterá os estados do botão (0 low, 1 HIGH)
int estadoBotao = 0;
int estadoBotao2 = 0;

//Método setup, executado uma vez ao ligar o Arduino
void setup(){
  Serial.begin (9600);
  pinMode (led,OUTPUT);//Definindo pino digital 13 como de saída
  pinMode (botao,INPUT);//Definindo pino digital 2 como de entrada
  pinMode (botao2,INPUT);//Definindo pino digital 3 como de entrada
  
}

//Método loop, executado enquanto o Arduino estiver ligado
void loop(){

        button://Label de retorno
        //Lendo o estado do pino 2, constante botao, e atribuindo 
        //o resultado a variável estadoBotao
        estadoBotao = digitalRead(botao);
        estadoBotao2 = digitalRead(botao2);

        //Verificando o estado do botão para definir se acenderá ou
        //apagará o led
        if (estadoBotao == HIGH){
        digitalWrite (led, HIGH);//Botão 1 pressionado, acende o led
        }if (estadoBotao2 == HIGH){
        digitalWrite (led,LOW);//Botão 2 pressionado, apaga o led
        }

        //Condição para funcionamento pela comunicação serial
        //no Visual Studio
        if (Serial.available()){
      
      switch(Serial.read()){
        case 'L'://Caso o caracter L seja atribuino no aplicativo
        digitalWrite(led, HIGH);//Led acende
        Serial.println("L");
        delay(1000);
        break;
        
        case 'D'://Caso o caracter D seja atribuino no aplicativo
        digitalWrite(led,LOW);//Led Apaga
        Serial.println("D");
        delay(1000);
        goto button;//Executado condição, retorna a Label button   
   }    
  }
 }

É possível observar que durante a execução  do projeto, o aplicativo traça um histórico de funcionamento, uma integração pela porta COM e a simulação do funcionamento.
Espero que gostem, que necessitar de uma melhor explanação ou do código fonte do Visual Studio é só entrar em contato.

Para baixar o projeto completo use esse link>PROJETO.




Bons estudos!

Aplicativos com abas


Abas de Navegação

O objetivo desse exercício é facilitar o trabalho em um supervisório inserindo abas de navegação quando o aplicativo está sendo executado. As imagens necessárias para executar os projetos podem ser baixados por esse LINK.



fonte: próprio autor





domingo, 21 de agosto de 2016

System Drawing


System Drawing

No Visual Studio existem diversos recursos que vêm à facilitar a vida do usuário e entre eles está o system drawing que conta com uma tabela de cores que podem ser usadas no seu projeto.
Na video-aula 7, tem um pouco desse recurso sendo aplicado na prática.


fonte: https://safeery2k.wordpress.com/tag/system-drawing-knowncolor/ 



Bons estudos!

Aplicativo - Atalhos


Atalhos




Programar um aplicativo que quando executado permite que você seja direcionado para a função que necessita do seu sistema.
As novidades dessa vídeo-aula estão nas propriedades Grow and Srink, que não permite que o usuário não altere o tamanho do Form quando executado, MinimizeBox, qua não disponibiliza o recurso de minimização da janela e CenterScreen, que executa o aplicativo no centro de sua tela.

Caso queira utilizar os mesmos ícones do exemplo clique AQUI, ou acesse www.iconfinder.com e baixe os ícones que desejar.


Bons estudos!


sábado, 20 de agosto de 2016

Projetos - Braço Robótico

Arduino

B.R.A.M.S


Braço Robótico Articulado de Movimentos Sincronizados
fonte: próprio autor

Robôs

Uma definição clássica para robôs está diretamente ligada ao escritor Isac Assimov que em 1940 utilizou uma derivação da palavra “robota” que significa trabalho forçado e conseguiu implantar no imaginário popular o conceito que conhecemos hoje de uma máquina dotada de movimentos humanos que obedecem às ordens de seu criador.
Mas deixando o imaginário (fictício) de lado, o que temos hoje são maquinas que auxiliam os homens em seus trabalhos cotidianos, com sistemas processados cada vez mais avançados, um avanço que se deu desde após a segunda guerra mundial, ode os investimentos as pesquisas com robôs forma estimuladas, principalmente para fins militares. Visando a necessidade de trabalhar com manipulação de objetos pesados ou perigosos, George Devole e Joe Engelberguer deram início à implantação do primeiro robô industrial.
Logo nos primeiros trabalhos executados foi visível o ganho no processo produtivo, redução de custo por mão de obra, redução de periculosidade, melhor qualidade no produto (repetibilidade), redução de tempo e melhoria na realização de atividades complexas ou desgastantes.
A ISO 10218, define um robô como uma máquina manipuladora com vários graus de liberdade, controlada automaticamente com base fixa ou móvel para utilização em automação industrial.
Também existem nos robôs industriais uma unidade controladora responsável por cálculos e processamentos, responsável pelo interfaceamento de potência e um pendant de comando (controle do robô).


fonte: http://www.ahitech.com.br/view_noticia.php?id=1 

O projeto B.R.A.M.S

Braço Robótico Articulado de Movimentos Sincronizados

Para esse projeto feito com Arduino, foi elaborado um sistema bastante próximo aos robôs de caráter industrial.
Já que podemos denominar robô como qualquer sistema dotado de alguma inteligência e que posa interagir com o mundo em que vivemos vamos determinar que:
O “cérebro” e a unidade controladora do nosso robô e dotada de um Arduino Uno R3, responsável por obedecer às ordens determinadas por um pendant, que conta com um dispositivo de segurança “dead-man”, onde o movimento só é executado se for pressionado.
Atuadores (servos) por onde o “cérebro” executa as ordens determinadas.
Depois de processar as informações recebidas pelos potenciômetros, o “cérebro” do robô deverá tomar decisões lógicas e exercer uma ação para alcançar um objetivo.
Para deixar o projeto mais bem elaborador tecnologicamente, foi incrementado uma interface por bluetooth onde é possível realizar movimentos para atingir os objetivos por meio de um aplicativo Android.
Mãos à obra:
O projeto completo e passo a passo está explicado abaixo com um tutorial explicativo, lista de componentes e código fonte, além de um vídeo apresentando o projeto final.

Espero que gostem e bons estudos.

Material:
1 – Braço comercial em acrílico modelo ARM2;
4 – Servos motores, modelo SG90;
4 – Potenciômetros 100 k;
1 – Botão push button N/A;
2 m – Cabo sem manga 8 vias;
1 – Fonte 5v 3A;
1 – Caixa Patola PB 114 TE
1 – Arduino Uno R3 ou compatível;
1 – Módulo bluetooth HC- 06;
4 – Knobs;
1 – Resistor 220R;
1 – Resistor 330R;
1 – Resistor 150R;
Fios Jumpers para Arduino;
Parafusos;

Montagem:

Para a montagem do braço, foi utilizado um modelo comercial adquirido pela internet do ARM2, junto com a compra é enviado um tutorial de montagem, deve ser tomado bastante cuidado, pois o acrílico e bastante frágil.








fonte: prórpio autor

Eletrônica:
Para que as funções do Arduino fossem realizadas, seguindo o esquema de ligação que se encontra no tutorial, foi produzido uma pequena placa para o interfaceamento.
Atenção: foi colocado para alimentar todo o circuito uma fonte de 5V e 3A.


fonte: próprio autor


fonte: próprio autor




fonte: próprio autor


O código fonte:

Logo abaixo, está como foi elaborado o código fonte do projeto, está descrito cada uma das funções do código.

/** Código final do B.R.A.M.S - Braço Robótico Articulado de Movimentos Sincronizados **/
// Elaborado por Tony Emerson Marim em 08/07/2016.
/** mecatronizei@gmail.com **/
/** Controle de 4 servo motores via potenciômetro ou aplicativo celular **/

#include <Servo.h> //biblioteca do servo motor

//constantes ao quais se referem os pinos digitais de sinalização.
const int led = 10;  
const int botao = 8;

//variável de estado inicial do botão.
int estadoBotao = 0;

//portas digitais dos servos e suas ações.
//no potenciômetro.
int port_servo_canal_1 = 3;//servobase
int port_servo_canal_2 = 5;//servobraco
int port_servo_canal_3 = 6;//servoaltura
int port_servo_canal_4 = 9;//servogarra
int port_serial;

//portas analógicas dos potenciometros e suas funções.
int potbase = 0;
int potbraco = 1;
int potaltura = 2;
int potgarra = 3;

//valores de início para os ângulos
int angulobase = 0;
int angulobraco = 0;
int anguloaltura = 0;
int angulogarra = 0;

//variáveis dos servos.
//no potenciômetro.
Servo servo_canal_1;//base
Servo servo_canal_2;//braco
Servo servo_canal_3;//altura
Servo servo_canal_4;//garra

void setup()
{
  //Faixa de transmissão do módulo Bluetooth
  Serial.begin(9600);
  Serial.setTimeout(4);

  //definindo pinos de entrada e saída.
  pinMode(led,OUTPUT);
  pinMode(botao,INPUT);
 
  //Setup de carregamento das variáveis dos servos.
  servo_canal_1.attach(3);//(servobase)
  servo_canal_2.attach(5);//(servoaltura)
  servo_canal_3.attach(6);//(servogarra)
  servo_canal_4.attach(9);//(servobraco)
  servo_canal_1.write(port_servo_canal_1);
  servo_canal_2.write(port_servo_canal_2);
  servo_canal_3.write(port_servo_canal_3);
  servo_canal_4.write(port_servo_canal_4);
}

void loop(){
 
 estadoBotao = digitalRead(botao);
 //Condição executada enquanto botão acionado e Led verde aceso
 if(estadoBotao == HIGH){
 
        digitalWrite(led,HIGH);
        angulobase=analogRead(potbase);
        angulobase=map(angulobase,0,1024,0,180);
        servo_canal_1.write(angulobase); //leitura do angulo no potênciometro, mapeamento, e registro no servo referente a base.
       
        angulobraco=analogRead(potbraco);
        angulobraco=map(angulobraco,0,1024,0,180);
        servo_canal_2.write(angulobraco); //leitura do angulo no potênciometro, mapeamento, e registro no servo referente ao braço.
       
        anguloaltura=analogRead(potaltura);
        anguloaltura=map(anguloaltura,0,1024,0,180);
        servo_canal_3.write(anguloaltura); //leitura do angulo no potênciometro, mapeamento, e registro no servo referente a altura do braço.
       
        angulogarra=analogRead(potgarra);
        angulogarra=map(angulogarra,0,1024,0,40);
        servo_canal_4.write(angulogarra); //leitura do angulo no potênciometro, mapeamento, e registro no servo referente a abertura da garra.

}else{
    digitalWrite(led,LOW);//Condição com Led verde apagada assumida pelo bluetooth
 }
 if (Serial.available()>0) {
    port_serial = Serial.parseInt();
    if (port_serial >0 && port_serial <180)
    {
        port_servo_canal_1 = port_serial;
        port_servo_canal_2 = map(port_serial, 0, 180, 0, 180);
        servo_canal_1.write(port_servo_canal_1);
}
   if (port_serial >180 && port_serial <360)
    {
        port_servo_canal_2 = port_serial;
        port_servo_canal_2 = map(port_serial, 180, 360, 0, 180);
        servo_canal_2.write(port_servo_canal_2);
}
   if (port_serial >360 && port_serial <540)
    {
        port_servo_canal_3 = port_serial;
        port_servo_canal_3 = map(port_serial, 360, 540, 0, 180);
        servo_canal_3.write(port_servo_canal_3);
}
       if (port_serial >540 && port_serial <720)
    {
        port_servo_canal_4 = port_serial;
        port_servo_canal_4 = map(port_serial, 540, 720, 0, 180);
        servo_canal_4.write(port_servo_canal_4);
}
     
  }
}

Aplicativo:
E para finalizar, o controle do módulo bluetooth HC-06 foi feito pelo aplicativo que pode ser baixado no seu celular por esse link na Google Play Store.





controles do braço robótico
fonte: próprio autor

Agora você pode conferir, e curtir o vídeo do funcionamento completo do braço B.R.A.M.S.





Bons estudos!


Linguagem de programação do Arduino - parte 2

Arduino

Linguagem – parte 2

Vamos continuar entendendo um pouco mais com a parte 2 e final de linguagem de programação do Arduino:

switch...case

O comando switch...case permite comparar uma mesma variável inteira, ou uma expressão que retorne um inteiro, com diversos valores possíveis.
No comando If...else na posição do segundo bloco de instruções de outro comando if....else, cria-se uma cadeia de comandos para testar dezenas de expressões, parando somente quando encontre uma que retorne um resultado verdadeiro e executar o bloco de instruções. Com o comando switch...case a seleção de cadeias If...else é simplificada.


fonte: prórpio autor


fonte: prórpio autor


while

Repetir instruções com frequência até que uma condição verdadeira se torne falsa, é uma operação muito usada pelos programas. São os laços de repetição.


fonte: prórpio autor

fonte: prórpio autor

do...while

Para fazer com que o bloco de instruções execute pelo menos uma vez, antes do teste de validade, ele é deslocado para a entrada de decisões. No do...while o bloco “ instruções” é executado, para somente depois avaliar “expressão A”.


fonte: prórpio autor

fonte: prórpio autor

for

Ser for inserido um contador que registre cada execução do bloco de instruções consegue-se um controle de repetições por meio do comando for. O contador contém uma variável de controle que vem previamente inicializada com um tipo e um valor.
A variável é normalmente inicializada com 0 ou 1, na sua expressão contém os valores mínimos/ máximos que o contador deve alcançar e ser inserido um incremento/ decremento da variável a cada vez que o bloco de instruções executar.
No comando for, depois que uma varável é icicializada, o contador é testado e começam as comparações e se o valor nele acumulado é maior (ou menor), um tempo determinado é executado e o contador é incrementado/ decrementado e seu valor é testado novamente. O ciclo se repete até que o valor desejado seja atingido.


fonte: prórpio autor

fonte: prórpio autor

Operador ternário “?”

Utilizado para simplificar códigos com comandos if ...else o operador ternário “?” avalia a expressão e se esta for verdadeira, uma instrução é executada, se for falsa uma outra expressão é executada.


fonte: prórpio autor

Conhecendo esses comandos principais para programação do Arduino, fica mais fácil entender sua linguagem e possível a integração de diversos elementos.


Bons estudos!

sexta-feira, 19 de agosto de 2016

IoT + Industria 4.0

IoT + Industria 4.0

Internet das coisas



fonte: http://www.smartronic.com.br/2016/03/microsoft-e-hcl-technologies-lancam-incubadora-de-internet-das-coisas/ 

Em um documentário no Youtube, uma mulher de jeito bastante simples, que lembrava muito as mães dos meus amigos na minha infância, relata que não sabe como funciona “essas coisa da internet”, com uma inocência pura e uma sinceridade singular mal sabia que de sua boca saia uma termo que popularizou e trouxe junto a próxima evolução em integração.
A IoT (Internet of Things, em Inglês), traz um conceito tecnológico onde todos os objetos estariam ligados entre si por meio da rede mundial de computadores.
Esse conceito traz, segundo Mark Weiser, um dos mais importantes estudiosos das Ciências da Computação, que com a internet das coisas a informática torna-se obrigatória e presente no cotidiano das pessoas.
Com velocidades, cada vez maiores e fluxo de dados cada vez mais intensos, eletro domésticos, carros, mesas, aparelhos, entre outros estão em constante comunicação entre si e com as pessoas.

Indústria 4.0



fonte: http://blogbrasil.comstor.com/industria-4-0-a-proxima-revolucao-industrial

Já que estamos em um dos mais altos níveis de evolução da tecnologia presenciada pelo homem, vamos tentar imaginar o quanto da Internet das coisas pode caminhar de mãos dadas junto com a nova evolução na indústria.
Cada vez mais frequente, a inserção da tecnologia digital na indústria demostra ser uma tendência em diversas áreas, até porque a área que optar por resistir, vai encontrar dificuldades na acirrada competição do mercado atual.
Dentro da manufatura, a integração das tecnologias nas etapas de desenvolvimentos na produção e logística caminha a passos largos, até mesmo entre fábricas de diferentes regiões, mas com a mesma cadeia de suprimentos, conectando máquinas, produtos e clientes. A monitoração de um processo permite que a empresa aumente a eficiência produtiva, identifique rapidamente qualquer problema e otimize os processos.
A ideia pode ser assustadora, mas redes que usam o fluxo de dados da rede mundial para transporte de informações dentro da Indústria é uma realidade.
No Brasil a implantação da Indústria 4.0 ainda tem como um dos maiores entraves o alto custo de implantação, mas vê-se que está ocorrendo em pequenas etapas. Empresas de grande porte, 32 % delas, não reconhecem uma entre as 9 tecnologias mais importantes para a competitividade, segundo uma pesquisa realizada pela CNI em Abril de 2016, entre as pequenas e médias empresas o desconhecimento dessas tecnologias ainda é mais impressionante  com percentual de 57%.
E quais seriam as tecnologias principais da indústria 4.0 consideradas determinantes para o crescimento e a produtividade? As tecnologias são:


fonte: http://www.dcomercio.com.br/categoria/tecnologia/internet_das_coisas_o_mundo_conectado

1.  Robôs automatizados: além das funções atuais, futuramente, serão capazes de interagir com outras máquinas e com os humanos, tornando-se mais flexíveis e cooperativos.
2.       Manufatura aditiva: produção de peças, por meio de impressoras 3D, que moldam o produto por meio de adição de matéria-prima, sem o uso de moldes físicos.
3.      Simulação: permite operadores testarem e otimizarem processos e produtos ainda na fase de concepção, diminuindo os custos e o tempo de criação.
4.      Integração horizontal e vertical de sistemas: sistemas de TI que integram uma cadeia de valor automatizada, por meio da digitalização de dados.
5.      Internet das coisas industrial: conectar máquinas, por meio de sensores e dispositivos, a uma rede de computadores, possibilitando a centralização e a automação do controle e da produção.
6.      Big Data e Analytics: identifica falhas nos processos da empresa, ajuda a otimizar a qualidade da produção, economiza energia e torna mais eficiente a utilização de recursos na produção.
7.      Nuvem: banco de dados criado pelo usuário, capaz de ser acessado de qualquer lugar do mundo, por meio de uma infinidade de dispositivos conectados à internet.
8.      Segurança cibernética: meios de comunicação cada vez mais confiáveis e sofisticados.
9.      Realidade aumentada (“Augmented Reality”): sistemas baseados nesta tecnologia executam uma variedade de serviços, como selecionar peças em um armazém e enviar instruções de reparação por meio de dispositivos móveis.


fonte: http://www.virtutecnologica.com.br/paginas_governanca/varoris_datadvantage.html

Caminho sem volta

Parece que esse é um caminho sem volta e investimentos na área a partir de todos esses conceitos são inevitáveis, o que o futuro reserva desse “casamento” entre a IoT e a Indútria 4.0, ainda não é possível prever, mas aquela senhora citada no inicio desse texto, mesmo sem entender e sem conhecer está sendo “empurrada” para uma realidade onde mesmo com o avanço tecnológico pode ainda não entender nada sobre “essas coisa da internet”, mas em sua volta já está de alguma maneira instaurada a Internet das coisas.

Referências:

domingo, 14 de agosto de 2016

Timer - temporizador


Timer- temporizadores



fonte: http://br.freepik.com/fotos-vetores-gratis/temporizador 

Este componente permite temporizar partes de um código. Os Timers podem ser utilizados para pequenas animações e também para apresentar a hora exata do sistema, os minutos e até mesmo os segundos.

Os timers têm como suas principais propriedades o "interval", que determina o tempoem milissegundos para que o código possa ser executado novamente, e o "enabled" que permite a ativação do temporizador.

Nas video-aulas do nosso canal MECATRONIZANDO, vai ser apresentado algumas aplicações para esse componente.



Bons estudos e sejam curiosos!







sábado, 13 de agosto de 2016

Linguagem de programação do Arduino.


Arduino

Linguagem

Vamos abordar a linguagem aplicada ao Arduino de uma maneira bastante simples para começarmos a entender a lógica de programação aplicada aos projetos, a intenção não é transformar ninguém em programador de sistemas, mas aprender o suficiente para uso na mecatrônica, aliás, a função do mecatrônico é fazer as coisas acontecerem de forma integrada.
Muito bem, vamos começar com algumas notas para que tenhamos a compreensão básica dos programas de computador.

Programas C++

Um programa em C++ consiste de uma ou mais partes que chamamos de função. Um programa em C++ deve definir pelo menos uma função chamada main, que marca o ponto de inicio de execução do programa.
Cada instrução em C++ chamamos de sentenças, que podem ser simples ou compostas. As sentenças simples são sentenças terminadas com pontoe virgula, as sentenças compostas são as informações agrupadas em blocos dentro de chaves.
As informações usadas dentro de um programa são chamadas de variáveis, onde o nome de cada variável está associada a um lugar específico na memoria. Como cada variável usa uma determinada quantidade de armazenamento na memoria elas devem ser declaradas, especificando seu tipo e nome que devem seguir algumas regras:
Nomes significativos não muito longos;
Não podem ser nomes ou palavras reservadas à lingagem;
Maiúsculas devem diferenciar-se das minúsculas;
Usar letras maiúsculas ou “_” para ligar as palavras;
Usar nomes de variáveis do tipo i, j e k somente para contadores;
Quando definimos um variável, ainda é necessário dar um valor à elas usando o operador atribuição (=).
No geral devem sempre lembrar que ao executar um programa, uma variável é associada a:
Um tipo,que informa quantos bytes a variável ocupa e como deve ser interpretada;
Um nome, como identificador;
Um endereço, o endereço do byte menos significativodo local da memoria associada a variável;
Um valor, o conteúdo real dos bytes associados com a variável
Os nomes das variáveis, devem ser declarados antes de serem usados para evitar erros durante a compilação;
Antes de serem utilizadas, as variáveis devem receber valores, evitando falhas na execução do programa.
Além das variáveis, em C++, podem ser usados números ou caracteres cujo valores não mudam, eles são chamados constantes. As constantes assim como as variáveis também têm tipos e não são associados a lugares na memória.


palavras reservadas à Linguagem C
fonte: Livro C++ - Notas de Aula. prof. Armando Luiz N. Delgado.


Então entendendo a linguagem C++ fica mais fácil uma introdução à linguagem de programação do Arduino.

Programar o Arduino

Já que estamos falando de constantes e variáveis vamos abordar esse conceito voltado ao Arduino agora.


  • Constantes: no Arduino não podem ser alterados, são valores pré-definidos, com dois componentes em três grupos eles são representados pelos valores binários 1 e 0.
  •  True/false – estados lógicos que definem verdadeiro para qualquer valor diferente de zero e falso é o valor zero;
  •  High/low – definem as tensões nos pinos digitais, alto é uma tensão de 5 volts e baixo é tensão 0 volts (?);
  • Inpout/output – programadas pela função pinMode (), podem ser definidas como entradas ou saídas.
  • Variáveis: Como visto anteriormente são locais na memória marcadas com nome e o tipo de informação guardada. Assim como as funções, toda varável deve ser declarada antes de ser chamada.
  • Escopo da variável – é o limite da variável, podendo ser declarada em qualquer parte do programa. Sendo declarada antes da função Setup (), passa a ter o escopo de Variável Global, sendo vista e usada por qualquer função no programa. Se for declarada dentro de uma função, passa a ter um escopo de Variável Local e só pode ser usada por essa função.


Podemos destacar também os tipos de variáveis:

  •         byte – armazena 8 bits (0-255);
  •         int – armazena números inteiros de até 16 bits;
  •         long – armazena números inteiros até 32 bits;
  •         float – armazenam números fracionários de até 32 bits.


Matrizes: coleções de variáveis de um mesmo tipo que são acessados por meio de um indicador (índice). Para declarar uma matriz, deve ser dado um tipo e um nome seguido de []:
int nomeMatriz[] = {16, 32, 64, 128,...};
ou somente o tipo, o nome e o tamanho da matriz, deixando no programa o armazenamento de variável nas posições, ou indicas da matriz:
int nomeMatriz [10];
// posições para variáveis inteiras

 
Para ler ou escrever uma Matriz, deve ser escrito conforme segue, suponhamos que queira guardar um inteiro 12 na 2ª posição da matriz nomeMatriz:
nomeMatriz [2] = 12;
atribuindo um valor armazenado na 3ª posição de nomeMatriz à uma variável x:
int x = nomeMatriz [3];

Lógica e aritmética: adição (+), subtração (-), multiplicação (*) e divisão (/), são as opraçõe aritméticas que podem ser usadas na linguagem do Arduino, Além de três operados lógicos: &&/AND (porta lógica ‘E’), ||/OR (porta lógica ‘OU’) e !/NOT (porta lógica ‘NÃO’). Vale lembrar também dos operadores de comparação, que como o próprio nome diz: servem para comparar constantes e variáveis entre sí, testando se uma condição é verdadeira.

  •        X == y; (se x é igual a y)
  •        X ≠ y; (se x é diferente de y)
  •        X < y; (se x é menor que y)
  •        X > y; (se x é maior que y)
  •        X <= y; (se x é menor ou igual a y)
  •        X >= y; (se x é maior ou igual a y)

Funções de tempo: as funções de tempo podem suspender temporariamente outras funções no programa e são alteradas pelo usuário, são elas: delay (ms), onde o programa pausa por um tempo em mili segundos determinados entre (), ou delayMicrossegundos (us), onde o programa pode executar um pause determinado em microssegundos, também determinados ().

Funções de controle (Fluxo) – parte 1

 if

é usado para selecionar uma ou mais instruções com base em um teste de comparação. São executadas todas as instruções declaradas entre {...}, se e somente se, o resultado for verdadeiro.


fonte: próprio autor


fonte: próprio autor

if...else

ao contrário do comando if, o comando if...else oferece uma outra alternativa para um novo teste se a primeira condição for falsa.


fonte: próprio autor


fonte: próprio autor

 if...else if

Acrescentando o comando if...else no laço do comando if, pode-se também criar um outro comando chamado if...else if.
Por exemplo se a “expressão A” for verdadeira o ‘bloco de instruções X é executado, se “expressão A” for falsa, mas a “expressão B” for verdadeira ‘bloco de instruções Y’ é executado, e se “expressão A” e “expressão B” forem falsas o ‘bloco de instruções Z’ é executado.




fonte: próprio autor


fonte: próprio autor


Encerramos assim a nossa primeira parte de programação com Arduino, no próximo post vamos conhecer os comandos switch...case, while, do...while, for, e o operador ternário ‘?’.


Até a próxima.

terça-feira, 9 de agosto de 2016

Fluxogramas


Arduino

Fluxogramas

Uma maneira bastante usada para representar ações aplicadas à algoritmos usando formas geométricas diferentes e distintas. Essa é a função dos fluxogramas quando se trata de programação. Existe uma ordem para que tudo funcione de maneira correta e organizada, com uma ordem lógica, uma tarefa só vai ter sucesso em sua ação se seguir alguns passos que vamos aprender agora.

Símbolos

Em uma representação por fluxograma devem ser usados símbolos geométricos para representar as ações da tarefa determinada. Podemos destacar os mais usados:

Fluxo de dados: indica o sentido do fluxo de dados. Conecta os demais símbolos.

fonte: próprio autor

Terminal: indica o início e fim de um processamento.


                                                                  fonte: próprio autor 

Processamento: processamento em geral, indica por exemplo o cálculo de dois números.
fonte: próprio autor

Entrada e saída: indica a operação de entrada e saída de dados.
fonte: próprio autor

Desvio (conector): permite o desvio para um ponto qualquer do programa.
fonte: próprio autor

Entrada manual: indica a entrada de dados via teclado. Por exemplo: “digite a nota P1”.
fonte: próprio autor

Exibir saída: mostra informações ou resultados.
fonte: próprio autor

Decisão: permite elaborar processos de decisão.
fonte: próprio autor

Conector de página: permite informar de qual página vem o fluxograma.
fonte: próprio autor

Algoritmos

Definimos algoritmos como um conjunto de sequencias finitas de instruções claras e bem definidas.
Em programação, assim como em tudo quanto é ação à ser executado, deve ser seguido um raciocínio lógico e se necessário sequencias definidas.
Vou exemplificar com um algoritmo para trocar um pneu:










fonte: próprio autor

Um exemplo de um algoritmo onde pode-se ler dois números aleatórios, calcular a média e exibir o resultado:


fonte: próprio autor

É de extrema importância entender a função do fluxograma para obter sucesso na descrição do código, para que obtenha sucesso durante a compilação.

Em breve estarei postando material sobre introdução à linguagem C/C++ para que seja possível entender melhor a programação em plataforma Arduino.