Projeto Piloto - Robótica Educacional com Software Livre - Aula 4


Projeto Piloto
Introdução à Robótica Educacional com Software e Hardware Livres no Sábado na Escola

A Robótica Educacional corresponde a uma aplicação da tecnologia na educação em que o ambiente de aprendizagem valoriza o planejamento, pesquisa, interesse, motivação e cooperação entre os alunos, através de uma rica experiência interdisciplinar, uma vez que envolve diferentes áreas de conhecimento e pessoas na resolução de problemas. A Robótica Educacional Livre, parte para soluções livres em substituição aos produtos comerciais, o que propomos e o uso de Hardware e Softwares Livres como base para a programação. Utilizaremos motores, componentes eletrônicos de baixo custo e algumas sucatas de equipamentos, para construção de KITS de robótica de acordo com a realidade de cada escola.

Cidade: Volta Redonda
Estado: Rio de Janeiro
Local: Escola Municipal Paulo VI;
Horário: 08:00 às 11:30;



Nossa aula de hoje foi bem produtiva:

1 - Fizemos a montagem de um simulador de "Sinal de Trânsito ou Semáforo", onde a ideia é que possamos ter 3 LEDs (Vermelho - Amarelo - Verde) e os mesmos deverão acender e apagar, simulando o funcionamento do Semáforo.

Um exemplo do esquema de ligação do Semáforo no Arduino

Código de programação para o Semáforo na IDE do Arduino


Código fonte em formato de texto para copiar e colar na IDE do Arduino


// Inicio do programa Semaforo Simples
// Aqui estou dizendo para o computador os pinos
// que vou usar e dando um nome a cada um deles

int verdecarro = 13;
int amarelocarro = 11;
int vermelhocarro = 9;

void setup() {                
  
// Aqui eu digo que os pinos escolhidos são de saída
pinMode(verdecarroOUTPUT);
pinMode(amarelocarroOUTPUT);
pinMode(vermelhocarroOUTPUT);

}

void loop() {


digitalWrite(verdecarro, HIGH);      // aqui eu acendo o pino 13 luz verde
delay(5000);                               // Aqui diz esperar 1 segundo (5000=5s)
digitalWrite(verdecarro, LOW);       // aqui eu apago o pino 13


digitalWrite(amarelocarro, HIGH);   // aqui eu acendo o pino 11
delay(3000);                               // Aqui diz esperar 1 segundo (3000=3s)
digitalWrite(amarelocarro, LOW);   // aqui eu apago o pino 11

digitalWrite(vermelhocarro, HIGH);  // aqui eu acendo o pino 9
delay(5000);                                // Aqui diz esperar 1 segundo (5000=5s) 
digitalWrite(vermelhocarro, LOW);   // aqui eu apago o pino 9 

}
// Fim do programa

Obs.: Vale ressaltar que a ideia principal do "SEMÁFORO" era fazer os alunos perceberem que eles podiam controlar os 3 LEDs de forma individual, desta forma após esse primeiro exemplo, eles foram desafiados a mudar a programação para fazer com que os LEDs acendessem ou apagassem de outra forma, sumulando alguns tipos de sinas que são encontrados em nossas ruas.

2 - Partimos para o controle de 8 LEDs, onde além da montagem dos componentes na Protoboard (LEDs, Resistor e Fios) os alunos deveriam escrever um código que nos desse como resultado o efeito do "Scanner" do K.I.T.T., carro famoso do Seriado Super Máquina (Anos 80).


Veja no vídeo abaixo o efeito que os alunos deveriam conseguir com o código.

Os 2 vídeos abaixo, são para recordação dos que já conheciam o seriado e para aqueles que nunca ouviram falar dessa tal Super Máquina, terem uma ideia do que ela era.


Um exemplo do esquema de ligação dos oito (8) LEDs ao Arduino

Código de programação para oito (8) LEDs na IDE do Arduino

Código fonte e m formato de texto para copiar e colar na IDE do Arduino


// Inicio do programa Super Maquina
// Aqui estou dizendo para o computador os pinos
// que vou usar e dando um nome a cada um deles

int pin1 = 13;
int pin2 = 12;
int pin3 = 11;
int pin4 = 10;
int pin5 = 9;
int pin6 = 8;
int pin7 = 7;
int pin8 = 6;

void setup() {                
  
// Aqui eu digo que os pinos escolhidos são de saída
pinMode(pin1, OUTPUT);
pinMode(pin2, OUTPUT);
pinMode(pin3, OUTPUT);
pinMode(pin4, OUTPUT); 
pinMode(pin5, OUTPUT);
pinMode(pin6, OUTPUT);
pinMode(pin7, OUTPUT);
pinMode(pin8, OUTPUT);
}

