TinyCircuits

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - mjculross

Pages: [1] 2
1
User Projects / Code Examples / Re: GPS "Pointer" with servos
« on: February 07, 2019, 10:26:00 PM »
Not sure about the tilt part, but would the pan part correspond to the "bearing" in this distance & bearing calculation:

Algorithms for calculating distance & bearing between two points, taken from the following URL:

   http://williams.best.vwh.net/avform.htm

NOTE: These formulas assume the following:

   North latitudes and West longitudes are treated as positive
   South latitudes and East longitudes negative

   The arguments given to cos, sin, and arctan are all in RADIANS

The great circle distance d between two points, where point 1 has coordinates {lat1,lon1} and point 2 has coordinates {lat2,lon2} is given by the following:

   d = acos (sin (lat1) * sin (lat2) + cos (lat1) * cos (lat2) * cos (lon1 - lon2))

The bearing, tc1, looking from point 1 to point 2, is given by the following (NOTE: This formula fails if point 1 is located at one of the two poles).

   IF sin (lon2 - lon1) < 0
      tc1 = acos ((sin (lat2) - sin (lat1) * cos (d)) / (sin (d) * cos (lat1)))
   ELSE
      tc1 = 2 * pi - acos ((sin (lat2) - sin (lat1) * cos (d)) / (sin (d) * cos (lat1)))
   ENDIF

Where the following applies:

   asin (x) = 2 * atan (x / (1 + sqrt (1 - x * x)))

   acos (x) = 2 * atan (sqrt ((1 - x) / (1 + x)))       [ for x >= 0        ]
   acos (x) = pi - 2 * atan (sqrt ((1 + x) / (1 - x)))  [ for x < 0         ]

   atan2 (y, x) = atan (y / x)                          [ for x > 0         ]
   atan2 (y, x) = atan (y / x) + pi                     [ for x < 0, y >= 0 ]
   atan2 (y, x) = pi / 2                                [ for x = 0, y > 0  ]
   atan2 (y, x) = atan (y / x) - pi                     [ for x < 0, y < 0  ]
   atan2 (y, x) = -pi / 2                               [ for x = 0, y < 0  ]
   atan2 (0, 0) is undefined and should give an error.

Mark J Culross
KD5RXT

2
User Projects / Code Examples / Re: Virtual Pet
« on: January 20, 2019, 04:33:46 PM »
You should consider using the TinyDuino (processor...get the LiPo battery version for onboard battery management) with the TinyScreen+ (96x64 pixel full-color display) as a minimum, which could be combined with the prototyping board for buttons/speaker/rumble/etc.  For future BT connectivity, the BTLE module could also be added to the stack.  Personally, I have found the TinyDuino/TinyScreen+ combo to be very easy to program.  Look for the excellent tutorials to get you started & good luck !!  Mark J Culross KD5RXT

3
Tiny Arcade / Re: classic games ?
« on: December 29, 2018, 06:36:34 PM »
See the following for details on the newly posted version 1.1 of TinyQuix:

   http://forum.tinycircuits.com/index.php?topic=1986.msg4055#msg4055


Enjoy !!

Mark J Culross
KD5RXT

4
This is a notification that I've posted TinyQUIX version 1.1, the source & binaries of which can be found in a folder of its own on my Google Drive (in the same place as previously indicated for TinySimon & TinySNAKE) at:

   https://drive.google.com/open?id=1Pv0LDGhe3uLNJvhF7-aSdTOSZMYe8hbx

Version 1.1 corrects the movements of player & sparx to only allow moving onto a border space where the border has at least one empty space adjacent.  In addition, player & sparx are randomly placed on any border at the start of a cycle.  Four new info screens that can be accessed from the splash screen have been added.

