Devices & Components
Arduino Uno Rev3
16 MHz Crystal
IR Transceiver (Generic)
Capacitor 22 pF
ATmega328
RGB LCD Shield Kit, 16x2 Character Display
Hardware & Tools
PCB, For DMB-4775
Solder Wire, Lead Free
Hot glue gun (generic)
Soldering iron (generic)
Project description
Code
Tachometer_Code
c_cpp
1// Tachometer with lcd i2c screen 2#include <Wire.h> 3#include <LiquidCrystal_I2C.h> 4LiquidCrystal_I2C 5 lcd(0x27, 16, 2); 6#define sensor_pin 2 7int READ = 0; 8int i = 0; 9bool 10 mask = 0; 11unsigned long timer = 0; 12float Time = 0.0; 13int RPM = 0; 14const 15 int revnum = 20; 16void setup() 17{ 18 pinMode(sensor_pin, INPUT); 19 // Wire.begin(); 20 21 Serial.begin(115200); 22 lcd.begin(); 23 lcd.backlight(); 24 timer = millis(); 25} 26 27void 28 loop() 29{ 30 READ = digitalRead(sensor_pin); 31 if (READ == 0 && mask == 0) 32 { 33 i++; 34 mask = 1; 35 } 36 if (READ == 1 && mask == 1) mask = 0; 37 38 if (i == revnum) { 39 Time = millis() - timer; 40 Time = Time / 1000; 41 42 RPM = ( revnum / Time ) * 60; 43 lcd.clear(); 44 lcd.setCursor(0, 0); 45 46 lcd.print(revnum); 47 lcd.setCursor(3, 0); 48 lcd.print( "revs / "); 49 50 lcd.setCursor(10, 0); 51 lcd.print(Time); 52 lcd.setCursor(15, 0); 53 54 lcd.print("s"); 55 lcd.setCursor(0, 1); 56 lcd.print("RPM = "); 57 58 lcd.setCursor(6, 1); 59 lcd.print(RPM); 60 lcd.setCursor(12, 1); 61 62 lcd.print("rpm"); 63 } 64 if (i >= revnum) { 65 i = 0; 66 timer 67 = millis(); 68 } 69 Serial.print(i); 70 Serial.print(" "); 71 Serial.print(mask); 72 73 Serial.print(" "); 74 Serial.print(Time); 75 Serial.print("S"); 76 Serial.print(" 77 "); 78 Serial.print(RPM); 79 Serial.println("RPM"); 80 81} 82
Tachometer_Code
c_cpp
1// Tachometer with lcd i2c screen 2#include <Wire.h> 3#include <LiquidCrystal_I2C.h> 4LiquidCrystal_I2C lcd(0x27, 16, 2); 5#define sensor_pin 2 6int READ = 0; 7int i = 0; 8bool mask = 0; 9unsigned long timer = 0; 10float Time = 0.0; 11int RPM = 0; 12const int revnum = 20; 13void setup() 14{ 15 pinMode(sensor_pin, INPUT); 16 // Wire.begin(); 17 Serial.begin(115200); 18 lcd.begin(); 19 lcd.backlight(); 20 timer = millis(); 21} 22 23void loop() 24{ 25 READ = digitalRead(sensor_pin); 26 if (READ == 0 && mask == 0) { 27 i++; 28 mask = 1; 29 } 30 if (READ == 1 && mask == 1) mask = 0; 31 if (i == revnum) { 32 Time = millis() - timer; 33 Time = Time / 1000; 34 RPM = ( revnum / Time ) * 60; 35 lcd.clear(); 36 lcd.setCursor(0, 0); 37 lcd.print(revnum); 38 lcd.setCursor(3, 0); 39 lcd.print( "revs / "); 40 lcd.setCursor(10, 0); 41 lcd.print(Time); 42 lcd.setCursor(15, 0); 43 lcd.print("s"); 44 lcd.setCursor(0, 1); 45 lcd.print("RPM = "); 46 lcd.setCursor(6, 1); 47 lcd.print(RPM); 48 lcd.setCursor(12, 1); 49 lcd.print("rpm"); 50 } 51 if (i >= revnum) { 52 i = 0; 53 timer = millis(); 54 } 55 Serial.print(i); 56 Serial.print(" "); 57 Serial.print(mask); 58 Serial.print(" "); 59 Serial.print(Time); 60 Serial.print("S"); 61 Serial.print(" "); 62 Serial.print(RPM); 63 Serial.println("RPM"); 64 65} 66
Downloadable files
schematic
schematic
schematic
schematic
tachometer_video_ORiwCxsKv4.mp4
tachometer_video_ORiwCxsKv4.mp4
Comments
Only logged in users can leave comments