CURITIBA
2021
UNIVERSIDADE TECNOLÓGICA FEDERAL DO
PARANÁ CAMPUS CURITIBA/CENTRO
CURITIBA
2021
2
SUMÁRIO
INTRODUÇÃO 4
MATERIAIS 4
DESENVOLVIMENTO 7
Fluxograma 7
Desenvolvimento do código 10
Comunicação 10
Sensores 10
Teclado 10
Display LCD 11
Montagem do circuito e simulação 11
RESULTADOS E DISCUSSÕES 11
CONCLUSÕES 12
REFERÊNCIAS 13
ANEXOS 14
Anexo A - Código Arduino 1 15
Anexo B - Código Arduino 2 17
Anexo C - Fluxograma 23
Anexo D - Simulação 24
3
1.INTRODUÇÃO
2.MATERIAIS
4
Placa Arduino UNO
5
Leds e Buzzer
Teclado 4x4
6
3.DESENVOLVIMENTO
3.1.Fluxograma
7
Para melhor entendimento do fluxograma, vale lembrar que cada bloco tem
um formato correspondente ao tipo de ação que ele representa, e as setas indicam
a direção das ações, por exemplo:
Blocos de ação:
8
Esse bloco é responsável por representar as ações realizadas pelo sistema,
por exemplo o acionamento de um LED ou a escolha de alguma função.
Bloco que representa todo e qualquer dado que será apresentado para o
usuário de forma visual por meio do Display LCD. Nesse exemplo mostrando a
opção de distância que o usuário escolheu utilizar.
9
3.2.Desenvolvimento do código
Como vamos utilizar a placa arduino, podemos trabalhar com uma linguagem
de programação de alto nível, já que a IDE Arduino utiliza a linguagem C++ com
pequenas alterações.
3.2.1.Comunicação
3.2.2.Sensores
Código responsável por realizar a leitura dos dados fornecidos pelos sensores
de luminosidade e distância, converte para as unidades desejadas e salva nas
variáveis que armazenam essas informações.
3.2.3.Teclado
Por meio do teclado o usuário escolhe qual faixa de distâncias será utilizada
para acionamento de cada estágio, dessa forma o código deve ser responsável por
ler o valor inserido pelo usuário e armazenar em uma variável.
10
3.2.4.Display LCD
4.RESULTADOS E DISCUSSÕES
11
este ser o primeiro contato, não ter tantos trabalhos desenvolvidos nela e também
por ser um ambiente totalmente virtual, no qual, não raro, à bugs que
desconhecemos e portanto, não temos controle sobre.
5.CONCLUSÕES
12
6.REFERÊNCIAS
13
ANEXOS
14
Anexo A - Código Arduino 1
#define Pin_Ultra 7
#define buttonRe 12
void setup()
{
Serial.begin(9600);
pinMode(buttonRe, INPUT);
cm = 0;
Serial.println(cm);
}
void loop()
{
if (re!= reNovo)
{
re = reNovo;
}
lerUltrassom();
//--------------------------------------
int lerUltrassom()
{
int cmNovo = (re*0.01723 * readUltrasonicDistance(Pin_Ultra, Pin_Ultra));
15
// Sets the trigger pin to HIGH state for 10 microseconds
digitalWrite(triggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);
pinMode(echoPin, INPUT);
// Reads the echo pin, and returns the sound wave travel time in microseconds
return pulseIn(echoPin, HIGH);
}
16
Anexo B - Código Arduino 2
#include <LiquidCrystal.h>
#include <Keypad.h>
//----------------PINOS----------------
//----------------GLOBAIS----------------
//----------------LCD----------------
//----------------TECLADO----------------
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {A5, A4, 8, 9}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {A3, A2, A1, A0}; //connect to the column pinouts of the keypad
//----------------SETUP----------------
void setup()
{
lcd.begin(16, 2);
Serial.begin(9600);
TelaInicial();
pinMode(LedVermelho, OUTPUT);
17
pinMode(LedAmarelo, OUTPUT);
pinMode(LedVerde, OUTPUT);
pinMode(Buzzer, OUTPUT);
digitalWrite(LedVermelho, LOW);
digitalWrite(LedAmarelo, LOW);
digitalWrite(LedVerde, LOW);
digitalWrite(Buzzer, HIGH);
delay(200);
digitalWrite(Buzzer, LOW);
//cm = 1;
}
while (Serial.available())
{
palavra = Serial.readStringUntil('\n');
Serial.print("Leitura: ");
Serial.println(palavra);
cm = palavra.toInt();
}
//palavra[palavra.length()-1]= NULL;
//Serial.println(palavra);
if(cm == 0)
{
TelaConfig();
char key = Click();
switch (key)
{
case '1':
max = 100;
break;
case '2':
max = 200;
break;
18
case '3':
max = 300;
break;
case 'A':
//cancel
break;
}
}
else
{
TelaInicial();
lcd.setCursor(11, 0);
if (palavra.toInt()<100)
lcd.print(0);
lcd.print(cm);
digitalWrite(LedVermelho, HIGH);
digitalWrite(LedAmarelo, LOW);
digitalWrite(LedVerde, LOW);
digitalWrite(Buzzer, HIGH);
digitalWrite(LedVermelho, HIGH);
digitalWrite(LedAmarelo, LOW);
digitalWrite(LedVerde, LOW);
digitalWrite(Buzzer, HIGH);
delay(100);
digitalWrite(Buzzer, LOW);
delay(100);
}
19
lcd.setCursor(6, 1);
lcd.print("))) ");
digitalWrite(LedVermelho, LOW);
digitalWrite(LedAmarelo, HIGH);
digitalWrite(LedVerde, LOW);
digitalWrite(Buzzer, HIGH);
delay(300);
digitalWrite(Buzzer, LOW);
delay(300);
}
digitalWrite(LedVermelho, LOW);
digitalWrite(LedAmarelo, LOW);
digitalWrite(LedVerde, HIGH);
digitalWrite(Buzzer, HIGH);
delay(500);
digitalWrite(Buzzer, LOW);
delay(500);
}
else
{
lcd.setCursor(6, 1);
lcd.print("XXXX");
digitalWrite(LedVermelho, LOW);
digitalWrite(LedAmarelo, LOW);
digitalWrite(LedVerde, LOW);
delay(500);
digitalWrite(Buzzer, HIGH);
digitalWrite(LedVermelho, HIGH);
digitalWrite(LedAmarelo, HIGH);
digitalWrite(LedVerde, HIGH);
delay(500);
digitalWrite(Buzzer, LOW);
delay(500);
}
}
}
20
//-------- -------- -------- --------
char Click ()
{
Serial.print("Entrou no clique");
char key = keypad.waitForKey();
if (key){
Serial.print("tecla pressionada: ");
Serial.println(key);
return key;
}
}
void TelaInicial(){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Distincia: cm");
}
void TelaConfig(){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("1:100cm 2:200cm");
lcd.setCursor(0, 1);
lcd.print("3:300cm D:CANCEL");
}
void setup()
{
pinMode(pinoLed,OUTPUT);
}
void loop()
{
valorLuz = analogRead(pinoSensorLuz);
if(valorLuz<750)
{
digitalWrite(pinoLed,HIGH);
}
else
21
{
digitalWrite(pinoLed,LOW);
}
delay(10);
}*/
22
Anexo C - Fluxograma
23
Anexo D - Simulação
24