Como Programar por Blocos

Olá, como estão? A princípio iremos falar sobre alguns sites que podemos utilizar para programar por blocos e para demonstrar o iremos desenvolver um projeto simples com LED e botões. Entretanto para esse projeto iremos usar o KIT básico com Arduíno UNO da WJ Componentes.

Arduíno UNO
LED Difuso

Componentes Utilizados


OU

Funcionamento do Projeto Programar por Blocos


Como foi comentado anteriormente, hoje iremos demonstrar como programar o Arduíno UNO por blocos e para demonstrar realizamos um projeto simples utilizando botão, LED e Serial. Então quando o usuário apertar o botão, iremos fazer um fade ligando o LED e estaremos escrevendo uma mensagem na Serial. Em seguida quando soltarmos o botão realizaremos o fade com o LED desligando e enviando uma mensagem para a Serial.

Onde Programar por Blocos?


Existem vários sites e aplicativos que nos permite programar por blocos, contudo entre eles estão Tinkercad, Block.ino, mBlock e MAKER. Ainda assim cada um deles possui vantagens e desvantagens. Dessa forma segue abaixo uma breve explicação de cada um e suas vantagens e desvantagens.

Tinkercad

Contudo Tinkercad é o mais famoso entre os demais. Pois ele é uma website gratuito que permite a realização de protótipos, montagem de projetos eletrônicos, simulações, codificação de objetos 3D e visualização em realidade aumentada. Além disso ele faz parte do grupo de softwares da empresa Autodesk.

Vantagens

  • Gratuito e Online.
  • Permite Modelagem 3D.
  • Possui função de exportar projeto 3D, para corte a laser e impressão 3D.
  • Permite a visualização do projeto em realidade aumentada.
  • Possui função de montagem do circuito eletrônico.
  • Permite programar por blocos e obter o código-fonte para realizar o carregamento Arduíno UNO.
  • Visualização de esquemático.
  • Permite Realizar a montagem e programação em tempo real com outras pessoas.
  • Permite Realizar simulações.
  • Possibilita integração com Autodesk Fusion 360 e a exportação em .brd.
  • Permite que professores criarem salas de aulas e atividades para seus alunos.

Desvantagens

  • Possui poucos microcontroladores.
  • A programação por blocos é muito limitada.
  • Não realiza o carregamento direto no Arduíno UNO.

Block.ino

Logo Block.ino

Em seguida temos o Block.ino, desenvolvido pela universidade de Santa Catarina, que permite programar um Arduíno Real mesmo sem ter um.

Vantagens

  • Aplicação Online e Gratuita.
  • Programe em blocos e obter o código-fonte para realizar o carregamento do Arduíno UNO.
  • Programar um Arduíno Real.
  • Realizar Simulações em tempo real.

Desvantagens

  • Somente possui o Arduíno para programação.
  • Não permite modificação no diagrama do circuito.
  • Não realiza carregamento direto no Arduíno UNO.

mBlock

Logo depois temos o mBlock é a plataforma de codificação online e off-line totalmente gratuita, desenvolvida para te auxiliar com a programação.

Vantagens

  • Aplicação Online e Gratuita.
  • Programação em Blocos.
  • Carregar diretamente no seu microcontrolador.
  • Programar para vários microcontroladores.
  • Programar juntamente um jogo ou software.
  • Possui algumas extensões.

Desvantagens

  • Não permite modificação no diagrama do circuito.

MAKER: Maker Coding Simulator

Logo MAKER

Contudo agora temos o MAKER é uma plataforma web e aplicativo mobile visando ensinar crianças a programar por jogos e programação por bloco.

Obs.: Por enquanto a plataforma online só permite a programação por bloco, pois, está em beta.

Vantagens

  • Site Online, aplicativo mobile e parcialmente Gratuito.
  • Programar em blocos e obter o código-fonte para realizar o carregamento do microcontrolador.
  • Programar com editor de texto.
  • Carregar diretamente no seu microcontrolador.
  • Montagem do circuito eletrônico básico.
  • Visualização do projeto em realidade aumentada.
  • Controle via bluetooth.
  • Alguns maker pack, aonde já vem como montar, programar o projeto.
  • Jogos educativos de programação.

