Hardware Use the Wiimote as a wireless PowerPoint Presenter

Renegade_R

Well-Known Member
OP
Member
Joined
Apr 21, 2004
Messages
1,660
Trophies
1
Location
Toronto, Ontario
XP
962
Country
Canada
Alright so I'm two things right now. First I am a gamer. Second, I am a student. Being a student in university has led me to make many presentations involving my laptop using PowerPoint. There were many times that I would have prefered to move around while making the presentation but I did not have that ability as I was chained to my laptop to press the next button.

Wireless presenters are generally $100+ so I built my wireless presenter around the functionality of a Logitech one. Actually it even exceeds it in functionality.

The script is written for GlovePIE. You will need the GlovePIE program as well as a compatible Bluetooth adapter. I am releasing this script on GBATemp first so consider it a GBATemp exclusive
wink.gif
*hopes to get on the front page*

Get GlovePIE here:
http://carl.kenner.googlepages.com/glovepie_download

The script has the capability to advance the slides, go back a slide, override the mouse, start the presentation, end the presentation, blackout and white out the screen and give a vibration at a certain time to warn you when you're low on time. I don't think everyone here has a use for it, but if any of you is the aspiring business student or make presentations regularly. I think you'll find this very useful. By walking around the room instead of being chained to a laptop gives you a big plus in your credibility.

Notes, you are free to use this code in any way you wish but please give credit to where its due. Thanks.

Code:
//PowerPoint Presentation Script
//by Jeffrey "Renegade_R" Lee
//

// ---== Rumble Time Reminder ==---

// SET TO 1 IF YOU WOULD WOULD LIKE A WARNING ON TIME REMAINING!!

var.timer = 0

// IF TIMER IS SET TO 1, HOW MANY ** MINUTES ** IS YOUR PRESENTATION ?

var.time = 10

// IT WILL WARN YOU WHEN YOU HAVE X MINUTES OF TIME LEFT (explanation below)

var.remain = 2

//Note, the timer will not activate if your remaining time is greater than
//your presentation time.

// ---== Comments ==---

//
//This program is designed to be a cheap alternative to a wireless presenter.
//
//The program has the capability to change slides, override the mouse, begin,
//end, Whiteout, Blackout and low time vibration warning.

//The vibration warning will vibrate the Wiimote briefly when you have a
//certain amount of time remaining.  For example, if you set var.time to 10
//and var.remain to 2, the Wiimote will warn vibrate at the 8 minute mark
//telling you that you have 2 minutes of the presentation remaining.  I would
//have built a timer into the Wiimote LEDs but...well, lets say I'd save you
//from distracting your audience, remember everyone loves blue lights.;)
//
//The timer will not activate until you hit the 'Home' button to start the
//presentation.
//
//I designed this script simply because I wish I had this program in my years
//at univeristy as it would have helped me a lot when I made presentations.

// ---== Controls ==---

//A Button -> Previous Slide
//B Trigger -> Next Slide (There was a lawsuit about this one actually :wink:)

//Home Button -> Being Slide Show
//1 + 2 Buttons -> End Slide Show

//1 Button -> White out the screen
//2 Button -> Black out the screen

//Arrows -> Move Mouse
//Minus Button -> Left Click
//Plus Button -> Right Click

//Remaining Time Warning

if var.timer = 1 and Wiimote.Home
var.timer = 0
var.time = var.time * 60
var.time = var.time * 1000

var.remain = var.remain * 60
var.remain = var.remain * 1000

var.time = var.time - var.remain

wait var.time ms
wiimote.Rumble = true
wait 300 ms
wiimote.Rumble = false
wait 300 ms
wiimote.Rumble = true
wait 300 ms
wiimote.Rumble = false
wait 300 ms
wiimote.Rumble = true
wait 300 ms
wiimote.Rumble = false
wait 300 ms
wiimote.Rumble = true
wait 300 ms
wiimote.Rumble = false
var.remain = 0
var.time = 0
endif

wiimote.Leds = 0

//Navigation Controls

N = wiimote.B
P = wiimote.A
B = wiimote.One
W = wiimote.Two

//Begin and End Slideshow

