drive.google.com/file/d/1yc1FxYMIZhi31KI7uG9jLtewOr64UD71/view?usp=sharing
/*
LCD Pins:
RS pin - pin 12
E pin - pin ~11
DB4 pin - pin ~5
DB5 pin - pin 4
DB6 pin - pin ~3
DB7 pin - pin 2
R/W pin - ground
VSS pin - ground
VCC pin to 5V
Force Senor Pin:
A5
Transistor/Motor Pin:
~6
LED Pin:
~10
*/
// LCD code (library and initialization of pins: RS, E, DB4, DB5, DB6, DB7)
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// serial monitor
Serial.begin(9600);
// outputs of motor and LED
pinMode(6, OUTPUT);
pinMode(10, OUTPUT);
}
void loop() {
// initialize force senor variables
int fsrPin = 5;
int ForceRead;
int ForceReadmod;
// input sensor reading as variable and reduce by factor of 5
ForceRead = analogRead(fsrPin);
ForceReadmod = ForceRead/5;
// LCD screen displays word "force" and reading
lcd.setCursor(0, 0);
lcd.print("Force: ");
lcd.print(ForceReadmod);
// serial monitor data
Serial.print("Force value: ");
Serial.println(ForceReadmod);
// conditions for spinning motor and LED
// gradual increase in motor speed and LED brightness for increasing force
if (ForceReadmod < 10) {
analogWrite(6, 0);
analogWrite(10, 0);
}
else if (ForceReadmod < 20) {
analogWrite(6, 50);
analogWrite(10, 50);
}
else if (ForceReadmod < 30) {
analogWrite(6, 100);
analogWrite(10, 100);
}
else if (ForceReadmod < 40) {
analogWrite(6, 150);
analogWrite(10, 150);
}
else if (ForceReadmod < 50) {
analogWrite(6, 200);
analogWrite(10, 200);
}
else {
analogWrite(6, 255);
analogWrite(10, 255);
}
// repeat data collection every 0.5 sec
delay(500);
lcd.clear();
}