Ben’s Magic Sports Betting 8-Ball

I’m bad at sports betting so I made a Magic 8-Ball to recommend bets for me. For all the ink that has been spilled over how to lock in a sure-fire bet, the fact of the matter is that even the most successful sports bettors in the world only hit on 60% of their bets. When we can’t trust our gut and we can’t trust logic, we might as well outsource these decisions to machines and let the fates decide.

Here’s how it is intended to work: With an integrated vibration sensor, the device detects when a person is shaking the object and queries ChatGPT through an API Key with a prompt that asks ChatGPT to scour the daily betting markets and identify inefficiencies in the market that can be exploited. This takes into account betting markets, performance trends, opponent analysis, and similar game scenarios to identify one bet at a time. I was able to complete a prototype that surfaces a random bet, because I had trouble with OpenAI’s terms of service. With more experimentation with the prompt, I believe this would work as designed. My goal for this project was to immerse myself in AI tools so that I can begin to understand how they can be best integrated into devices.

Improvements:

I decided to add a Draftkings Sportsbook vinyl sticker to make the 8-ball look more legitimate. Going forward, I would probably use a more sensitive vibration switch because the medium-strength switch requires a very firm shake.

Instructables Link

Video Storyboard

Timing is really important for this video to pick up views. I am going to film and post this during Sunday NFL Football and the video will be submitted before Dec 17th.

Sample Social Media Post to IG/Reddit:

“buddy cracked the code. magic 8-ball that tells you what bets to place @draftkings @houseofhighlights @barstoolsports”

Lauren’s Final Project: Acceptus

Well I did it!!

Honestly I thought this would be a somewhat manageable project, however I was very very wrong. This project caused me so much frustration and took almost double the amount of time I had anticpated.

Okay now that I’ve gotten that out of the way let me introduce you to Acceptus!

Idk why this photo always look so low quality when uploading to the internet…

Introducing the Acceptus wall sconce—an organic, sculptural lighting solution designed to transform your home’s ambiance. This innovative sconce mounts seamlessly on any wall, creating an instant welcome as you enter a room. Perfect for those weary from long workdays, especially during the dark and cold winter months when returning home can feel uninspiring.

The Acceptus features intelligent motion-sensing technology that brings warmth and comfort to your living space. As you open the door or walk by, the sconce detects your presence, gently fading on to create a soft, inviting glow. No more harsh overhead lights or dark, unwelcoming entryways—just a subtle, comforting illumination that greets you and instantly makes your space feel more welcoming.

Here is the link to my Instructable:

https://www.instructables.com/Organic-Motion-Sensor-Wall-Sconce-Light

Here is the short video ad I made for my project:

Social Media Messaging Samples:

Slogans/Taglines

Where intelligent motion sensing meets sculptural minimalism.

Illumination that understands the art of welcome.

Caption

Precision meets poetry in our latest architectural lighting solution. More than a mere fixture, Acceptus represents a sophisticated intersection of technology and design.

Intelligent motion-sensing technology crafts an environment that anticipates and adapts.

Final Remarks:

This project could not have been possible without a few key people…

  • Becky (obviously): Thank you for helping me finalize my code and troubleshooting! But basically thank you for your support throughout the entire project.
  • Kyle: Thank you for training me on the CNC machine plus answering all of my circuit related questions!
  • Tashea: Thank you for giving me your extra nano board after killing mine! And I’m sorry I killed that one the next morning 🙂
  • My sister: Thank you for letting me take my frustrations out on you throughout this process and talking me off the ledge multiple times.

Qianyue’s Neon Meow Light-Final

This is my cat🐱.

Ever since I moved here, I can only see he through FaceTime.

So, I decided to create this neon cat light to keep his presence close.

Screenshot

I designed the outline based on his chubby figure and placed it on my bedside table. It’s both a decorative piece and a functional light.

Process

  1. Modeling: I used Rhino to design the 3D model of the cat’s outline, ensuring the grooves fit perfectly for the LED neon strip.
  2. 3D Printing: I printed the outline using a 3D printer, creating a sturdy frame to hold the components and the neon light securely.
  3. Materials Used:
    • Acrylic board: For the base.
    • LED neon strip: For the lighting.
    • Arduino Gemma board: For programming the light modes.
    • Buttons: To switch between modes.
    • Wires: For connections.
    • Power adapter: To power the light.
  4. Assembly: After printing the frame, I placed the LED strip into the grooves, connected the Arduino board and wires, and programmed the buttons to control the light modes.

A mistake


When I tried to use a heat gun to shrink the wire insulation, the hot air accidentally blew onto the frosted acrylic board, turning it transparent! (Note to self: never use a heat gun near frosted acrylic!)

Features

The lamp has two modes:

  • Day Mode: The light flashes like a comet, with each “comet” in a different color. After the comet effect, a rainbow light flows smoothly through the strip.

Night Mode: The light switches to a soft white glow that flickers gently, serving as a cozy night light.

My instructable link:

https://www.instructables.com/Neon-Meow-Cat-Light

Day Mode Code

#include <Adafruit_NeoPixel.h>

#ifdef __AVR__

#include <avr/power.h>

#endif

#define BUTTON_PIN 2 // 按钮引脚(接地)

#define PIXEL_PIN 1 // NeoPixel数据引脚

#define PIXEL_COUNT 140 // LED数量

Adafruit_NeoPixel strip(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800);

boolean oldState = HIGH;

int mode = 0; // 0: off, 1: animations

// 动画序列:0:RainbowComet(往返一次), 1:RainbowChase

int currentAnim = 0;

// 彗星动画参数

int cometPos = 0;

bool cometForward = true;

bool cometDone = false;

uint8_t cometTailLength = 20;

// 彗星颜色循环索引

uint8_t cometColorIndex = 0;

// 定义5种颜色的Hue和Saturation

// 黄色、绿色、蓝色、紫色、白色

uint16_t cometHues[5] = {10920, 21840, 43680, 54600, 0};

uint8_t cometSats[5] = {255, 255, 255, 255, 0};

// 白色通过S=0实现,无需关心Hue

uint16_t cometBaseHue = 0;

uint8_t cometBaseSat = 255;

// RainbowChase动画参数

uint16_t chaseBaseHue = 0;

void setup() {

pinMode(BUTTON_PIN, INPUT_PULLUP);

strip.begin();

strip.show(); // 初始化后关灯

}

void loop() {

boolean newState = digitalRead(BUTTON_PIN);

// 检测按钮按下从高到低的变化

if ((newState == LOW) && (oldState == HIGH)) {

delay(20);

newState = digitalRead(BUTTON_PIN);

if(newState == LOW) {

mode = 1; // 切换到动画模式

currentAnim = 0; // 从彗星动画开始

cometPos = 0;

cometForward = true;

cometDone = false;

// 切换到下一个颜色

cometColorIndex = (cometColorIndex + 1) % 5;

cometBaseHue = cometHues[cometColorIndex];

cometBaseSat = cometSats[cometColorIndex];

}

}

oldState = newState;

if (mode == 1) {

switch (currentAnim) {

case 0: // RainbowComet动画:往返一次

if (!cometDone) {

rainbowCometAnimation();

} else {

currentAnim = 1; // 往返完成,进入RainbowChase

}

break;

case 1: // RainbowChase快速流动

rainbowChaseAnimation();

break;

}

} else {

// off模式:关灯

strip.clear();

strip.show();

}

}

// RainbowComet动画函数:从头到尾再从尾到头往返一次

void rainbowCometAnimation() {

strip.clear();

// 彗星头部颜色使用cometBaseHue和cometBaseSat

int headHue = cometBaseHue;

uint8_t headSat = cometBaseSat;

strip.setPixelColor(cometPos, strip.gamma32(strip.ColorHSV(headHue, headSat, 255)));

// 设置彗星尾巴(略微改变Hue增加层次感)

for(int t=1; t<=cometTailLength; t++) {

int pos = cometPos – (cometForward ? t : -t);

while (pos < 0) pos += strip.numPixels();

while (pos >= strip.numPixels()) pos -= strip.numPixels();

uint8_t brightness = 255 – (255/cometTailLength)*t;

int tailHue = (headHue + t*300) % 65536;

// 尾巴使用与头部相同的饱和度设置

strip.setPixelColor(pos, strip.gamma32(strip.ColorHSV(tailHue, headSat, brightness)));

}

strip.show();

// 更新彗星位置

if (cometForward) {

cometPos++;

if (cometPos >= strip.numPixels()) {

// 到达末端,开始返回

cometPos = strip.numPixels() – 1;

cometForward = false;

}

} else {

cometPos–;

if (cometPos < 0) {

// 返回到起点,结束彗星动画

cometPos = 0;

cometDone = true;

}

}

delay(20);

}

// RainbowChase动画函数:快速流动的追逐效果

void rainbowChaseAnimation() {

strip.clear();

for(int i=0; i<strip.numPixels(); i++) {

uint16_t pixelHue = chaseBaseHue + (i * 300);

strip.setPixelColor(i, strip.gamma32(strip.ColorHSV(pixelHue % 65536, 255, 255)));

}

strip.show();

chaseBaseHue += 512;

delay(10);

}

Night Mode Code

#include <Adafruit_NeoPixel.h>

#define BUTTON_PIN 2

#define PIXEL_PIN 1 // 根据实际连接更改引脚

#define PIXEL_COUNT 140

Adafruit_NeoPixel strip(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800);

boolean oldState = HIGH;

boolean animationActive = false;

void setup() {

pinMode(BUTTON_PIN, INPUT_PULLUP);

strip.begin();

strip.setBrightness(50); // 设置亮度,避免太暗

strip.show();

}

void loop() {

boolean newState = digitalRead(BUTTON_PIN);

// 检测按钮是否从高到低

if (newState == LOW && oldState == HIGH) {

delay(20); // 去抖动

if (digitalRead(BUTTON_PIN) == LOW) {

animationActive = !animationActive; // 切换动画状态

if (!animationActive) {

strip.clear();

strip.show(); // 关闭灯效

}

}

}

oldState = newState;

// 如果动画激活,运行闪烁效果

if (animationActive) {

fadeEffect(5, 60); // 调整步长和延迟控制效果

}

}

void fadeEffect(int step, int delayTime) {

for (int brightness = 0; brightness <= 255; brightness += step) {

setAllPixels(strip.Color(brightness, brightness, brightness));

strip.show();

delay(delayTime);

}

for (int brightness = 255; brightness >= 0; brightness -= step) {

setAllPixels(strip.Color(brightness, brightness, brightness));

strip.show();

delay(delayTime);

}

}

void setAllPixels(uint32_t color) {

for (int i = 0; i < strip.numPixels(); i++) {

strip.setPixelColor(i, color);

}

}

If I were to improve this project, I would like to create more complex outlines and enable the neon light to display multiple colors simultaneously. This would add more depth and versatility to the design.

Thanks for watching!

Ta-shea Final Project : Smartbell

Lets workout! The dumbbell brought quite the challenge but it was a success.

As mentioned. This is a responsive dumbbell that changes light based on your increasing arm rep. The aim is to always get to the color green, this signifies that you have successfully completed the workout.

See process below!

Stage 1 – Initial Sketch – I had no idea what I was doing, or faith that I could pull this off.

Stage 2 – Second Sketch – still had no idea, but the sketching got the gears turning in my head

Stage 3 – Coding – the pressure was on!

Stage 4- Took a break – much needed orange gin cocktail break.


Stage 5- Progress!!

Stage 6 – End result

Tong’s Weekly Check-In Calculator

Weekly Check-In Calculator

This is a physical check-in device placed at home. When you set a goal and start acting on it, you press the button to check in each time you complete a task. When you reach your check-in goal, the calculator will shoot out confetti to congratulate you.

I had two big problems with the model this week, the first was how the confetti could be sprayed and used multiple times. The second was how to implement the idea that the user must clock in 7 times in a row to trigger the confetti.

Model

Regarding the colored confetti , I took your feedback this week into consideration and looked for many ways to make simple ribbon cones, and finally decided to use the prototype below.

This video inspired me about how to do a continuous clocking

Oh, and as far as how to pull this leash, I think an eccentric wheel ➕ rotator (I’d prefer a servo) could do it.

So now I have my prototype model.

Next I am going to use 3D modeling and printing for all mechanical parts except for circuits, motors, lights, switches, etc.

Circuit diagram

My main question is: which one of the servos or the DC motor can actually drive my leash setup. I first tried to build the circuit diagram for the DC motor, I chose to connect 7 switches in series, each responsible for one LED. This was to make sure that the switches were pressed one after the other to get the confetti going. Then add another DC motor in parallel with the LED on the last switch. This makes it possible to press the switch 7 times in a row to start the confetti (after 7 consecutive punches, the reward is given directly). This was a tough design and it took me about 3 hours to connect it.

The other option is to use servos, luckily I only had to make a few modifications to the last schematic and all the necessities were taken care of by the way the circuit was connected, I just had to set up how the motor would turn in the code section !!!!!!

https://www.tinkercad.com/things/5lMZJcvQAXR-spectacular-jaagub-migelo?sharecode=iTnPKJLV1yxjRMc6lsGPtdOhXR0Uciwbhw4CyJ37h7Y

What I’m going to do next:

Model and print the 3’s

Solder the circuit and test

Assemble

Items that need to be purchased:

Micro servo motor

7 Thumb switches

confetti: colored plastic strips

Tutorial Outline Google Doc:

https://docs.google.com/document/d/1ch30k8iBucDNol0SyI1oBi6YFl1yrAllQNIEkyu97m0/edit?usp=sharing

Instructables Account:

https://www.instructables.com/member/Tong88

Haosen’s Final Project Process

My Final Decision:

My storyboard:

My first design is a music box that adjusts the brightness of its light based on changes in the external environment. The specific design can reference the style of Hayao Miyazaki’s film Ponyo on the Cliff by the Sea. The space inside my Snow Globe is divided into two parts, the bottom part of the goldfish girl will be filled with uv glue or Water, and the top part of the boy’s home will be air, and there will be a light sensor on the base, and based on the analog signal output from the sensor, and then a further analog signal to the led light to change the intensity of the led light.

My Google Doc (including my Introductions, Materials, Steps)

https://docs.google.com/document/d/1EE5aoazBO_mgFl9PXqxeZD2Y1nNrRYG8QRDSCAn7P5U/edit?usp=sharing

Link to the Instructables user profile:

https://www.instructables.com/member/hzhang66/instructables

Photos of your prototype circuit and form:

Tinkercard Link: https://www.tinkercad.com/things/dCHrCDoQGFT/editel?returnTo=%2Fdashboard%2Fdesigns%2Fcircuits

Lauren Final Project WIP

Here is some photos of the form prototype. Some modifications may need to be made as I need to create a proper base so it is able to be mounted to a wall and hide all the wiring.

Okay moving to my circuit diagram… I need help. I haven’t attempted this complicated of a circuit yet. But these are the components I believe I need.

Here is my updated shopping list:

Now for the storyboard, warning it is not pretty… but I think it captures its function.

Above is a story about a person who is coming home from a long day of work. But instead of walking into a dark and depressing apartment, they are greeted instead by a beautiful light that appears when they walk through the door.

This is the link to my google doc (its not done yet): https://docs.google.com/document/d/1p0hcsa9AuIekfMi22d-b_hi6yw41qgEZGrBgSVQKtgg/edit?usp=sharing

This is the link to my instructables account: https://www.instructables.com/member/lpalazzi/

Qi’s “lighting airpots earring” Process

My idea is to decorate a luminous Bluetooth airpods earring. This decoration not only lets people know you are using Bluetooth headsets but also displays the style of music you are listening to through flashing lights. It’s a great way to convey information to the outside world.

The element I will use for this project is a metallic butterfly. I will use 3D printing technology to create the main part of the decoration, while the hollow areas will be covered with Cellophane wrap. This material is transparent and allows light to pass through.

One aspect I’m still considering is whether to design a decoration specifically for headphones or Bluetooth headsets. For Bluetooth headsets, the design might be too heavy for the device to support. As a result, I may need to add an ear hook to provide extra support.

Element:

Shopping list:

Cellophane wrap paper, Silver PLA filament, earring hooks

Lighting:

I’m looking for a small light that would be suitable for mounting on a headset decoration. Since my work is small, I need a light that matches the size of my product.

I will design three lighting effects for my work:
-When you are listening to dynamic music, the light will have a rhythmic flashing red or orange light
-When you are listening to soothing music, the light will have a rhythmic blue and green light
-When you are listening to white noise, the light will have a rhythmic white and yellow light

https://docs.google.com/document/d/15EKuqGIgPJD0VBByyr-HptrdHW-1oUpSVMw5ygBmVaY/edit?usp=sharing

Gudrun’s Final Project: The Moon Cycle Lamp

This was one of the most challenging projects I have done yet!

The Moon Phase Lamp Video

Link to My Instructables Project

Link to the Instructable Preview

The Idea

I wanted to make a moon cycle lamp that shows you the cycle/phase of the current moon.

How it works

A light is placed in the middle of the box and a dome spins around it casting a shadow on the moon. This allows you to see the current cycle of the motor.

The Process

The Box

I built a wooden box in the VFL, it was quite challenging because I wanted the box to be seamless and had to miter the edges to achieve that look.

3D Printing

I designed and 3d printed the domes, both the outer dome, which is the moon, and the inner dome that casts the shadow.

I had to design the inner dome a few times because of balance issues.

The Circuit

I have a stepper motor, a motor breakout board, an Arduino Nano, an LED light, and a 100-ohm resistor. I soldered the Arduino nano and the motor breakout board to the “solderable” breadboard and soldered wires to connect everything together.

The Code

I had a really hard time coding this.

I researched a lot about the moon phases and even tried to create a function that calculates the moon. In the end, I downloaded a library in Arduino called “Moonphase” by Cellie. Then I used an example from their GitHub.

Then I researched how to make a stepper motor move and created a function to make the motor move from The Arduino Website.

