Setup
Before getting started, make sure you have the following parts.
Note: you can also use the Phidget Spatial or any Phidget with an accelerometer for this project.
VINT Hub

Write Code (Java)
Copy the code below into a new Java project. If you need a reminder of how to do this, revisit the Getting Started Course.
Not your programming language? Set your preferences so we can display relevant code examples
//Add Phidgets Library
import com.phidget22.*;
public class DiceRoll {
public static void main(String[] args) throws Exception {
//Create
Accelerometer accelerometer = new Accelerometer();
//Open
accelerometer.open(1000);
//Use your Phidgets
while (true) {
//Get acceleration values
double x = accelerometer.getAcceleration()[0];
double y = accelerometer.getAcceleration()[1];
double z = accelerometer.getAcceleration()[2];
//calculate the magnitude of the acceleration and print it
double totalAccel = Math.sqrt(x * x + y * y + z * z);
//compare magnitude to a threshold value
if(totalAccel > 3.0){
System.out.println("Shaking");
}
Thread.sleep(150);
}
}
}
package diceroll;
//Add Phidgets Library
import com.phidget22.*;
public class DiceRoll {
public static void main(String[] args) throws Exception {
//Create
Accelerometer accelerometer = new Accelerometer();
//Open
accelerometer.open(1000);
//Use your Phidgets
while (true) {
//Get acceleration values
double x = accelerometer.getAcceleration()[0];
double y = accelerometer.getAcceleration()[1];
double z = accelerometer.getAcceleration()[2];
//calculate the magnitude of the acceleration and print it
double totalAccel = Math.sqrt(x * x + y * y + z * z);
//compare magnitude to a threshold value
if(totalAccel > 3.0){
System.out.println("Shaking");
}
Thread.sleep(150);
}
}
}
Write Code (Python)
Copy the code below into a new Python project. If you need a reminder of how to do this, revisit the Getting Started Course.
Not your programming language? Set your preferences so we can display relevant code examples
#Add Phidgets Library
from Phidget22.Phidget import *
from Phidget22.Devices.Accelerometer import *
#Required for sleep statement
import time
#Required for math operations
import math
#Create
accelerometer = Accelerometer()
#Open
accelerometer.openWaitForAttachment(1000)
#Use your Phidgets
while (True):
#Get acceleration values
x = accelerometer.getAcceleration()[0]
y = accelerometer.getAcceleration()[1]
z = accelerometer.getAcceleration()[2]
#calculate the magnitude of the acceleration
totalAccel = math.sqrt(x*x + y*y + z*z)
#compare magnitude to a threshold value
if(totalAccel > 3):
print("Shaking")
time.sleep(0.15)
Write Code (C#)
Copy the code below into a new C# project. If you need a reminder of how to do this, revisit the Getting Started Course.
Not your programming language? Set your preferences so we can display relevant code examples
using System;
using Phidget22;
namespace DiceRoll
{
class Program
{
static void Main(string[] args)
{
//Create
Accelerometer accelerometer = new Accelerometer();
//Open
accelerometer.Open(1000);
//Use your Phidgets
while (true)
{
//Get acceleration values
double x = accelerometer.Acceleration[0];
double y = accelerometer.Acceleration[1];
double z = accelerometer.Acceleration[2];
//calculate the magnitude of the acceleration
double totalAccel = Math.Sqrt(x * x + y * y + z * z);
//compare magnitude to a threshold value
if (totalAccel > 3.0)
{
Console.WriteLine("Shaking");
}
System.Threading.Thread.Sleep(150);
}
}
}
}
Write Code (Swift)
Copy the code below into a new Swift project. If you need a reminder of how to do this, revisit the Getting Started Course.
Not your programming language? Set your preferences so we can display relevant code examples

import Cocoa
//Add Phidget Library
import Phidget22Swift
class ViewController: NSViewController {
@IBOutlet weak var diceLabel: NSTextField!
//Create
let accelerometer = Accelerometer()
override func viewDidLoad() {
super.viewDidLoad()
do{
//Subscribe to event
let _ = accelerometer.accelerationChange.addHandler(onAccelerationChange)
//Open
try accelerometer.open()
}catch{
print(error)
}
}
func onAccelerationChange(sender:Accelerometer, data: (acceleration:[Double], timestamp: Double)){
DispatchQueue.main.async {
//Get acceleration values
let x = data.acceleration[0]
let y = data.acceleration[1]
let z = data.acceleration[2]
//calculate the magnitude of the acceleration and print it
let totalAccel = (x*x + y*y + z*z).squareRoot()
//compare magnitude to threshold
if(totalAccel > 3.0){
self.diceLabel.stringValue = "Shaking"
}
else{
self.diceLabel.stringValue = "Not Shaking"
}
}
}
}
Run your program. You will see the text Shaking when you shake your Phidget Accelerometer with enough force.>
Practice
- Modify the threshold value and see how it changes the behavior of your code. For example, if you modify the value from 3.0 to 5.0, what does this mean?
- When the user has shaken the "dice", generate a random number between 1 and 6 and print the results to the console.
Hint: use the following code to generate a random number.
//Math.random() generates a random double between 0 and 1
// Multiple by 5 to get a random number between 0 and 5
// Add 1 to get a random number between 1 and 6
//Math.round to round the number to a integer
Math.round(Math.random()*5+1);
Hint: use the following code to generate a random number.
import random
random.randint(1,6)
Hint: use the following code to generate a random number.
Random rnd = new Random();
rnd.Next(1, 6);
Hint: use the following code to generate a random number.
Int.random(in: 1..<7)