Alright, so it’s time for Lab 3. Was gonna do it tomorrow but it was a Sunday night and I was bored. So~ here it is. Let’s skip the boring stuff and go straight to the Luv-O-Meter.
I took the basic concept of a squeeze handle love meter and changed it a bit. Anyone can go up to a meter and squeeze it. But, what if you had to squeeze it a different amount depending on another variable. So basically you have to match up the potentiometer w/ the pressure sensor. Like making love, and unlike your regular luv-o-meter… this requires some skill.
Here’s the video:
Harder than it looks. I had *plenty* of time to practice. And don’t even talk to me about trying to keep the light steady… ugh.
I wanted to call my meter “GUTS!!!”, but after playing around with it a bit, I realized “Soft Touch” fits it better. I also wanted to use 2 force sensors, but only had 1 on hand. That would have made this game really fun.
Also, here’s the Arduino code:
int potPin1 = 0; // Pressure Sensor
int potPin2 = 1; // Potentiometer
int potValue1 = 0; // value read from the pot
int potValue2 = 0;
int led2 = 2; // LEDs
int led3 = 3;
int led4 = 4;
int led5 = 5;
int led6 = 6;
int led7 = 7;
int led8 = 8;
void setup() {
//set up led's as outputs
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
pinMode(led7, OUTPUT);
pinMode(led8, OUTPUT);
// initialize serial communications at 9600 bps:
Serial.begin(9600);
}
void loop() {
potValue1 = analogRead(potPin1); // read the pressure/pot values
potValue2 = analogRead(potPin2);
if(potValue1 < 25 || potValue2 < 25) {lightDown(2);}
else {
//if(potDiff(potValue1, potValue2) >= 300 ){lightDown(2);}
if(potDiff(potValue1, potValue2) < 5)
{lightUp(8);}
else if(potDiff(potValue1, potValue2) < 26 ){lightDown(8); lightUp(7);}
else if(potDiff(potValue1, potValue2) < 50 ){lightDown(7); lightUp(6);}
else if(potDiff(potValue1, potValue2) < 100 ){lightDown(6); lightUp(5);}
else if(potDiff(potValue1, potValue2) < 150 ){lightDown(5); lightUp(4);}
else if(potDiff(potValue1, potValue2) < 200 ){lightDown(4); lightUp(3);}
else if(potDiff(potValue1, potValue2) < 250 ){lightDown(3); lightUp(2);}
else if(potDiff(potValue1, potValue2) < 300 ){lightDown(2);}
}
//Serial.println(potDiff(potValue1, potValue2)); //debugging
delay(10); // wait 10 milliseconds before the next loop
}
/* Difference in numbers between pot and pressure sensors */
int potDiff(int x, int y)
{
return abs(x-y);
}
/* Turn all the led on up to num */
void lightUp(int num)
{
for(int i=2; i<=num; i++)
{
digitalWrite(i, HIGH);
}
}
/* Turn all the led's off down to num */
void lightDown(int num)
{
for( int i=8; i >= num; i--)
{
digitalWrite(i, LOW);
}
}