Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // http://labdegaragem.com/forum/topics/display-7-segmentos-2
- #include "SevSeg.h"
- SevSeg myDisplay; //Create an instance of the object.
- unsigned long timer; //Create global variables
- int deciSecond = 9999;
- //#include <LiquidCrystal.h>
- const int rs = 4, en = 5, d4 = 6, d5 = 7, d6 = 8, d7 = 9;
- //LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
- unsigned long Inicio = 0; // variavel interia positiva para guardar o inicio da medida
- unsigned long finish = 0; // variavel interia positiva para guardar o fim da medida
- float distance = 10; // variavel floatpoint para informar a distancia para medida
- // informar aqui a distancia entre os sensores em cm
- float interval; // variavel floatpoint para guardar o calculo entre inicio e fim
- float tempsec; // variavel floatpoint para guardar o tempo em segundos
- float mps; // variavel floatpoint para guardar a velocidade em metros por segundos
- float fps; // variavel floatpoint para guardar a velocidade em pés por segundo
- int done = 1; // Flag para informar que foi feita a medida
- int FlagInicio = 0; // Flag para informar que foi medido o tempo inicial
- int FlagFinal = 0; // Flag para informar que foi medido o tempo final
- int startPin = 2; // pino de entrada para sensor de inicio
- int finishPin = 3; // pino de entrada para sensor de fim
- int LedGreen = A0; // pino de saida para led verde
- int LedRed = A1; // pino de saida para led vermelho
- // -----------------------------------------------
- void setup()
- {
- // lcd.begin(16, 2);
- pinMode(startPin, INPUT_PULLUP);
- pinMode(finishPin, INPUT_PULLUP);
- pinMode(LedGreen, OUTPUT);
- pinMode(LedRed, OUTPUT);
- // lcd.setCursor(3, 0);
- // lcd.print("CRONOGRAFO"); // Msg inicial
- // lcd.setCursor(1, 1);
- // lcd.print("Kalel Santana"); // Msg inicial
- int displayType = COMMON_CATHODE; //Your display is either common cathode or common anode
- //This pinout is for OpenSegment PCB layout //Declare what pins are connected to the digits
- int digit1 = 10; //Pin 10 on my 4 digit display
- int digit2 = 11; //Pin 11 on my 4 digit display
- int digit3 = 12; //Pin 12 on my 4 digit display
- int digit4 = 13; //Pin 13 on my 4 digit display
- //Declare what pins are connected to the segments
- int segA = 3; //Pin 2 on my 4 digit display
- int segB = 4; //Pin 3 on my 4 digit display
- int segC = 5; //Pin 4 on my 4 digit display
- int segD = 6; //Pin 5 on my 4 digit display
- int segE = 7; //Pin 6 on my 4 digit display
- int segF = 2; //Pin 7 on my 4 digit display
- int segG = 8; //Pin 8 on my 4 digit display
- int segDP = 9; //Pin 9 on my 4 digit display
- int numberOfDigits = 4; //Do you have a 1, 2 or 4 digit display?
- myDisplay.Begin(displayType, numberOfDigits, digit1, digit2, digit3, digit4, segA, segB, segC, segD, segE, segF, segG, segDP);
- myDisplay.SetBrightness(100); //Set the display to 100% brightness level
- }
- // -----------------------------------------------
- void loop()
- {
- while (digitalRead(startPin) == LOW) // Faça se pino startPin esta obstruido
- {
- if (FlagInicio == 0) // Faça se ainda não tem medida inicial
- {
- Inicio = millis(); // Salva medida inicial em miliseg
- FlagInicio = 1; // informa que já tem medida inicial
- }
- }
- while (digitalRead(finishPin) == LOW) // Faça se pino finishPin esta obstruido
- {
- if (FlagInicio == 1) // Faça se tem medida inicial
- {
- if (FlagFinal == 0) // Faça se ainda não tem medida final
- {
- finish = millis(); // Salva medida final em miliseg
- done = 0; // informa que tudo foi medido
- FlagFinal = 1; // informa que já tem medida final
- }
- }
- }
- while (!done) // faça se tudo foi medido
- {
- interval = float(finish - Inicio); // calcula a diferença entre o inicio e o final em miliseg
- tempsec = (interval / 1000); //Converte o tempo para segundos
- mps = (distance / tempsec) / 100; // velocidade em metros por segundos
- fps = (mps) * 3.28; // velocidade em pés por segundos
- /* lcd.clear();
- lcd.setCursor(2, 0);
- lcd.print("Velocidades:");
- lcd.setCursor(0, 1);
- lcd.print(fps, 2);
- lcd.setCursor(4, 1);
- lcd.print("FPS");
- lcd.setCursor(8, 1);
- lcd.print(mps, 2);
- lcd.setCursor(12, 1);
- lcd.print("M/S");
- */
- if (fps > 280)
- {
- digitalWrite(LedRed, HIGH);
- }
- else
- {
- digitalWrite(LedGreen, HIGH);
- delay(1000);
- digitalWrite(LedGreen, LOW);
- digitalWrite(LedRed, LOW);
- }
- done = 1; // prepara para nova medida
- FlagInicio = 0; // prepara para nova medida
- FlagFinal = 0; // prepara para nova medida
- finish = 0; // prepara para nova medida
- Inicio = 0; // prepara para nova medida
- }
- char tempString[10]; //Used for sprintf //Example ways of displaying a decimal number
- sprintf(tempString, "%4d", fps); //Convert deciSecond into a string that is right adjusted
- myDisplay.DisplayString(tempString, 3); //(numberToDisplay, decimal point location)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement