Devices & Components
16x2 LCD display with I²C interface
Arduino Nano
L293D driver
Resistor 220 ohm
10kOhm potentiometer
LM7805 Voltage regulator
Resistor 1k ohm
Hardware & Tools
Soldering Station
Soldering kit
Solder Soldering Wire
Software & Tools
Arduino IDE
Project description
Code
Code
cpp
...
1// Arduino DC motor speed and direct control 2#include <LiquidCrystal.h> 3LiquidCrystal lcd(12, 9, 5, 4, 3, 2); 4 5#define pot 0 6#define pwm1 10 7#define pwm2 11 8 9boolean direct = 0; 10int current; 11int Shutdown=0; 12int mA = 0; 13int hours; 14int minutes; 15int seconds; 16long hour = 3600000; // 3600000 milliseconds in an hour 17long minute = 60000; // 60000 milliseconds in a minute 18long second = 1000; // 1000 milliseconds in a second 19 20void setup() { 21 lcd.begin(16, 2); 22 23 pinMode(pwm1, OUTPUT); 24 pinMode(pwm2, OUTPUT); 25} 26 27void loop() { 28 lcd.clear(); 29 lcd.setCursor(0,0); 30 lcd.print("Coloidal I=mA "); 31 lcd.print(mA); 32 long timeNow = millis(); 33 hours = (timeNow) / hour; 34 minutes = ((timeNow) % hour) / minute ; 35 seconds = (((timeNow) % hour) % minute) / second; 36 lcd.setCursor(0, 1); 37 lcd.print("T:"); 38 lcd.print(hours); 39 lcd.print(":"); 40 lcd.print(minutes); 41 lcd.print(":"); 42 lcd.print(seconds); 43 44 45 current = analogRead(pot) / 4; 46 mA=map(current, 0,255,0,10); 47 48 49 if(direct) 50 analogWrite(pwm1, current); 51 else 52 analogWrite(pwm2, current); 53 54 direct=!direct; 55 56 if(minutes>=0 && minutes<30){ 57 digitalWrite(pwm1, 0); 58 lcd.setCursor(10,1); 59 lcd.print("P:+/-"); 60 61} 62 if( minutes>=30 && minutes<59){ 63 digitalWrite(pwm2, 0); 64 lcd.setCursor(10,1); 65 lcd.print("P:-/+"); 66 } 67 68 69 if(hours>=3){ 70 digitalWrite(pwm1, 0); 71 digitalWrite(pwm2, 0); 72 lcd.setCursor(10,1); 73 lcd.print("END"); 74 75 } 76 delay(100); 77 78 }
Downloadable files
Schematic diagram
...
Schematic.jpg

Comments
Only logged in users can leave comments