void loop() {
digitalWrite(pin1, HIGH);
delay(134);
digitalWrite(pin1, LOW);
digitalWrite(pin2, HIGH);
delay(134);
digitalWrite(pin2, LOW);
digitalWrite(pin3, HIGH);
delay(134);
digitalWrite(pin3, LOW);
digitalWrite(pin4, HIGH);
delay(134);
digitalWrite(pin4, LOW);
digitalWrite(pin5, HIGH);
delay(134);
digitalWrite(pin5, LOW);
digitalWrite(pin6, HIGH);
delay(134);
digitalWrite(pin6, LOW);
digitalWrite(pin7, HIGH);
delay(134);
digitalWrite(pin7, LOW);
digitalWrite(pin8, HIGH);
delay(134);
digitalWrite(pin8, LOW);
digitalWrite(pin7, HIGH);
delay(134);
digitalWrite(pin7, LOW);
digitalWrite(pin6, HIGH);
delay(134);
digitalWrite(pin6, LOW);
digitalWrite(pin5, HIGH);
delay(134);
digitalWrite(pin5, LOW);
digitalWrite(pin4, HIGH);
delay(134);
digitalWrite(pin4, LOW);
digitalWrite(pin3, HIGH);
delay(134);
digitalWrite(pin3, LOW);
digitalWrite(pin2, HIGH);
delay(134);
digitalWrite(pin2, LOW);
digitalWrite(pin1, HIGH);
digitalWrite(pin1, LOW);
}
// Fim do programa


Parabéns a todos os 5 grupos e seus respectivos orientadores, pois todos conseguirão escrever o código e executar a montagem no Arduino. 

Ressaltamos ainda que por se tratar de um trabalho inicial, utilizamos uma codificação simples partindo do raciocínio linear dos alunos, em que era só acender um LED, esperar um tempo, apagar o LED que estava aceso e acender o próximo, repetindo isso até terminar o processo, depois seria somente voltar com o código de traz para frente.

Agora para os interessados e/ou mais experientes, podem usar o código abaixo, que vai produzir o mesmo efeito, porém ele usa "if" e "else".

boolean t = true;
int i = 13;

void setup()
{
  pinMode(13, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(6, OUTPUT);

}
void loop()
{
  digitalWrite(i,HIGH);
  delay(134);
  digitalWrite(i,LOW);
  if(t == true)
  {
    i = i - 1;
  }
  else
  {
   i = i + 1;
}
if(i < 6)
{
i = 7;
t = false;
}
if(i > 13)
{
i = 12;
t = true;
}

3 - Finalizando, fizemos a explicação e a montagem na Protoboard do projeto "Controlando o LED com Potenciômetro",  que será abordado com maiores detalhes em nossa próxima aula, onde falaremos sobre o código e executaremos essa aplicação com os alunos.

Um exemplo do esquema de ligação do LED e Potenciômetro ao Arduino

Código de programação LED e o Potenciômetro na IDE do Arduino

Código fonte e m formato de texto para copiar e colar na IDE do Arduino

// Inicio do programa Controle de Led com Potenciometro 
// Aqui estou dizendo para o computador os pinos
// que vou usar e dando um nome a cada um deles
// e informando as possiveis variaveis que usarei

int led = 9;        
int potenciometro = 2;
int tempo = 0;

void setup() {

// Aqui eu digo que o pino escolhido e de saida
pinMode(led, OUTPUT); 

}

void loop() {

// Leitura do valor do potenciômetro que é usada como delay
tempo = analogRead(potenciometro);

digitalWrite(led, HIGH); // aqui eu acendo o pino
delay(tempo); // temporizo a piscada com potenciometro

digitalWrite(led, LOW); // aqui eu apago o pino
delay(tempo);





O desafio da semana foi para que os alunos juntassem carrinhos e outros brinquedos a pilha quebrados ou danificados e que os mesmos deveriam ser trazidos para a nossa aula, onde iriamos juntar essas doações ao nosso cantinho das peças recicláveis, pois poderiamos aproveitar Motores, Leds, fios e demais coisas destes brinquedos, que até então estavam sem utilidade.

Veja as fotos que tiramos em nossa 4ª aula do Projeto, onde contamos com a participação de 18 alunos(as) e 5 professoras

Assista abaixo, a vídeo que montamos para apoio e revisão do conteúdo que foi ministrado em nossa 4ª aula presencial

0 comentários:

O conteúdo deste blog/site pode e deve ser divulgado, conforme lei a 9.610/98 meus direitos estão assegurados, portanto eu permito a copia e reprodução gratuita, seja total ou parcial, não acarretando qualquer onûs financeiro aos interessados, porém, vedo o uso para fins lucrativos, toda reprodução para o público deve citar a fonte extraída, no caso o Técnico Linux - O Espaço do Software Livre e seja citada junto com um link para a postagem original, onde a referência deve estar numa fonte de tamanho igual ou maior a do texto, obviamente que os links citados não estão sujeitos ao mesmo termo. O conteúdo textual original desta página está disponível sob a licença GNU FDL 1.2.

Todas as marcas citadas pertencem aos seus respectivos proprietários. Os direitos autorais de todas as ilustrações pertencem aos respectivos autores, e elas são reproduzidas na intenção de atender ao disposto no art. 46 da Lei 9.610 - se ainda assim alguma delas infringe direito seu, entre em contato para que possamos removê-la imediatamente ou ainda lhe dar os devidos créditos.

Copyright © 2016 O Espaço do Software Livre