FlexBook / Mbed 2 deprecated FlexBook171204a

Dependencies:   SDFileSystem app epson mbed msp430 pl tests

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers pagedice.cpp Source File

pagedice.cpp

00001 //
00002 // Filename: pagedice.cpp
00003 //
00004 // Flexbook page for page A2.
00005 //
00006 
00007 #include "pagedice.h"
00008 #include "pageoled.h"
00009 #include "hal.h"
00010 #include "mcp23s17.h"
00011 
00012 #include "log.h"
00013 
00014 #include <iostream>
00015 
00016 namespace Flexbook {
00017 
00018 PageDice::PageDice()
00019 : pageoled()
00020 {
00021     Log("Creating PageDice");
00022 }
00023 
00024 PageDice::~PageDice()
00025 {
00026     Log("Deleting PageDice");
00027 }
00028 
00029 uint8_t PageDice::DicePoll()
00030 {
00031     DigitalIn dice_D(p23);
00032     DigitalIn dice_C(p24);
00033     DigitalIn dice_B(p25);
00034     uint8_t dicevalue = 0;
00035     if (dice_D) dicevalue =+ 1;
00036     if (dice_C) dicevalue =+ 2;
00037     if (dice_B) dicevalue =+ 4;
00038     return(dicevalue);
00039 }
00040 
00041 
00042 void PageDice::HandlePageActions()
00043 {
00044     DigitalOut led1(LED1); DigitalOut led2(LED2);
00045     int dicenr = 1;
00046     if (HAL::GetMCP23S17().Read(HAL::GPIOA) == 0xF7)
00047     {
00048         led1 = 1;
00049         while (HAL::GetMCP23S17().Read(HAL::GPIOA) == 0xF7)
00050         {
00051             //write the value of dicenr to the digit on OLED
00052             pageoled.Write(pageoled.Translate(0,0,0,0,0,dicenr));
00053             //pageoled.DiceRoll(dicenr);
00054             wait(0.1);
00055             dicenr = dicenr + 1;
00056             if (dicenr == 7) dicenr = 1;
00057         }
00058         led1=0;
00059         //finger is now removed from the touch electrode
00060         led2=1;
00061         for (int i=30; i>0; i--)
00062         {
00063             //write the value of dicenr to the digit on OLED
00064             pageoled.Write(pageoled.Translate(0,0,0,0,0,dicenr));
00065             //pageoled.DiceRoll(dicenr);
00066             wait(4/(i+3));      //change count slow-down formula to suit
00067         }
00068         led2 = 0;
00069     }
00070 }
00071 
00072 /*
00073 void PageDice::HandleDice()
00074 {
00075     DigitalOut led1(LED1); DigitalOut led2(LED2);
00076     int dicenr = 1;
00077     //sensordata.dice = 1;
00078     if (HAL::GetMCP23S17().Read(HAL::GPIOA) == 0xF7)
00079     {
00080         led1 = 1;
00081         while (HAL::GetMCP23S17().Read(HAL::GPIOA) == 0xF7)
00082         {
00083             //write the value of dicenr to the digit on OLED
00084             //sensordata.dice = dicenr;
00085             pageoled.Write(pageoled.Translate(0,0,0,0,0,dicenr));
00086             wait(0.05);
00087             dicenr = dicenr + 1;
00088             if (dicenr == 7) dicenr = 1;
00089         }
00090         led1=0;
00091         //finger is now removed from the touch electrode
00092         led2=1;
00093         for (int i=10; i>0; i--)
00094         {
00095             //write the value of dicenr to the digit on OLED
00096             dicenr = dicenr + 1;
00097             if (dicenr == 7) dicenr = 1;
00098             //sensordata.dice = dicenr;
00099             pageoled.Write(pageoled.Translate(0,0,0,0,0,dicenr));
00100             wait(4/(i+1));      //change count slow-down formula to suit
00101             //wait(0.3);
00102         }
00103         led2 = 0;
00104         //sensordata.dice = dicenr;
00105     }
00106 }
00107 */
00108 
00109 } // End Flexbook namespace.
00110 
00111 
00112