if wiimote.One and wiimote.Two
Keyboard.Escape = true
wait 1000 ms
Keyboard.Escape = false
endif

if wiimote.Home
Keyboard.F5 = true
wait 1000 ms
Keyboard.F5 = false
endif

//Mouse Movements

if wiimote.Up
mouse.y = mouse.y - 1/200
endif
if wiimote.Down
mouse.y = mouse.y + 1/200
endif

if wiimote.Right
mouse.x = mouse.x + 1/300
endif
if wiimote.Left
mouse.x = mouse.x - 1/300
endif

Mouse.LeftButton = wiimote.Minus
Mouse.RightButton = wiimote.Plus
 

Reepa

Active Member
Newcomer
Joined
Feb 3, 2007
Messages
25
Trophies
0
Website
Visit site
XP
95
Country
Have to say, thanks a lot for this!

Used it on my uni presentation this morning, and wanted to make a good impression to the visiting industry members.

The presentation was limited to 10 minutes exactly excluding questions, and this rumble feature saved my life, I knew to speed up the last couple of slides because of it, and managed to finish at 9:59!... literally "Thanks for listening"...RIIIIIIIING
wub.gif


Got a few odd looks while carrying the wiimote with me into the room though
tongue.gif
 

mikeosoft

Well-Known Member
Member
Joined
Dec 9, 2004
Messages
210
Trophies
0
XP
141
Country
United States
yo bro im a northeastern university business administration undergrad and i gotta thank you for this. it'll def prove worthy to me with all these presentations i have to give. thanks a lot man
 

Killian

Active Member
Newcomer
Joined
Jul 18, 2006
Messages
35
Trophies
0
XP
45
Country
If I installed this GlovePIE does it actually overwrite anything on the Wiimote. May sound a bit of a stupid question but I want to be sure of it before I have a go. Thanks for designing the code too, I'm sure it will come in handy many times for me!

Also, could you recommend a good compatible Bluetooth adapter?

Thanks in advance guys,

Killian
 

Renegade_R

Well-Known Member
OP
Member
Joined
Apr 21, 2004
Messages
1,660
Trophies
1
Location
Toronto, Ontario
XP
962
Country
Canada
I'm so glad you guys like it and have a use for it! Makes me feel good I can help my fellow student and business presenter alike!

I just made two presentations with my Wiimote PowerPoint script. My first one was for my capstone project. I have to say, the Wiimote increased the confidence of my entire project team and needless to say. We got an A!!
happy.gif


I also used the same Wiimote in a Communications presentation. I got a few funny looks but the professor was instantly impressed with the innovation I put into my presentation.

Killian: GlovePIE will not overwrite anything in the Wiimote. When you are done with the program, you can hit the Power button on the Wiimote and it will desyncronize and it will work with the Wii again. As for a Bluetooth adapter, I use this one:

http://www.dealextreme.com/details.dx/sku.754~r.39683342

Really cheap stuff. I think any new Bluetooth adapter will work great!
 

Cyan

GBATemp's lurking knight
Former Staff
Joined
Oct 27, 2002
Messages
23,749
Trophies
4
Age
46
Location
Engine room, learning
XP
15,662
Country
France
You had a good idea including rumble with estimated presentation time.

I already though about using a wiimote for powerpoint presentation, but with mouse pointing at the screen with a homemade censor.
I made one, and tried a script with mouse pointing, but it was a little slow to move the mouse on screen.
I tried to change the screen resolution in the script, but wasn't good.

I tried the wiimote with 2 IR spots, but maybe it's better at positionning the mouse with only one IR spot. (or 10IR 12V instead of 3V and 2 solo IR ^^; )

I used this script for the mouse, found on Wiili.org :


Code:
/* Direct Pointing Script With Wii-mote by Arianol v1.02 */

/* This PIE requires that you have either one or two IR points to aim the
 Wiimote at. The Wii Sensor Bar is best for the two-point setting. At any
 time you can point the Wiimote away from the light and Press 1 to move
 your cursor back to center-screen. Please set the value of the following
 variable equal to your number of infrared points (1 or 2). */
 var.irAmount = 1     Â// 1 OR 2
