digicycle
In this project, we are going to make a speedometer odometer and indicator for your cycle
Components and supplies
1
ir sensor module
2
High Brightness LED, White
1
paint white
1
RGB LCD Shield Kit, 16x2 Character Display
1
Arduino Mega 2560
Tools and machines
1
Hot glue gun (generic)
1
Tape, Electrical Insulation
1
Tape, Double Sided
Apps and platforms
1
Arduino IDE
Project description
Code
code for project
arduino
copy this code and upload it to your Arduino
1 2#include <LiquidCrystal.h> 3double distance; 4double Circumference = 1.8; 5float Speed; 6int roundedDistance; 7 8float startTime = 0; 9 10float endTime = 0; 11 12float Time = 0; 13 14LiquidCrystal lcd(8, 9, 4, 5, 6, 7); 15int lcd_key = 0; 16int adc_key_in = 0; 17 18#define btnRIGHT 0 19#define btnUP 1 20#define btnDOWN 2 21#define btnLEFT 3 22#define btnSELECT 4 23#define btnNONE 5 24 25int read_LCD_buttons() { 26 adc_key_in = analogRead(0); 27 if (adc_key_in > 1000) return btnNONE; 28 if (adc_key_in < 26) return btnRIGHT; 29 if (adc_key_in < 226) return btnUP; 30 if (adc_key_in < 426) return btnDOWN; 31 if (adc_key_in < 600) return btnLEFT; 32 if (adc_key_in < 920) return btnSELECT; 33 return btnNONE; 34} 35 36void setup() { 37 Serial.begin(9600); 38 pinMode(23, OUTPUT); 39 pinMode(24, OUTPUT); 40 pinMode(22, INPUT); 41 digitalWrite(23, LOW); 42 digitalWrite(24, HIGH); 43 pinMode(26, OUTPUT); 44pinMode(28, OUTPUT); 45 46 lcd.begin(16,2); 47 lcd.print("Distance: "); 48 lcd.setCursor(0,1); 49 lcd.print("Speed: "); 50 51} 52 53void loop() { 54 55 int x; 56 int y; 57 58 x = digitalRead(22); 59 // Serial.print(x); 60 delay(1); 61 y = digitalRead(22); 62 63 if (x == 1 && y == 0) { 64 distance += Circumference; //m 65 roundedDistance = round(distance); 66 lcd.setCursor(10,0); 67 lcd.print(roundedDistance); 68 lcd.print("m"); 69 70 endTime = millis(); 71 Time = (endTime - startTime)/3600000; 72 Speed = (0.0018)/Time; //km/h 73 Serial.print(Time); 74 75 lcd.setCursor(7,1); 76 lcd.print(Speed); 77 lcd.print("km/h"); 78 startTime = millis(); 79 80 81 } 82 lcd_key = read_LCD_buttons(); 83 switch (lcd_key) { 84 case btnRIGHT: { 85 digitalWrite(28, HIGH); 86 delay(500); 87 digitalWrite(28, LOW); 88 delay(500); 89 digitalWrite(28, HIGH); 90 delay(500); 91 digitalWrite(28, LOW); 92 delay(500); 93 digitalWrite(28, HIGH); 94 delay(500); 95 digitalWrite(28, LOW); 96 delay(500); 97 digitalWrite(28, HIGH); 98 delay(500); 99 digitalWrite(28, LOW); 100 delay(500); 101 digitalWrite(28, HIGH); 102 delay(500); 103 digitalWrite(28, LOW); 104 delay(500); 105 digitalWrite(28, HIGH); 106 delay(500); 107 digitalWrite(28, LOW); 108 delay(500); 109 digitalWrite(28, HIGH); 110 delay(500); 111 digitalWrite(28, LOW); 112 delay(500); 113 digitalWrite(28, HIGH); 114 delay(500); 115 digitalWrite(28, LOW); 116 delay(500); 117 digitalWrite(28, HIGH); 118 delay(500); 119 digitalWrite(28, LOW); 120 delay(500); 121 digitalWrite(28, HIGH); 122 delay(500); 123 digitalWrite(28, LOW); 124 delay(500); 125 break; 126 } 127 case btnLEFT: { 128 digitalWrite(26, HIGH); 129 delay(500); 130 digitalWrite(26, LOW); 131 delay(500); 132 digitalWrite(26, HIGH); 133 delay(500); 134 digitalWrite(26, LOW); 135 delay(500); 136 digitalWrite(26, HIGH); 137 delay(500); 138 digitalWrite(26, LOW); 139 delay(500); 140 digitalWrite(26, HIGH); 141 delay(500); 142 digitalWrite(26, LOW); 143 delay(500); 144 digitalWrite(26, HIGH); 145 delay(500); 146 digitalWrite(26, LOW); 147 delay(500); 148 digitalWrite(26, HIGH); 149 delay(500); 150 digitalWrite(26, LOW); 151 delay(500); 152 digitalWrite(26, HIGH); 153 delay(500); 154 digitalWrite(26, LOW); 155 delay(500); 156 digitalWrite(26, HIGH); 157 delay(500); 158 digitalWrite(26, LOW); 159 delay(500); 160 digitalWrite(26, HIGH); 161 delay(500); 162 digitalWrite(26, LOW); 163 delay(500); 164 digitalWrite(26, HIGH); 165 delay(500); 166 digitalWrite(26, LOW); 167 delay(500); 168 break; 169 } 170 analogRead(0); 171 172 } 173 } 174
code for project
arduino
copy this code and upload it to your Arduino
1 2#include <LiquidCrystal.h> 3double distance; 4double Circumference = 1.8; 5float Speed; 6int roundedDistance; 7 8float startTime = 0; 9 10float endTime = 0; 11 12float Time = 0; 13 14LiquidCrystal lcd(8, 9, 4, 5, 6, 7); 15int lcd_key = 0; 16int adc_key_in = 0; 17 18#define btnRIGHT 0 19#define btnUP 1 20#define btnDOWN 2 21#define btnLEFT 3 22#define btnSELECT 4 23#define btnNONE 5 24 25int read_LCD_buttons() { 26 adc_key_in = analogRead(0); 27 if (adc_key_in > 1000) return btnNONE; 28 if (adc_key_in < 26) return btnRIGHT; 29 if (adc_key_in < 226) return btnUP; 30 if (adc_key_in < 426) return btnDOWN; 31 if (adc_key_in < 600) return btnLEFT; 32 if (adc_key_in < 920) return btnSELECT; 33 return btnNONE; 34} 35 36void setup() { 37 Serial.begin(9600); 38 pinMode(23, OUTPUT); 39 pinMode(24, OUTPUT); 40 pinMode(22, INPUT); 41 digitalWrite(23, LOW); 42 digitalWrite(24, HIGH); 43 pinMode(26, OUTPUT); 44pinMode(28, OUTPUT); 45 46 lcd.begin(16,2); 47 lcd.print("Distance: "); 48 lcd.setCursor(0,1); 49 lcd.print("Speed: "); 50 51} 52 53void loop() { 54 55 int x; 56 int y; 57 58 x = digitalRead(22); 59 // Serial.print(x); 60 delay(1); 61 y = digitalRead(22); 62 63 if (x == 1 && y == 0) { 64 distance += Circumference; //m 65 roundedDistance = round(distance); 66 lcd.setCursor(10,0); 67 lcd.print(roundedDistance); 68 lcd.print("m"); 69 70 endTime = millis(); 71 Time = (endTime - startTime)/3600000; 72 Speed = (0.0018)/Time; //km/h 73 Serial.print(Time); 74 75 lcd.setCursor(7,1); 76 lcd.print(Speed); 77 lcd.print("km/h"); 78 startTime = millis(); 79 80 81 } 82 lcd_key = read_LCD_buttons(); 83 switch (lcd_key) { 84 case btnRIGHT: { 85 digitalWrite(28, HIGH); 86 delay(500); 87 digitalWrite(28, LOW); 88 delay(500); 89 digitalWrite(28, HIGH); 90 delay(500); 91 digitalWrite(28, LOW); 92 delay(500); 93 digitalWrite(28, HIGH); 94 delay(500); 95 digitalWrite(28, LOW); 96 delay(500); 97 digitalWrite(28, HIGH); 98 delay(500); 99 digitalWrite(28, LOW); 100 delay(500); 101 digitalWrite(28, HIGH); 102 delay(500); 103 digitalWrite(28, LOW); 104 delay(500); 105 digitalWrite(28, HIGH); 106 delay(500); 107 digitalWrite(28, LOW); 108 delay(500); 109 digitalWrite(28, HIGH); 110 delay(500); 111 digitalWrite(28, LOW); 112 delay(500); 113 digitalWrite(28, HIGH); 114 delay(500); 115 digitalWrite(28, LOW); 116 delay(500); 117 digitalWrite(28, HIGH); 118 delay(500); 119 digitalWrite(28, LOW); 120 delay(500); 121 digitalWrite(28, HIGH); 122 delay(500); 123 digitalWrite(28, LOW); 124 delay(500); 125 break; 126 } 127 case btnLEFT: { 128 digitalWrite(26, HIGH); 129 delay(500); 130 digitalWrite(26, LOW); 131 delay(500); 132 digitalWrite(26, HIGH); 133 delay(500); 134 digitalWrite(26, LOW); 135 delay(500); 136 digitalWrite(26, HIGH); 137 delay(500); 138 digitalWrite(26, LOW); 139 delay(500); 140 digitalWrite(26, HIGH); 141 delay(500); 142 digitalWrite(26, LOW); 143 delay(500); 144 digitalWrite(26, HIGH); 145 delay(500); 146 digitalWrite(26, LOW); 147 delay(500); 148 digitalWrite(26, HIGH); 149 delay(500); 150 digitalWrite(26, LOW); 151 delay(500); 152 digitalWrite(26, HIGH); 153 delay(500); 154 digitalWrite(26, LOW); 155 delay(500); 156 digitalWrite(26, HIGH); 157 delay(500); 158 digitalWrite(26, LOW); 159 delay(500); 160 digitalWrite(26, HIGH); 161 delay(500); 162 digitalWrite(26, LOW); 163 delay(500); 164 digitalWrite(26, HIGH); 165 delay(500); 166 digitalWrite(26, LOW); 167 delay(500); 168 break; 169 } 170 analogRead(0); 171 172 } 173 } 174
Downloadable files
code with circuit diagram
there is a code with the circuit diagram. I have uploaded the code separately also
code with circuit diagram
Comments
Only logged in users can leave comments