Here are the contents of the Readme.txt file:

 TinyQuix for the PocketArcade

    version 1.1 dated 12/28/2018 @1710
    written by Mark J Culross, KD5RXT (kd5rxt@arrl.net)

 The source & binaries (suitable for SD card loading) for TinyQuix is available in its own folder on my
    Google Drive (in the same place as for TinySimon & TinySNAKE):
       https://drive.google.com/open?id=1Pv0LDGhe3uLNJvhF7-aSdTOSZMYe8hbx

 Using the TinyScreen+ display to allow a player to play a loose implementation of the traditional Qix game

 Uses the TinyCircuits libraries for its display output & digital joystick input

 Configure/build to run in the PocketArcade Menu System as follows:
    Tools : Board : "Tiny Arcade"
    Tools : Build Options : "Binary for SD Card"
    Sketch : Export compiled Binary
    [ rename the binary to "Tiny Quix.bin" & place in "Tiny Quix" folder ]

 Configure/build to run standalone on the PocketArcade as follows:
    Tools : Board : "Tiny Arcade"
    Tools : Build Options : "Default"
    Sketch : Upload (after setting Tools/Port as appropriate)

 TODO:
    - limit the length of the quix

 Controls:
    - pressing the d-pad up/down at either the splash screen or any of the info screens shows more info screens
    - pressing the d-pad left/right at either the splash screen or any of the info screens adjusts the brightness
    - pressing the left button at the splash screen starts the game in player mode
    - allowing the 10-second timer on the splash screen to expire starts the demo mode
    - pressing the right button either while on the splash screen or any of the info screens or when in demo mode
      enters/exits the "debug" screen
       - pressing the up & down d-pad keys moves between debug controls
       - pressing the left & right d-pad keys while changing the number of lives causes changes by one
       - pressing the left button while changing the number of lives (with the d-pad) causes changes by ten
       - pressing the left button for any other debug control toggles that control on/off
    - the d-pad keys are used to move in player mode (player stops when no d-pad keys are pressed)

 Comparison to the original Qix game (purists take heed):

 Original Qix implementation:

    1) the Qix is multiple lines
    2) as the game progresses, the number of qix increases
    3) as the game progresses, the number of sparx increases
    4) as the game progresses, supersparx (which can kill the player) move around in the unfilled space
    5) the player & the sparx can only travel on borders that touch at least one empty space
    6) scoring is based upon the increase in the amount of space filled by the newly enclosed area(s)
    7) scoring includes a 1000 point bonus for each percent of filled space > 75%
    8) the player can move fast or slow, & space filled while moving slow scores higher points
    9) pressing a button while moving causes the player to move "slow"
   10) when moving, stix (temp lines) must have at least one space between them (to allow "filled" space)
   11) there is an initial animation when placing the player on the border

 TinyQuix implementation:

    1) the TinyQuix is always only a single line
    2) as the game progresses, there is always only a single TinyQuix
    3) as the game progresses, the number of sparx is always two
    4) there are no supersparx
    5) the player can freeze a sparx by closing a rectangle which leaves it no valid moves; also,
       the player can freeze itself by closing a rectangle whish leaves it no valid moves; in that
       case, the rectangle is closed/filled, but the player dies !!
    6) scoring is based upon the total amount of space filled each time new space is enclosed
    7) scoring includes a bonus for each percent of filled space > 75%
    8) the player can only move fast
    9) the buttons are only used to start the game (left button) & to enter/exit "debug" (right button)
   10) when moving, stix (temp lines) can be adjacent; this space will only be closed when another valid
       rectangle (with space to be filled) is closed; as long as the adjacent stix have not been
       closed, they remain vulnerable to collision by the TinyQuix, which kills the player
   11) there is only an animation when the player is killed


 NOTES:
    - the player's move generator in demo mode is very dumb, since it employs absolutely no offensive
      or defensive logic of any kind - it is purely semi-random !!
    - a score exceeding 100000 is signified with a red "+" displayed next to the word "Score"

 
Enjoy !!

Mark J Culross
KD5RXT

P.S. Bug reports & comments are both still encouraged & appreciated.  MJC

5
Tiny Arcade / Re: classic games ?
« on: December 23, 2018, 09:29:24 AM »
See the following for details on a new & simple implementation of TinyQuix:

   http://forum.tinycircuits.com/index.php?topic=1986.0

Enjoy !!

Mark J Culross
KD5RXT

6
User Projects / Code Examples / Simple implementation of TinyQuix
« on: December 23, 2018, 08:06:17 AM »
I was recently re-inspired by Ben Rose's interest in adding new games to be included in the ZIPfile distribution, so I have tackled the simple implementation of yet another classic game: TinyQuix is now available (so named in an attempt to keep copyright concerns at bay as much as possible).  The source & binaries (suitable for SD card loading) for the initial release of TinyQuix is available in its own folder on my Google Drive in the same place as previously indicated for TinySimon & TinySNAKE:
   https://drive.google.com/open?id=1Pv0LDGhe3uLNJvhF7-aSdTOSZMYe8hbx