Desvantagens

  • Alguns recursos são pagos.
  • Permite a programação somente para Arduíno.
  • Não possui tradução para o português, a linguagem padrão dele é coreano, porém, tem como trocar para inglês.
  • Algumas coisas não estão traduzidas para o inglês.

Montagem do Projeto Programar por Bloco


Logo após compra dos componentes na WJ Componentes, vamos à montagem! Então conectamos o LED na protoboard com o resistor que ligamos no catodo do LED, e para finalizar o LED ligamos o anodo ao pino 3 do Arduíno UNO. Em seguida conectamos um botão na protoboard e conectamos ao pino 4 do Arduíno UNO, a seguir conectamos GND do Arduíno na protoboard.

Contudo segue abaixo uma imagem que demonstra a montagem do circuito.

Pinout LED Código Morse
Montagem do Circuito Eletrônico na Protoboard - Programar por bloco

Diagrama Esquemático do Projeto Programar por Bloco


Diagrama do Circuito Eletrico - Programar por Bloco

Código-fonte do Projeto Programar por Bloco


Em seguida terá o código completo do projeto.

//Variáveis Globais ----------------------------------------------------------------------------------
byte cont = 0;                                             // Variável de Controle PWM
 
//Setup ----------------------------------------------------------------------------------------------
void setup(){
    Serial.begin(9600);                                    // Inicializa Serial
    pinMode(3, OUTPUT);                                    // Configura LED como OUTPUT
    pinMode(4, INPUT);                                     // Configura botão como INPUT
}
 
//Void -----------------------------------------------------------------------------------------------
void loop(){
    if (digitalRead(4) == 1) {                             // Verifica se o Botão foi apertado
        Serial.println("Ligando");                         // Imprime na Serial
        analogWrite(3, cont);                              // Gera PWM para o pino 3
        if (cont < 255) {                                  // Verifica se i é maior que 255
            cont += 1;                                     // Incrementa +1 a i
        }
    } else {
        Serial.println("Desligando");                      // Imprime na Serial
        analogWrite(3, cont);                              // Gera PWM para o pino 3
        if (cont > 0) {                                    // Verifica se i é menor que 0
            cont -= 1;                                     // Decrementa -1 de i
        }
        delay(50);                                         // Espera 50 milissegundos
    }
}

Vamos dar uma olhada mais de perto no código:

Variáveis Globais

Primeiramente declararemos uma variável do tipo byte para armazenar o PWM.

//Variáveis Globais ----------------------------------------------------------------------------------
byte cont = 0;                                             // Variável de Controle PWM

Função Setup

Agora na função setup, inicializamos a serial com a velocidade de 9600, em seguida configuramos os pinos 3 e 4 como INPUT e OUTPUT.

//Setup ----------------------------------------------------------------------------------------------
void setup(){
    Serial.begin(9600);                                    // Inicializa Serial
    pinMode(3, OUTPUT);                                    // Configura LED como OUTPUT
    pinMode(4, INPUT);                                     // Configura botão como INPUT
}

Função Loop

Então agora na função loop, será onde será feita a realização do fade. Contudo para isso iremos verificar se o botão foi apertado, caso tenha imprimiremos uma mensagem na Serial. Em seguida geramos uma onda PWM para o pino 3 e verificamos se cont é menor que 255, se for incrementamos +1 na variável cont. Entretanto caso o botão não tenha sido apertado, imprimimos uma mensagem na Serial. Então geramos uma onda PWM para o pino 3 e verificamos se cont é maior que 0, caso seja decrementamos -1 da variável cont.

//Void -----------------------------------------------------------------------------------------------
void loop(){
    if (digitalRead(4) == 1) {                             // Verifica se o Botão foi apertado
        Serial.println("Ligando");                         // Imprime na Serial
        analogWrite(3, cont);                              // Gera PWM para o pino 3
        if (cont < 255) {                                  // Verifica se i é maior que 255
            cont += 1;                                     // Incrementa +1 a i
        }
    } else {
        Serial.println("Desligando");                      // Imprime na Serial
        analogWrite(3, cont);                              // Gera PWM para o pino 3
        if (cont > 0) {                                    // Verifica se i é menor que 0
            cont -= 1;                                     // Decrementa -1 de i
        }
        delay(50);                                         // Espera 50 milissegundos
    }
}

Assim finalizamos o código do Arduíno UNO. Entretanto agora iremos verificando como este mesmo código ficará em cada um dos sites ou aplicativos.

Programar por Blocos no Tinkercad

Contudo o resultado obtido com o Tinkercad foi o mais parecido com o que nós desenvolvemos.

Código desenvolvido em Blocos:

Código-fonte por blocos Tinkercad

Código-fonte Gerado:

int cont = 0;
 
void setup()
{
    pinMode(4, INPUT);
    Serial.begin(9600);
 
    pinMode(3, OUTPUT);
}
	 
void loop()
{
    if (digitalRead(4) == 1) {
        Serial.println("Ligando");
        analogWrite(3, cont);
        if (cont < 255) {
            cont += 1;
        }
    } else {
        Serial.println("Desligando");
        analogWrite(3, cont);
        if (cont > 0) {
            cont += -1;
        }
        delay(50);
    }  
}

Programar por Blocos no Block.ino

Com o Block.ino tivemos apenas um problema, pois ele não permite utilizar a função analogWrite com pinos digitais. Então colocamos o pino A0 no lugar.

Código desenvolvido em Blocos:

Código-fonte por blocos block.ino

Código-fonte Gerado:

int cont;
 
void setup() {
    Serial.begin(9600);
    pinMode(4, INPUT);
    pinMode(A0, OUTPUT);
 
    cont = 0;
 
}
 
void loop() {
    if (digitalRead(4) == true) {
        Serial.println("Ligado");
        analogWrite(A0,i);
        if (cont < 255) {
            cont = cont + 1;
        }
    } else {
        Serial.println("Desligado");
        analogWrite(A0,cont);
        if (cont > 0) {
            cont= cont - 1;        }
    }
    delay(50);
}

Programar por Blocos no mBlock

Entretanto no mBlock, não conseguimos acessar a função loop e tivemos que programar tudo na função setup.

Código desenvolvido em Blocos:

Código-fonte por blocos mBlock

Código-fonte Gerado:

#include <Arduino.h>
#include <Wire.h>
#include <SoftwareSerial.h>
	 
float cont = 0;
 
void _delay(float seconds) {
    long endTime = millis() + seconds * 1000;
    while(millis() < endTime) _loop();
}
 
void setup() {
    pinMode(4,INPUT);
    Serial.begin(115200);
    pinMode(3,OUTPUT);
    while(1) {
        if(digitalRead(4) == 1.000000){
            Serial.println("Ligando");
            analogWrite(3,cont);
            if(cont < 255){
                cont += 1;
    
            }
	 
        }else{
            Serial.println("Desligando");
            analogWrite(3,cont);
            if(cont > 0){
            cont += -1;

            }

        }
 
    } 
    _delay(0.05);
 
    _loop();
}
	 
void _loop() {
}
 
void loop() {
    _loop();
}

Programar por Blocos no MAKER

Por fim no MAKER, não conseguimos estar utilizando a Serial.

Código desenvolvido em Blocos:

Código-fonte por blocos MAKER

Código-fonte Gerado:

float cont;
 
#include <Arduino.h>
 
void setup() {
    pinMode(4, INPUT);
    pinMode(3, OUTPUT);
    cont = 0;
}

void loop() {
    if (digitalRead(4) == true) {
        analogWrite(3, i);
        if (cont < 255) {
        cont += 1;
        }
    }
    else{
        analogWrite(3, cont);
        if (cont > 0) {
            cont -= 1;
        }
    }
    delay(0.05*1000);
}

Agradecemos sua Presença


Por fim, espero que tenham gostado e aprendido. Então compartilhe com seus colegas e deixe um comentário de qual projeto deveria ser o próximo aqui no Blog da WJ Componentes!!
Enfim estarei deixando o arquivo do Arduíno, link dos posts anteriores referentes ao projeto e software e sites utilizados.
Fique à vontade para tirar suas dúvidas nos comentários.

Software e Sites Utilizados

Post Relacionados

Posts mais Recentes

Julio Cesar Bonow Manoel

Julio Cesar Bonow Manoel

Cursando Engenharia da Computação pelo Centro Universitário Facens e atua no desenvolvimento de projetos na WJ Componentes. Participante da equipe de robótica Omegabotz.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *