I Made a Love Compatibility Machine and I am 90% Sure You Should Not Base Any Life Decisions on It
By: Lauren Busser
Tags: Creative Coding, Circuit Building, Arduino, Love Test

I Made a Love Compatibility Machine and I am 90% Sure You Should Not Base Any Life Decisions on It Lauren Busser Follow Nov 18 · 5 min read

Love Tester Carnival Game found on Pinterest

This week’s assignment asked us to program a love compatibility machine that would give us a meaningful reading on how compatible two people are.

I was also thinking about the Love Tester carnival games, I didn’t have a chance to delve into how they were made, but it felt like as good place to start as any.

My initial concept was to create a device that two people could — in theory — hold in their hands and place their thumbs over the sensors. I opted to use two photocells for this, because as Scott said in his tutorial, “they’re an imperfect sensor for an imperfect world.”

Building the Circuit

I started my process by building my circuit. I was very aware that everything had to go to ground and that everything should have some form of resistance, but I was at a slight loss for how to set it up.

I glanced at the Arduino Project Hubs Love-o-Meter project for some inspiration. This project was useful in confirming that my setup was generally correct, but there were some differences including the use of the Arduino Uno and not the Arduino Nano BLE.

This project also used a temperature sensor, which means the code went through an added step of converting temperature to volts.

Using what I had, I was able to layout a circuit with two photocells and a series of LEDs in sequence. It very quickly started to remind me of the back of an old stereo so I made sure to color coordinate the wires:

Red = Power

Black = Ground

Yellow = Analog Inputs

White = Series Connection

Image of circuit provided by the author

The way I imagined this circuit working was that two people would place their thumbs over the photocells. If the reading was equal three lights would light up. If the reading was out of balance one or two lights would write up.

This is the part where I say there is pseudoscience behind this, and no one should ever make a life decision based on this machine.

Writing the Code

Since the goal was to check for compatibility, my thought was that the three LEDs would act as a meter if they were out of balance one or two lights would turn on. If they were in balance then all three lights would turn on.

To get started I wrote some if statements to that effect.

Testing the Code

When I plugged my circuit in for the first time, with the code from last week still uploaded, I did see a single light turn on so I took that as a good sign that I actually had power running through both sides of my breadboard.

Another photo of the Arduino!

I had a few issues with declaring variables because I thought I would be able to declare multiple ports with the same function. (Not the case.) But even then when I tried to upload it, despite declaring the port and having the right board selected, I got this message:

Final Result

In the end I made progress, but I am still not entirely sure how I will get this code to work. I did get one light to blink, but it’s not recognizing the sensor inputs.

Working on a PC that I am still getting familiar with I am also finding new quirks. Like, for example, it now wants to position the Arduino at COM3, not COM4. (I have the feeling COM4 is the pork where I have my mouse attached.))

Even then when I unplug the Arduino it’s taking a long period of time to recognize that there is a port on this machine with the menu being grayed out.

This is the error I received whenever I attempted to make changes and reupload the code:

Arduino: 1.8.13 (Windows 10), Board: “Arduino Nano 33 BLE” Sketch uses 90960 bytes (9%) of program storage space. Maximum is 983040 bytes. Global variables use 45848 bytes (17%) of dynamic memory, leaving 216296 bytes for local variables. Maximum is 262144 bytes. Device : nRF52840-QIAA Version : Arduino Bootloader (SAM-BA extended) 2.0 [Arduino:IKXYZ] Address : 0x0 Pages : 256 Page Size : 4096 bytes Total Size : 1024KB Planes : 1 Lock Regions : 0 Locked : none Security : false Erase flash Done in 0.000 seconds Write 90968 bytes to flash (23 pages) [==============================] 100% (23/23 pages) Done in 3.853 seconds Board at COM3 is not available

Next Steps

Step one is obviously, get it to work: I feel like my logic is halfway there but there is some nuance I am missing.

Aside from basic functionality, this interface is super clunky and not useable at all. If I was to attempt to use this anywhere outside of class, I would want to find a way to encase it in something that would hide the wires and assure they wouldn’t be disturbed.

One of my lights just also seems to be forever on and I am not sure why.