Here's the run-down:
 
   TinyQuix for the PocketArcade
      version 1.0 dated 12/23/2018 @0605
      written by Mark J Culross, KD5RXT (kd5rxt@arrl.net)
 
   Using the TinyScreen+ display to allow a player to play a loose
      implementation of the traditional Qix game
 
   Uses the TinyCircuits libraries for its display output & digital
      joystick input
 
   Configure/build to run in the PocketArcade Menu System as follows:
      Tools : Board : "Tiny Arcade"
      Tools : Build Options : "Binary for SD Card"
      Sketch : Export compiled Binary
      [ rename the binary to "Tiny Quix.bin" & place in "Tiny Quix" folder ]
 
   Configure/build to run standalone on the PocketArcade as follows:
      Tools : Board : "Tiny Arcade"
      Tools : Build Options : "Default"
      Sketch : Upload (after setting Tools/Port as appropriate)
 
   TODO:
      - limit the length of the quix
      - limit player border movement only to borders that have at least one empty space nearby
 
   Controls:
      - pressing the left button at the splash screen starts the game in player mode
      - allowing the 10-second timer on the splash screen to expire starts the demo mode
      - pressing the right button either while on the splash screen or when in demo mode
        enters/exits the "debug" screen
         - pressing the up & down d-pad keys moves between debug controls
         - pressing the left & right d-pad keys while changing the number of lives causes changes by one
         - pressing the left button while changing the number of lives (with the d-pad) causes changes by ten
         - pressing the left button for any other debug control toggles that control on/off
      - the d-pad keys are used to move in player mode (player stops when no d-pad keys are pressed)
 
   Comparison to the original Qix game (purists take heed):
 
   Original Qix:
 
      1) the Qix is multiple lines
      2) as the game progresses, the number of qix increases
      3) as the game progresses, the number of sparx increases
      4) as the game progresses, supersparx (which can kill the player) move around in the unfilled space
      5) the player & the sparx can only travel on borders that touch at least one empty space
      6) scoring is based upon the increase in the amount of space filled by the newly enclosed area(s)
      7) scoring includes a 1000 point bonus for each percent of filled space > 75%
      8) the player can move fast or slow, & space filled while moving slow scores higher points
      9) pressing a button while moving causes the player to move "slow"
     10) when moving, stix (temp lines) must have at least one space between them (to allow "filled" space)
     11) there is an initial animation when placing the player on the border
 
   TinyQuix:
 
      1) the TinyQuix is always only a single line
      2) as the game progresses, the number of qix increases
      3) the number of sparx is always two
      4) there are no supersparx
      5) the player & the sparx can travel on any borders anywhere
      6) scoring is based upon the total amount of space filled each time new space is enclosed
      7) scoring includes a bonus for each percent of filled space > 75%
      8) the player can only move fast
      9) the buttons are only used to start the game (left button) & to enter/exit "debug" (right button)
     10) when moving, stix (temp lines) can be adjacent
     11) there is only an animation when the player is killed
 
Enjoy !!

Mark J Culross
KD5RXT

P.S. Bug reports & comments are both encouraged & appreciated.  MJC

7
Found some time over the Thanksgiving holiday for some more refinements, so the source & binaries (suitable for SD card loading) for "TinySNAKE" have been updated.  The TinySNAKE "Demo Mode" now runs after a 10-second countdown (as long as START was not pressed) on the initial splash screen.  I shortened the length of the "beeps" to alleviate an occasional hang-up problem.  I spent most of the time improving the algorithm (again) for hunting apples in demo mode...writing the original game was a breeze, compared to the interesting challenge of writing the demo mode, or as one of my game collector friends calls it, "attract mode" from the arcade cabinet era, operations !!

As before, these updates can be found in their respective folders under the "PocketArcade projects" folder in my Google drive at the following URL: https://drive.google.com/open?id=1Pv0LDGhe3uLNJvhF7-aSdTOSZMYe8hbx

8
The source & binaries (suitable for SD card loading) for "TinySNAKE" & "TinySimon" have been updated.  Both now include rough-cut title screen videos.  TinySNAKE now includes a "Demo Mode" that runs after 5-seconds of no activity (START was not pressed) on the initial splash screen.

These updates can be found in their respective folders under the "PocketArcade projects" folder in my Google drive at the following URL: https://drive.google.com/open?id=1Pv0LDGhe3uLNJvhF7-aSdTOSZMYe8hbx

