Advertisement
pleasedontcode

**Distance Measurement** rev_01

Apr 30th, 2025
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /********* Pleasedontcode.com **********
  2.  
  3.     Pleasedontcode thanks you for automatic code generation! Enjoy your code!
  4.  
  5.     - Terms and Conditions:
  6.     You have a non-exclusive, revocable, worldwide, royalty-free license
  7.     for personal and commercial use. Attribution is optional; modifications
  8.     are allowed, but you're responsible for code maintenance. We're not
  9.     liable for any loss or damage. For full terms,
  10.     please visit pleasedontcode.com/termsandconditions.
  11.  
  12.     - Project: **Distance Measurement**
  13.     - Source Code NOT compiled for: Arduino Uno
  14.     - Source Code created on: 2025-04-30 20:32:33
  15.  
  16. ********* Pleasedontcode.com **********/
  17.  
  18. /****** SYSTEM REQUIREMENTS *****/
  19. /****** SYSTEM REQUIREMENT 1 *****/
  20.     /* O sistema deve inicializar um display */
  21.     /* LiquidCrystal para apresentar mensagens de status */
  22.     /* do sistema, incluindo notificações de erro e */
  23.     /* feedback operacional, garantindo ao usuário a */
  24.     /* conscientização sobre o desempenho do dispositivo. */
  25. /****** END SYSTEM REQUIREMENTS *****/
  26.  
  27. /* START CODE */
  28.  
  29. /****** DEFINITION OF LIBRARIES *****/
  30. #include <LiquidCrystal.h>  //https://github.com/arduino-libraries/LiquidCrystal
  31.  
  32. /****** FUNCTION PROTOTYPES *****/
  33. void setup(void);
  34. void loop(void);
  35.  
  36. /****** DEFINITION OF LIBRARIES CLASS INSTANCES*****/
  37. #define TRIGGER_PIN 2
  38. #define ECHO_PIN 3
  39. #define RED_LED_PIN 4
  40. #define YELLOW_LED_PIN 5
  41. #define GREEN_LED_PIN 6
  42. #define BUZZER_PIN 7
  43.  
  44. // Inicializando o LCD
  45. LiquidCrystal lcd(8, 9, 10, 11, 12, 13);
  46.  
  47. // Variáveis globais
  48. long duration; // Variável para armazenar o tempo de retorno do sinal do sensor
  49. int distance; // Variável para armazenar a distância em cm
  50. int ledState = LOW; // Variável para controlar o estado do LED indicativo
  51. unsigned long previousMillis = 0; // Variável para armazenar o tempo anterior
  52. const long interval = 1000; // Intervalo de tempo para atualização do LCD e LEDs
  53.  
  54. void setup(void)
  55. {
  56.     // put your setup code here, to run once:
  57.  
  58.   // Inicializando os pinos como entrada ou saída
  59.   pinMode(TRIGGER_PIN, OUTPUT);
  60.   pinMode(ECHO_PIN, INPUT);
  61.   pinMode(RED_LED_PIN, OUTPUT); // Changed from SAÍDA to OUTPUT
  62.   pinMode(YELLOW_LED_PIN, OUTPUT); // Changed from SAÍDA to OUTPUT
  63.   pinMode(GREEN_LED_PIN, OUTPUT); // Changed from SAÍDA to OUTPUT
  64.   pinMode(BUZZER_PIN, OUTPUT); // Changed from SAÍDA to OUTPUT
  65.  
  66.   // Inicializando o LCD com 2 colunas e 16 linhas
  67.   lcd.begin(16, 2);
  68.  
  69.   // Imprimindo as mensagens iniciais no LCD
  70.   lcd.print("Distancia: ");
  71.   lcd.setCursor(0, 1);
  72.   lcd.print("Barra: ");
  73. }
  74.  
  75. void loop(void)
  76. {
  77.     // put your main code here, to run repeatedly:
  78.  
  79.   // Gerando o pulso de 10 microssegundos no pino do trigger
  80.   digitalWrite(TRIGGER_PIN, LOW);
  81.   delayMicroseconds(2); // Changed from atrasoMicrossegundos to delayMicroseconds
  82.   digitalWrite(TRIGGER_PIN, HIGH); // Changed from ALTO to HIGH
  83.   delayMicroseconds(10); // Changed from atrasoMicrossegundos to delayMicroseconds
  84.   digitalWrite(TRIGGER_PIN, LOW);
  85.  
  86.   // Medindo o tempo de retorno do sinal do sensor
  87.   duration = pulseIn(ECHO_PIN, HIGH); // Changed from length to duration
  88.  
  89.   //Calculando a distância em cm
  90.   distance = duration * 0.034 / 2;
  91.  
  92.   // Atualizando o LCD com a distância em cm
  93.   lcd.setCursor(10, 0);
  94.   lcd.print(distance); // Changed from distância to distance
  95.  
  96.   // Atualizando a barra de caracteres no LCD
  97.   lcd.setCursor(6, 1);
  98.   for (int i = 0; i < distance / 2; i++) {
  99.     lcd.print("*");
  100.   }
  101.   lcd.print(" ");
  102.  
  103.   // Atualizando os LEDs indicativos de acordo com a distância
  104.   if (distance <= 10) {
  105.     digitalWrite(RED_LED_PIN, HIGH);
  106.     digitalWrite(YELLOW_LED_PIN, LOW); // Changed from BAIXO to LOW
  107.     digitalWrite(GREEN_LED_PIN, LOW);
  108.     lcd.setCursor(0, 1);
  109.     lcd.print("Erro: Muito perto"); // Display error message
  110.   }
  111.   else if (distance > 10 && distance <= 20) { // Changed from caso contrário, se to else if
  112.     digitalWrite(RED_LED_PIN, LOW);
  113.     digitalWrite(YELLOW_LED_PIN, HIGH); // Changed from ALTO to HIGH
  114.     digitalWrite(GREEN_LED_PIN, LOW);
  115.     lcd.setCursor(0, 1);
  116.     lcd.print("Atenção: Distância média"); // Display warning message
  117.   }
  118.   else if (distance > 20 && distance <= 30) { // Changed from caso contrário, se to else if
  119.     digitalWrite(RED_LED_PIN, LOW);
  120.     digitalWrite(YELLOW_LED_PIN, LOW);
  121.     digitalWrite(GREEN_LED_PIN, HIGH);
  122.     lcd.setCursor(0, 1);
  123.     lcd.print("Tudo certo!"); // Display operational feedback
  124.   }
  125.   else {
  126.     digitalWrite(RED_LED_PIN, LOW);
  127.     digitalWrite(YELLOW_LED_PIN, LOW);
  128.     digitalWrite(GREEN_LED_PIN, LOW);
  129.     lcd.setCursor(0, 1);
  130.     lcd.print("Erro: Distância excessiva"); // Display error message
  131.   }
  132.  
  133.   // Atualizando o estado do LED indicativo a cada segundo
  134.   unsigned long currentMillis = millis();
  135.   if (currentMillis - previousMillis >= interval) {
  136.     previousMillis = currentMillis;
  137.     if (ledState == LOW) {
  138.       ledState = HIGH;
  139.     } else {
  140.       ledState = LOW;
  141.     }
  142.     digitalWrite(BUZZER_PIN, ledState);
  143.   }
  144. }
  145.  
  146. /* END CODE */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement