Tutorial: Utilizando Interrupção e função Random() do Arduino

Adquira estes componentes na Loja do Lab de Garagem

Este tutorial mostra como utilizar a função random() para gerar números aleatórios e mostra como utilizar a interrupção externa por meio de um botão.

A interrupção externa pode ser utilizada nos pinos digitais 2 e 3 do Arduino UNO e nos pinos digitais 18, 19, 20 e 21 do Arduino MEGA.

Ao apertar um botão como visto no vídeo, o Arduino entra na função da interrupção. Ao entrar na função da interrupção, o LED acende e mostra no LCD 16x2.

Para fazer a ligação abaixo, será necessário os seguintes componentes:

Depois de feito as ligações acima, abra a IDE do Arduino e passe a seguinte programação:


#include <LiquidCrystal.h> // we need this library for the LCD commands
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
float noisy = 0;
void setup()
{
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
lcd.begin(16, 2); // need to specify how many columns and rows are in the LCD unit
lcd.setCursor(0,0);
lcd.println(" Lab de Garagem ");
lcd.setCursor(0,1);
delay(4000);
lcd.clear();
randomSeed(analogRead(0)); // reseed the random number generator with some noise
attachInterrupt(0, interruptone, RISING); // so when interrupt zero (digital pin 2) changes state, it will trigger the interrupt and go to function 'panicone'
attachInterrupt(1, interrupttwo, RISING); // so when interrupt one (digital pin 3) changes state, it will trigger the interrupt and go to function 'panictwo'
}
void loop()
{
noisy=random(1000);
lcd.setCursor(0,0);
lcd.write("Random Numbers!");
lcd.setCursor(0,1);
lcd.print("Number: ");
lcd.print(noisy,0);
delay(1000);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
}
void interruptone()
{
lcd.clear();
lcd.println("Interrupt one ");
digitalWrite(4,HIGH);

}
void interrupttwo()
{
lcd.clear();
lcd.println("Interrupt two ");
digitalWrite(5,HIGH);

}

As interrupções são declaradas como:

  • attachInterrupt(0, interruptone, RISING); -  Quando o Arduino detectar que a entrada do pino 2 foi pra HIGH, a função interruptone será chamada;
  • attachInterrupt(1, interrupttwo, RISING); -  Quando o Arduino detectar que a entrada do pino 3 foi pra HIGH, a função interrupttwo será chamada.

Depois de copiar e colar o código acima na IDE do Arduino, conecte seu Arduino na porta USB do seu PC e selecione a versão do seu Arduino (UNO, Duemilanove, etc) em "Tools/Board" e selecione a porta em que seu Arduino está conectado (COMx, ttyUSBx, ttyACMx, etc). Clique em UPLOAD.

Ao terminar de fazer o UPLOAD. O Arduino funcionará como o vídeo.

E é isso! Esperamos que tenha gostado! Em caso de dúvidas, poste aqui neste blog! Para sugestões de tutoriais, clique aqui! Para ver outros tutoriais e projetos desenvolvidos pela equipe LdG e por outros garagistas, clique aqui e aqui! Até a próxima!

Referências:

http://tronixstuff.wordpress.com/2010/04/20/getting-started-with-ar...

http://arduino.cc/en/Reference/AttachInterrupt

http://labdegaragem.com/profiles/blogs/tutorial-lcd-com-arduino

http://arduino.cc/en/Reference/Random

Exibições: 17080

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de Eloir Olszeweski em 11 junho 2013 às 11:44

Olá

To com um probleminha aqui, é o seguinte esse programa não ta rodando legal no meu arduino, o lcd fica todo embaralhado, e correndo não da para distinguir nada, oque pode ser alguém já teve esse problema, sera que pode ser o meu display?

Comentário de jorge rocha em 2 outubro 2012 às 0:13

Olá!

Alguém pode ajudar a usar estas funções de modo a fazer com 24 LEDs e um só botão interrupt, que ligue um LED aleatório quando se apertar o botão e apertando novamente liga outro LED aleatório mas sem apagar o que já estava ligado?

Obrigado,

Jorge

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2019   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço