Slingshot Express Mac OS
The Technology The slingshot emulates a USB mouse, so it really is a plug 'n' play. It translates the physical use of the slingshot in to appropriate mouse controls. With a real slingshot, you tilt the slingshot. Find a great collection of MacBooks at Costco. Enjoy low warehouse prices on name-brand MacBooks products. Slingshot; Technical Support; Email; How to set up Slingshot email on your computer or device. April 28, 2021 05:32. Firstly, you need to identify which program you're trying to use to access your email. Common programs include Microsoft Outlook, Mail, or Mac Mail. W,S - Control the height of your slingshot. A,D - Controls the angle you fire at. Left Click - Fling your delivery man. How long you hold determines the power of your shot. Right Click - While in the air throw your package. The longer you hold the more powerful your throw. Please remember to rate the game and comment your best score!!
Table of Contents
See also
- New mbed NXP LPC11U24
- mbed USB Device Libraries
- mbed Frontpage Tour
- How to order an mbed
Apparently, Angry Birds is played for 300 million minutes a day. With that amount of dedication, isn't it about time it became a real sport?!
USB Slingshot¶
To make Angry Birds a real sport, we need real equipment. So the idea for this hack was to build a real slingshot as a USB peripheral to play Angry Birds.
It was inspired as a demo to show off how easy it is becoming to build your own USB devices, thanks to the emergence of ultra-low-cost 32-bit microcontrollers that include USB. There is more about this industry trend and our new mbed NXP LPC11U24 board that we designed to open up these opportunities and enable very productive prototyping of USB devices:
The resulting hack means fusing electronics, microcontrollers, software and, umm..., carpentry!
The Technology¶
The slingshot emulates a USB mouse, so it really is a plug 'n' play. It translates the physical use of the slingshot in to appropriate mouse controls.
With a real slingshot, you tilt the slingshot and stretch sling. The idea to measure these was using:
- An accelerometer - this can measure the tilt by tracking the gravity vector (which way is down!)
- A rubber stretch sensor - this can be used as the sling, and measure how much it is stretched
That is the input, but to play Angry Birds, you actually click on the bird, then drag to the launch angle and strength you want, then release. This means we have to translate the real slingshot movements in to a series of different mouse movements.
For example, this means translating starting to stretch the slingshot to a mouse to click and hold, whilst the vector of the stretch determined by the angle of sling and how far it is stretched translates to mouse movements relative to where we started. More on the maths later...
Ingredients to build a USB Slingshot¶
The main brain is the new mbed NXP LPC11U24, as that is designed for prototyping USB devices:
It is packaged in a DIP prototyping form-factor, uses the NXP LPC11U24 MCU based on a 32-bit ARM Cortex-M0 core, and includes I2C, SPI, UART and ADC interfaces. It is supported by the mbed online development tools and developer website, mbed C/C++ SDK, and a full set of USB libraries; USB Mouse, Keyboard, HID, Serial, MIDI, MSC and Audio classes, that make reliably creating a new USB device a matter of a few lines of code!
This is great as it makes emulating the mouse nice and easy!
- See USBMouse Handbook Page
The rest of the ingredients are:
3-axis Accelerometer | Stretch Sensor | USB B connector | Handcrafted Slingshot |
---|
Prototype¶
In order to test if the project was possible, a first prototype was made on breadboard.
Hardware¶
The hardware is based on the following connections to the mbed NXP LPC11U24:
- The accelerometer is connected over SPI to the mbed
- The stretch sensor is a resistor as part of a voltage-divider circuit, read on p15 (AnalogIn)
- The USB Type B connector is connected to the mbed D+/D- pins, and also provides the power supply to the mbed
Mac Os Catalina
Schematics | First Prototype |
---|
Here is the pinout table:
ADXL345 Signal Name | mbed pin |
---|---|
Vcc | Vout |
Gnd | Gnd |
SDA | p5 |
SDO | p6 |
SCL | p7 |
CS | p8 |
Stretch sensor | mbed pin |
One extremity | Vout |
The other | p15 |
USB connector | mbed pin |
Vcc | Vin |
Gnd | Gnd |
D+ | D+ |
D- | D- |
Software¶
The software to test the feasibility is kept simple; the objective is to observe all different elements of the project working together.
AngryBirdsFeasibility
Test Slingshot
Last commit 18 Jan 2012 by
The experiments to see that it works:
- move the breadboard
- pull the stretch sensor
- move and pull the stretch sensor at the same time
- observe that the mouse is moving on the screen
So we have proven control! Next step is to make it in to a real slinghot!
The Real Slingshot!¶
Hardware¶
The slingshot was crafted by Chris Jarratt, from a branch found in Epping Forest, London! This is the structure in to which we embedded all the electronics.
The wiring is exactly the same as the first prototype, just that the mbed will be embedded in to the real slingshot this time.
Diagram | A handcrafted slingshot | Wires embedded in the slingshot |
---|---|---|
Final slingshot | Inside the slingshot with the accelerometer | Mbed USB slingshot |
Finally, combining all different parts we get our mbed USB Slingshot!
Software¶
How does it all work ?¶
The first question concerns the USBMouse. The options are an absolute or relative mouse. The answer is quite simple because the mbed doesn't know the absolute position of the bird on the screen, so the natural solution is a relative mouse (like a normal mouse) - position the cursor over the mouse, then the slingshot takes over and moves relative to the starting point based on interpreting the manipulations of the slingshot.
Slingshot Express Mac Os X
Slingshot Angle¶
The angle of the slingshot is the main thing we need to calculate the direction of the vector to apply to the mouse position.
We simply use the fact that we know gravity is causing a 1G force on the accelerometer, and use that to calculate the angle of the slingshot with some simple trigonometry.
Mouse Movement¶
The mouse position is then calculated based on the vector offset calculated using the angle of the slingshot, and the stretch sensor reading.
Because we send relative movements, we actually calculate the desired position, then work out the difference from where we know we are and send that.
Algorithm¶
The general idea for how it works for a complete firing comes in a few steps:
WAITING
- We start by WAITING, with the cursor over the bird - regardless of how we tilt the slingshot, nothing happens
- When we see a strong enough stretch, we consider that the start of AIMING, and click and hold the left mouse button
AIMING
- We then continuously calculate a vector based on the angle of the slingshot, and the stretch of the sling
- This is translated in to relative mouse movements with some more trigonometry, and the mouse is moved as appropriate
- As we are positioning based on a vector but sending relative mouse positions, we keep a note of the accumulated movements so we can send the difference each time
FIRING
- We enter FIRING when we see a fast reduction in the sling stretch
- At this point we release the mouse button, then return the mouse back to the starting position, ready for the next throw!
Code¶
The whole code is fairly concise, so here it is in full:
Mouse Setup¶
To use it, simply position the mouse cursor over the bird, and then start using the slingshot!
The cursor is not coming back at the initial position
On Windows (and probably on Linux or Mac OS), the cursor is not coming back exactly at the same initial position after a firing. To solve this issue, I modified this:
- go into the Control Panel
- Hardware and Sound
- Mouse in the devices and printers section
- in the pointer options tab, deselect Enhance pointer precision
- You can also reduce the cursor speed
In Action¶
Turns out it works! Here it is in action!
So now you can kill pigs with a real USB Slingshot, by combining the two totally different worlds of carpentry and embedded systems!
Hopefully this gives you all the instructions you need to build your own, or any other USB devices you need to design!
Thanks¶
Thanks to everyone who helped us to make this possible!
- Sparkfun for the Accelerometer
- Adafruit for the Stretch Sensor
- RS for the USB connector
- NXP for the ARM Cortex-M0 MCU used on the mbed NXP LPC1U24
- Chris Jarrett for crafting the wooden slingshot
Making the Video¶
Here is a little behind the scenes on how we put together the video one Wednesday afternoon. Not really something we'd done before, so a lot of making it up as we went along :)
Prototype your own USB devices with the new mbed NXP LPC11U24!¶
The LPC11U24 is one of the new ultra-low-cost 32-bit ARM microcontrollers entering the market that open up all sorts of opportunities for building USB devices. The times of requiring in-depth knowledge of the USB protocol, fiddling with complex software stacks and fighting 8 or 16-bit MCUs is over. Or being constrained by USB bridge chips. These chips only cost $1-2 in volume!
Using the mbed tools and the set of USB libraries, prototyping these devices should be really fast too!
For a look at all the USB Device types that work out-of-the-box, take a look at:
- /handbook/USBMouse - Emulate a USB Mouse with absolute or relative positioning
- /handbook/USBKeyboard - Emulate a USB Keyboard, sending normal and media control keys
- /handbook/USBMouseKeyboard - Emulate a USB Keyboard and a USB mouse with absolute or relative positionning
- /handbook/USBHID - Communicate over a raw USBHID interface, great for driverless communication with a custom PC program
- /handbook/USBMIDI - Send and recieve MIDI messages to control and be controlled by PC music sequencers etc
- /handbook/USBSerial - Create a virtual serial port over the USB port. Great to easily communicate with a computer.
- /handbook/USBAudio - Create a USBAudio device able to receive audio stream from a computer over USB.
- /handbook/USBMSD - Generic class which implements the Mass Storage Device protocol in order to access all kinds of block storage chips
These pages should show how easy it is to prototype low-cost USB devices, so you can concentrate on inventing the applications. Looking forward to seeing what devices you develop!
See also:
- mbed NXP LPC11U24 prototyping board
- mbed Developer Site homepage and tour
- Join the mbed Mailing List for updates and occasional giveaways
The demo was inspired by the emergence of ultra-low-cost 32-bit microcontrollers that include USB, and we wanted to show off how easy it can be to prototype them to take advantage of this trend. For more about this and why we built the new mbed NXP LPC11U24 board, take a look at:
Slingshot is a Mac OS X style Launchpad forUbuntu and DebianLinux, much like JumpPad is for Windows. Slingshot can be integrated to the Unity Launcher to quickly access files and applications. See the below instructions to install and create a Unity launcher for Slingshot.
You can install Slingshot from the following Terminal commands:
Note: This PPA, is a bit unstable at the moment and might cause issues. It is advised to backup your system just in case you require reverting to the old changes. To create a Unity launcher, enter the following command in the Terminal.
Mac Os Versions
Then enter the following in the text pad which will pop-up. You can replace the path “Icon=/usr/share/icons/logo-black.svg” with the path where you might have an icon file for the launcher.
[Desktop Entry]
Version=1.0
Type=Application
Slingshot Express Mac Os Pro
Terminal=false
Exec=slingshot
Name=Slingshot
Icon=/usr/share/icons/logo-black.svg
You can navigate to /usr/share/applications/ to drag and drop the icon to the Unity Launcher for making a shortcut. If you do not have a file to replace the icon, it will appear as a blank launcher icon (as shown in the below screenshot).
You can find out more about Slingshot from the Launchpad.