nishitdb
Published © GPL3+

digicycle

In this project, we are going to make a speedometer odometer and indicator for your cycle

BeginnerFull instructions provided345
digicycle

Things used in this project

Hardware components

Arduino Mega 2560
Arduino Mega 2560
×1
RGB LCD Shield Kit, 16x2 Character Display
RGB LCD Shield Kit, 16x2 Character Display
×1
High Brightness LED, White
High Brightness LED, White
×2
ir sensor module
×1
paint white
×1

Software apps and online services

Arduino IDE
Arduino IDE

Hand tools and fabrication machines

Tape, Double Sided
Tape, Double Sided
Tape, Electrical Insulation
Tape, Electrical Insulation
Hot glue gun (generic)
Hot glue gun (generic)

Story

Read more

Schematics

code with circuit diagram

there is a code with the circuit diagram. I have uploaded the code separately also

Code

code for project

Arduino
copy this code and upload it to your Arduino
#include <LiquidCrystal.h>
double distance;
double Circumference = 1.8;
float Speed;
int roundedDistance;

float startTime = 0;

float endTime = 0;

float Time = 0;

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
int lcd_key     = 0;
int adc_key_in  = 0;

#define btnRIGHT  0
#define btnUP     1
#define btnDOWN   2
#define btnLEFT   3
#define btnSELECT 4
#define btnNONE   5

int read_LCD_buttons() {
  adc_key_in = analogRead(0);
  if (adc_key_in > 1000) return btnNONE;
  if (adc_key_in < 26)   return btnRIGHT;
  if (adc_key_in < 226)  return btnUP;
  if (adc_key_in < 426)  return btnDOWN;
  if (adc_key_in < 600)  return btnLEFT;
  if (adc_key_in < 920)  return btnSELECT;
  return btnNONE;
}

void setup() {
  Serial.begin(9600);
  pinMode(23, OUTPUT);
  pinMode(24, OUTPUT);
  pinMode(22, INPUT);
  digitalWrite(23, LOW);
  digitalWrite(24, HIGH);
  pinMode(26, OUTPUT);
pinMode(28, OUTPUT);

  lcd.begin(16,2);
  lcd.print("Distance: ");
  lcd.setCursor(0,1);
  lcd.print("Speed: ");

}

void loop() {

  int x;
  int y;
  
  x = digitalRead(22);
 // Serial.print(x);
  delay(1);
  y = digitalRead(22);

  if (x == 1 && y == 0) {
    distance += Circumference;  //m
    roundedDistance = round(distance);
    lcd.setCursor(10,0);
    lcd.print(roundedDistance);
       lcd.print("m");
   
    endTime = millis();
    Time = (endTime - startTime)/3600000;  
    Speed = (0.0018)/Time; //km/h
    Serial.print(Time);

    lcd.setCursor(7,1);
    lcd.print(Speed);
    lcd.print("km/h");
    startTime = millis();
     
    
  } 
  lcd_key = read_LCD_buttons();
  switch (lcd_key) {
    case btnRIGHT: {
       digitalWrite(28, HIGH);
       delay(500);
       digitalWrite(28, LOW);
       delay(500);
       digitalWrite(28, HIGH);
       delay(500);
       digitalWrite(28, LOW);
       delay(500);
       digitalWrite(28, HIGH);
       delay(500);
       digitalWrite(28, LOW);
       delay(500);
       digitalWrite(28, HIGH);
       delay(500);
       digitalWrite(28, LOW);
       delay(500);
       digitalWrite(28, HIGH);
       delay(500);
       digitalWrite(28, LOW);
       delay(500);
       digitalWrite(28, HIGH);
       delay(500);
       digitalWrite(28, LOW);
       delay(500);
       digitalWrite(28, HIGH);
       delay(500);
       digitalWrite(28, LOW);
       delay(500);
       digitalWrite(28, HIGH);
       delay(500);
       digitalWrite(28, LOW);
       delay(500);
       digitalWrite(28, HIGH);
       delay(500);
       digitalWrite(28, LOW);
       delay(500);
       digitalWrite(28, HIGH);
       delay(500);
       digitalWrite(28, LOW);
       delay(500);   
      break;
    }
    case btnLEFT: {
       digitalWrite(26, HIGH);
       delay(500);
       digitalWrite(26, LOW);
       delay(500);
       digitalWrite(26, HIGH);
       delay(500);
       digitalWrite(26, LOW);
       delay(500);
       digitalWrite(26, HIGH);
       delay(500);
       digitalWrite(26, LOW);
       delay(500);
       digitalWrite(26, HIGH);
       delay(500);
       digitalWrite(26, LOW);
       delay(500);
       digitalWrite(26, HIGH);
       delay(500);
       digitalWrite(26, LOW);
       delay(500);
       digitalWrite(26, HIGH);
       delay(500);
       digitalWrite(26, LOW);
       delay(500);
       digitalWrite(26, HIGH);
       delay(500);
       digitalWrite(26, LOW);
       delay(500);
       digitalWrite(26, HIGH);
       delay(500);
       digitalWrite(26, LOW);
       delay(500);
       digitalWrite(26, HIGH);
       delay(500);
       digitalWrite(26, LOW);
       delay(500);
       digitalWrite(26, HIGH);
       delay(500);
       digitalWrite(26, LOW);
       delay(500);
      break;
    }
    analogRead(0);

  }
  }

Credits

nishitdb
1 project • 3 followers
Contact

Comments

Please log in or sign up to comment.