9
Tiny Arcade / Re: Ideas for the Tiny Arcade
« on: November 20, 2018, 08:55:16 PM »
Updated versions are now available at the link described earlier.  The new versions include Ben Rose's recommendation for fixing the inconsistent volume when calling tone().
(see http://forum.tinycircuits.com/index.php?topic=1960.msg3972#msg3972 for discussion of the original problem)

Mark J Culross
KD5RXT

I had some free time this weekend, so I took a stab at simple implementations of a couple of classic games.  The source & binaries (suitable for SD card loading) for "TinySNAKE" & "TinySimon" (no title screen video yet for either, but they do still show up in the initial menu system) can be found in their respective folders under the "PocketArcade projects" folder in my Google drive at the following URL: https://drive.google.com/open?id=1Pv0LDGhe3uLNJvhF7-aSdTOSZMYe8hbx

Enjoy !!

Mark J Culross
KD5RXT

10
Tiny Arcade / Re: classic games ?
« on: November 20, 2018, 08:54:09 PM »
Updated versions are now available at the link described earlier.  The new versions include Ben Rose's recommendation for fixing the inconsistent volume when calling tone().
(see http://forum.tinycircuits.com/index.php?topic=1960.msg3972#msg3972 for discussion of the original problem)

Mark J Culross
KD5RXT

I had some free time this weekend, so I took a stab at simple implementations of a couple of classic games.  The source & binaries (suitable for SD card loading) for "TinySNAKE" & "TinySimon" (no title screen video yet for either, but they do still show up in the initial menu system) can be found in their respective folders under the "PocketArcade projects" folder in my Google drive at the following URL: I had some free time this weekend, so I took a stab at simple implementations of a couple of classic games.  The source & binaries (suitable for SD card loading) for "TinySNAKE" & "TinySimon" (no title screen video yet for either, but they do still show up in the initial menu system) can be found in their respective folders under the "PocketArcade projects" folder in my Google drive at the following URL: https://drive.google.com/open?id=1Pv0LDGhe3uLNJvhF7-aSdTOSZMYe8hbx

Enjoy !!

Mark J Culross
KD5RXT

Enjoy !!

Mark J Culross
KD5RXT

11
Updated versions are now available at the link described earlier.  The new versions include Ben Rose's recommendation for fixing the inconsistent volume when calling tone().
(see http://forum.tinycircuits.com/index.php?topic=1960.msg3972#msg3972 for discussion of the original problem)

Mark J Culross
KD5RXT

12
General Discussion / Re: volume not consistent when using tone()
« on: November 20, 2018, 08:46:59 PM »
Ben:

I added the recommended DAC disable command & audio is consistently loud, even after restart.

Thanks again !!

Mark J Culross
KD5RXT

13
General Discussion / Re: volume not consistent when using tone()
« on: November 20, 2018, 04:26:49 PM »
Ben:

Thanks for the reply.  I will try your recommended fix(es) this evening & let you know how it goes.

This definitely falls in the "woulda never guessed that" category !!  If I had used an analog read from an unconnected pin to seed my random number generator (instead of using the random amount of time before the user presses start like I do now), I likely would never have experienced this.  Funny how technology goes sometimes !!

Thanks again !!

Mark J Culross
KD5RXT

P.S. is there still an interest in including additional games into the SDcard collection ZIPfile ??

14
Tiny Arcade / Re: How big is the TinyArcade screen size (In pixels)
« on: November 12, 2018, 12:59:10 AM »
The TinyArcade uses the TinyDisplay, which is 96 pixels wide by 64 pixels tall, & is capable of displaying 16-bit color.

15
I recently ordered & received a PocketArcade kit.  After downloading & installing the ZIP collection of games, I was inspired to try my hand at implementing my own simple versions of TinySNAKE (aka Nibbles) & TinySimon (aka memory).  The source & binaries (suitable for SD card loading) for "TinySNAKE" & "TinySimon" (no title screen video yet for either, but they do still show up in the initial menu system) can be found in their respective folders under the "PocketArcade projects" folder in my Google drive at the following URL: https://drive.google.com/open?id=1Pv0LDGhe3uLNJvhF7-aSdTOSZMYe8hbx

Enjoy !!

Mark J Culross
KD5RXT


Pages: [1] 2