Currently, the motor moves, but the moon phase location is not working as I want.

#include <WiFi.h>
#include <moonPhase.h>
#include <Wire.h>
#include <RTClib.h>

const char * wifissid = "WiFi Name";
const char * wifipsk  = "Password";

moonPhase moonPhase;
RTC_DS1307 RTC;

struct tm timeinfo = {0};

// Define motor pins
#define A_OUT_1 9
#define A_OUT_2 10
#define B_OUT_1 11
#define B_OUT_2 12

// Define the delay between steps in milliseconds
const int STEP_DELAY = 100; // Adjust for speed
int stepsMoved = 0;

// Define the step sequence for a bipolar stepper motor
const int stepSequence[4][4] = {
  {HIGH, LOW, HIGH, LOW},  // Step 1
  {LOW, HIGH, HIGH, LOW},  // Step 2
  {LOW, HIGH, LOW, HIGH},  // Step 3
  {HIGH, LOW, LOW, HIGH}   // Step 4
};


void setup() {
  pinMode(2, OUTPUT);
  // put your setup code here, to run once:
    Wire.begin();

  // Set motor pins as outputs
  pinMode(A_OUT_1, OUTPUT);
  pinMode(A_OUT_2, OUTPUT);
  pinMode(B_OUT_1, OUTPUT);
  pinMode(B_OUT_2, OUTPUT);

  //Moon Angle
  //Serial.begin(115200);
  //Serial.println();
  //Serial.println();
  //Serial.println( "moonPhase esp32-sntp example." );
  //Serial.print( "Connecting to " );
  //Serial.println( wifissid );
  //WiFi.begin( wifissid, wifipsk );
  //while ( !WiFi.isConnected() )
  //  delay(100);
  //Serial.println();

  //Serial.println( "Connected. Getting time..." );
  //configTzTime( "CET-1CEST-2,M3.5.0/02:00:00,M10.5.0/03:00:00", "0.pool.ntp.org" ); // Timezone: Amsterdam, Netherlands

  //while ( !getLocalTime( &timeinfo, 0 ) )
  //  vTaskDelay( 10 / portTICK_PERIOD_MS );
}

void loop() {
  //getLocalTime( &timeinfo );
  //Serial.print( asctime( &timeinfo ) );
  digitalWrite(2, HIGH);
  stepsMoved = moveSteps(20);

  moonData_t moon = moonPhase.getPhase();

  Serial.print( "Moon phase angle: " );
  Serial.print( moon.angle );                       // angle is a integer between 0-360
  Serial.print( " degrees. Moon surface lit: " );
  Serial.printf( "%f%%\n", moon.percentLit * 100 ); // percentLit is a real between 0-1
  Serial.println();
  delay(30000);
}

// Function to move the motor a specific number of steps
int moveSteps(int steps) {
  int stepCount = abs(steps);          // Get the absolute number of steps
  int direction = (steps > 0) ? 1 : -1; // Determine direction (1 = forward, -1 = backward)

  int currentStep = 0; // Track current step in the sequence

  for (int i = 0; i < stepCount; i++) {
    // Calculate the next step index
    currentStep = (currentStep + direction + 4) % 4;

    // Set the motor coils according to the step sequence
    digitalWrite(A_OUT_1, stepSequence[currentStep][0]);
    digitalWrite(A_OUT_2, stepSequence[currentStep][1]);
    digitalWrite(B_OUT_1, stepSequence[currentStep][2]);
    digitalWrite(B_OUT_2, stepSequence[currentStep][3]);

    // Delay to control the speed
    delay(STEP_DELAY);
  }

  // Turn off all coils after motion
  releaseMotor();
  return stepCount; // Return the number of steps moved
}

// Function to release the motor (turn off all coils)
void releaseMotor() {
  digitalWrite(A_OUT_1, LOW);
  digitalWrite(A_OUT_2, LOW);
  digitalWrite(B_OUT_1, LOW);
  digitalWrite(B_OUT_2, LOW);
}

//Moving the Motor in phase with the real moon
// Function that changes position from % to step location f.e. 180° = 100 steps
  // Function (angle) --> (position)
  

// For Loop that moves the motor
  // position = 0;
  // newPosition = 0;
  // for ...
    // if newPosition == position - 1
    // move motor (1)
    // position = newPosition
//

Link to the Google Doc draft tutorial

Link to the Google Doc

Future Constructions

There are many things that I need to fix and do differently in the future.

  • I need to fix the moon angle code so it works properly
  • Change the blue LED to a white LED light
  • Switch out the current motor for a quieter one