/* Set these numbers so that the cursor reaches the edges
 of your screen. (Defaults are both 1.1) */
 var.xStretch = 1.1
 var.yStretch = 1.1
/* Region where no motion is detected (in pixels). ÂHigher values make the
 cursor jumpier, but more precise if you have unsteady hands */
 var.deadzone = 0
/* Speed at which the cursor moves (Default 1/5). 1 is instantaneous. */
 var.Speed = 1/5

// Remote Controls
      Up = Wiimote.Up           // Up
     Down = Wiimote.Down          // Down
     Left = Wiimote.Left          // Left
    ÂRight = Wiimote.Right         Â// Right

Âmouse.LeftButton = Wiimote.A Â Â Â Â Â Â Â Â Â // Left Click
mouse.middlebutton = Wiimote.B Â Â Â Â Â Â Â Â Â // Click MouseWheel

mouse.RightButton = Wiimote.Minus        Â// Right Click
  ÂWindows + M = Wiimote.Home         // Show Desktop
     ÂEnter = Wiimote.Plus         // Enter
  Escape = Wiimote.Plus            // Escape

Windows + M = Wiimote.Home            // Show Desktop

// LED Lights
Wiimote.Led4 = four
Wiimote.Led3 = three
Wiimote.Led2 = two
Wiimote.Led1 = one

/* Code for Pointing Mechanism
 ---------------------------
      ÂDo Not Modify */

// If two dots are visible, find midpoint
If var.irAmount = 2 Then
 var.xPos = (Wiimote.dot1x + Wiimote.dot2x) / 2
 var.yPos = (Wiimote.dot1y + Wiimote.dot2y) / 2
Else
 var.xPos = Wiimote.dot1x
 var.yPos = Wiimote.dot1y
EndIf

If Wiimote.dot1vis Then        Â// If at least one IR point is visible
 // Locate Infrared Point(s)
 var.xPoint = (1-(round(var.xPos) / 1024)) * Screen.Width
 var.yPoint = ((round(var.yPos) / 768)) * Screen.Height
 // Create Virtual Grid System And Draw Point Coordinates
 var.xGrid = var.xPoint - (Screen.Width / 2)
 var.yGrid = var.yPoint - (Screen.Height / 2)
 // Find Cursor on Grid
 var.xCursor = Mouse.CursorPosX - (Screen.Width / 2)
 var.yCursor = Mouse.CursorPosY - (Screen.Height / 2)
 // Calculate Distance To Move
 var.xSpeed = (var.xGrid - var.xCursor)
 var.ySpeed = (var.yGrid - var.yCursor)
 // Calculate New Cursor Position
 If abs(var.xSpeed) > var.deadzone Then
  Âvar.xCursor = (var.xCursor + var.xSpeed * var.Speed) * var.xStretch
 EndIf
 If abs(var.ySpeed) > var.deadzone Then
  Âvar.yCursor = (var.yCursor + var.ySpeed * var.Speed) * var.yStretch
 EndIf
 // Move Cursor
 Mouse.CursorPosX = var.xCursor + (Screen.Width / 2)
 Mouse.CursorPosY = var.yCursor + (Screen.Height / 2)
 // Assign the One button
 Alt + Tab = Wiimote.One
ElseIf Pressed(Wiimote.One) Then    // If no IR point is visible
 // Move Cursor Back to Center
 Mouse.CursorPosX = Screen.Width / 2
 Mouse.CursorPosY = Screen.Height / 2
EndIf

// Debug
debug = 'Debug: Â Grid Coordinates: (' + var.xGrid + ', ' + var.yGrid + ')'
 

Renegade_R

Well-Known Member
OP
Member
Joined
Apr 21, 2004
Messages
1,660
Trophies
1
Location
Toronto, Ontario
XP
962
Country
Canada
I don't think GlovePIE is meant for mouse movements. It always seemed a bit slow when emulating the mouse. This is why I settled for the arrow button press in the end. Besides...in my communications class we were not allowed to point at the screen continuously
wink.gif


I think the Wiimote needs more IR lights to plot itself...perhaps that could increase sensitivity.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    SylverReZ @ SylverReZ: @Dumpflam, Report it or contact staff.