Framework for an Etch A Sketch program

Dependencies:   mbed C12832 MMA7660

Committer:
chtjhai
Date:
Sat Nov 16 21:19:33 2019 +0000
Revision:
3:68eda0b14b6e
Parent:
2:c2ebc7fa80eb
Framework for an Etch A Sketch program

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mpetovello 0:a19771db916c 1 #include "mbed.h"
mpetovello 0:a19771db916c 2 #include "MMA7660.h" // accelerometer sensor
mpetovello 0:a19771db916c 3 #include "C12832.h" // LCD display
chtjhai 3:68eda0b14b6e 4
chtjhai 3:68eda0b14b6e 5
mpetovello 0:a19771db916c 6 int main()
mpetovello 0:a19771db916c 7 {
mpetovello 2:c2ebc7fa80eb 8 // create an accelerometer object
mpetovello 2:c2ebc7fa80eb 9 MMA7660 accelerometer(p28, p27);
mpetovello 2:c2ebc7fa80eb 10
mpetovello 2:c2ebc7fa80eb 11 // LCD display
mpetovello 2:c2ebc7fa80eb 12 C12832 lcd(p5, p7, p6, p8, p11);
mpetovello 2:c2ebc7fa80eb 13
mpetovello 2:c2ebc7fa80eb 14 // joystick
mpetovello 2:c2ebc7fa80eb 15 BusIn joystick(p15,p12,p13,p16);
mpetovello 2:c2ebc7fa80eb 16
mpetovello 2:c2ebc7fa80eb 17 // LEDs
mpetovello 2:c2ebc7fa80eb 18 BusOut LEDs(LED1,LED2,LED3,LED4);
chtjhai 3:68eda0b14b6e 19
mpetovello 0:a19771db916c 20 // try to establish a connection with the accelerometer
mpetovello 0:a19771db916c 21 if( !accelerometer.testConnection() )
mpetovello 0:a19771db916c 22 {
mpetovello 0:a19771db916c 23 // turn on all LEDs (indicating an error state)
mpetovello 0:a19771db916c 24 LEDs = 0xf;
mpetovello 0:a19771db916c 25 return 0;
mpetovello 0:a19771db916c 26 }
chtjhai 3:68eda0b14b6e 27
mpetovello 0:a19771db916c 28 // clear the LCD
mpetovello 0:a19771db916c 29 lcd.cls();
mpetovello 0:a19771db916c 30
mpetovello 0:a19771db916c 31
mpetovello 0:a19771db916c 32 // TODO: Move to the centre of the LCD and set the corresponding pixel to black
mpetovello 0:a19771db916c 33 // We will call the current location the "active pixel"
chtjhai 3:68eda0b14b6e 34
mpetovello 0:a19771db916c 35
mpetovello 0:a19771db916c 36 // create an infinite loop (i.e., the program runs as long as the processor is on)
mpetovello 0:a19771db916c 37 while(1)
mpetovello 0:a19771db916c 38 {
mpetovello 0:a19771db916c 39 // TODO: Get the state/value of the joystick
chtjhai 3:68eda0b14b6e 40
mpetovello 0:a19771db916c 41
mpetovello 0:a19771db916c 42 // TODO: Determine the coordinates of the next active pixel based on joystick data
mpetovello 0:a19771db916c 43
mpetovello 0:a19771db916c 44
mpetovello 0:a19771db916c 45 // TODO: Set the next pixel to black
mpetovello 0:a19771db916c 46
chtjhai 3:68eda0b14b6e 47
mpetovello 0:a19771db916c 48 // TODO: Get the accelerometer measurements
chtjhai 3:68eda0b14b6e 49
chtjhai 3:68eda0b14b6e 50
mpetovello 0:a19771db916c 51 // TODO: Check if the screen should be cleared based on the accelerometer
mpetovello 0:a19771db916c 52 // measurements, and if so, clear the screen but don't move the active
mpetovello 0:a19771db916c 53 // pixel.
mpetovello 0:a19771db916c 54 //
mpetovello 0:a19771db916c 55 // NOTE: Although you may have an idea of how to do this, it may take some
mpetovello 0:a19771db916c 56 // "tuning" to get it to "feel right".
chtjhai 3:68eda0b14b6e 57
chtjhai 3:68eda0b14b6e 58
mpetovello 0:a19771db916c 59
mpetovello 0:a19771db916c 60 // wait a short period
mpetovello 0:a19771db916c 61 wait(0.1);
mpetovello 0:a19771db916c 62 }
mpetovello 0:a19771db916c 63
mpetovello 0:a19771db916c 64 // end of program
mpetovello 0:a19771db916c 65 return 0;
chtjhai 3:68eda0b14b6e 66 }