- function to test specific words? ENTER TONE TO PLAY, POUND TO CANCEL support custom words - formalize the function demo all words - function to demo tones - keywords that changes antenna, to A/B/toggle/random - keywords that change power, to lo/hi/toggle/random - keyword that chats time remaining before end of profile word work: add LOW add POWER add RANDOM add TOGGLE ? (or CHANGE is ok?) replace KILL with KILLED (KILLED is currently using KILL) add DIALATION (currently using TIME) add ENTRY (currently using EDIT) add RECORD(ING) (currently using TONE) replace ARE with R add NEVER (currently using NUMBER) replace CLEVER with overloaded CLEVERFOX currently need to free 5 slots add RESUME (currently using REPEAT) add REMAIN(ING) add WILL ? available words: FOUND GOOD HIDDEN HIDING HOUND HUNT LUCK ME SEQUENCE TRICKY WINNER YOU "tone" word is cut a bit short on the start -> "own" so is "REPEAT"? many are. may just need a reupload. possibly adjusts timing? ====================================================================== CleverFox 1.0 Remote Control Menu Draft revision 3 ====================================================================== ====================================================================== while running, unlock code will either lock or unlock - if unlocking, "CLEVERFOX IS UNLOCKED" and will immediately pause and enter main menu - if locking, will reply "CLEVERFOX IS LOCKED" # - enters main menu when unlocked ====================================================================== Main Menu: One menu to rule them all Prompts with "MAIN MENU" # - responds "EXIT MENU", exits menu 0 - responds "1 START, TO PAUSE, 3 STOP, 4 SELECT PROFILE, 5 EDIT PROFILE, 6 GENERAL, 8 TRANSMISSION 9 LOCK|UNLOCK, D KILL, POUND EXIT MENU", reloads menu 1 - responds "START|RESUME PROFILE, EXIT MENU", changes mode, exits menu 2 - responds "PAUSE PROFILE", reloads menu 3 - responds "STOP PROFILE", reloads menu 4 - go to Select Profile Menu 5 - go to Edit Profile Menu 6 - go to General Menu 8 - execute one test transmission (transmit only, no delay), reloads menu A - debug only, loop all tones for 60 sec B - debug only, play all 120 words 9 - go to Lock|Unlock menu D - go to Kill menu others - responds "INVALID ENTRY", reloads menu - if a profile is running and is in its initial delay, it can be paused, but when you unpause it, it will skip the remainder of the initial delay and begin its first transmission. there is no way to pause the initial delay. you can stop and start it to restart the delay. ====================================================================== General Menu: Change CleverFox shared behaviors common to all profiles Prompts with "GENERAL MENU" # - go to Main Menu 0 - responds "1 ID, 2 DEFAULT PROFILE, 3 AUTO START, 4 DIALATION, 8 LOCK CODE, 9 CURRENT SETTINGS, POUND EXIT", reloads menu 1 - go to Change ID Menu 2 - go to Default Profile Menu 3 - responds "AUTO START IS ENABLED|DISABLED", saves general settings, reloads menu 4 - go to Dialation Menu 5 - go to Record menu 8 - go to Change Lock Code Menu 9 - responds with general settings, reloads menu others - responds "INVALID ENTRY", reloads menu ---------------------------------------------------------------------- Record Menu: Remotely record two minutes of as many as eight custom messages Prompts with "RECORD MENU, ENTER RECORDING NUMEBER TO CHANGE, POUND CANCEL" # - go to Main Menu 1-8 continue others - responds "INVALID ENTRY", go to General Menu - responds "STAR TO START RECORDING, STAR TO SAVE" (recording will occur between * and *) */# - responds "RECORDING (number) SAVED", go to General Menu others - ignored stores recording in specified slot. also memorizes length of recording in general settings. recording slots are 1-8, and are 15 seconds each. your messages can continue into the slot(s) after them to create messags longer than 15 seconds. You could record 30 seconds each in slots 1, 3, 5, and 7, or the full 2 minutes into slot 1. Recordings in progress cannot be cancelled, so both * and # will terminate recording and save. ---------------------------------------------------------------------- Kill Menu: Option to disable CleverFox until it gets a hard reset. The final act of control in case of problems. Prompts with "ENTER UNLOCK CODE AND STAR TO KILL CLEVERFOX, POUND TO CANCEL" # - go to Main Menu 0-9 x 4 - buffered others - ignored - if incorrect code was provided, responds "INVALID CODE", go to Main Menu - responds " CLEVERFOX IS KILLED" - goes off the air and hangs until arduino hardware is rebooted ---------------------------------------------------------------------- Lock Menu: locks or unlocks cleverfox Prompts with "ENTER UNLOCK CODE AND STAR TO LOCK CLEVERFOX, POUND TO CANCEL | CLEVERFOX IS UNLOCKED" - if cleverfox was locked, unlock, save general settings, go to Main Menu # - go to General Menu 0-9 x 4 - buffered others - ignored - responds "NEW UNLOCK CODE ENABLED", go to Main Menu ---------------------------------------------------------------------- Select Profile Menu: Change which profile is currently active, oes not affect the Default Profile setting Prompts with "SELECT PROFILE MENU, SELECTED PROFILE IS " # - go to Main Menu 0 - responds "ENTER NUMBER 1 TO 8 TO SELECT CURRENT PROFILE, POUND CANCEL". reloads menu 1-8 x 1 - buffered others - responds "INVALID ENTRY", reloads menu - if active profile number was entered, responds "NO PROFILE CHANGE", go to Main Menu - loads selected profile - change mode to STOPPED - responds "NEW SELECTED PROFILE is " - go to main menu ====================================================================== Change ID Menu: Change FCC identifier string, defaults to "CLEVERFOX" Prompts with "CHANGE ID, CURRENT ID IS ,, BEGIN ENTRY NOW, STAR TO SAVE, POUND TO CANCEL" # - responds "CANCELLED", go to General Menu 0-9/A/B/C - buffer keys D - responds "INVALID ENTRY", go to General Menu * - responds "NEW ID IS ", save general settings, go to General Menu - if id length is outside 4-10, responds "INVALID LENGTH", go to General Menu - if illegal sequence was provided, responds "INVALID ENTRY", go to General Menu to enter a letter, press A followed by the pressing 1-9 one, two, or three times as shown by the letters on the keypad. "QZ" are on 1. to enter a digit, press B followed by the digit. to enter a symbol, press C followed by 1-5 for .,?/@ "N0ZYC/F" would be entered as: A66 B0 A11 A999 A222 C4 A333 * ---------------------------------------------------------------------- Change Default Profile Menu: Change which profile is the default (the profile that's selected on power-up) Prompts with "CHANGE DEFAULT PROFILE, CURRENT DEFAULT IS " # - responds "CANCELLED", go to General Menu 0 - responds "ENTER PROFILE NUMBER 1 TO 8 TO SELECT DEFAULT PROFILE, POUND CANCEL", reloads menu 1-8 - buffer key others - responds "INVALID ENTRY", reloads menu - responds "NEW DEFAULT PROFILE IS ", save general settings, go to General Menu ---------------------------------------------------------------------- Change Unlock Code Menu: Set code used to lock access to menu and to activate kill, defaults to "0000" Prompts with "CHANGE UNLOCK CODE, BEGIN ENTRY NOW, STAR TO SAVE, POUND TO CANCEL" # - responds "CANCELLED", go to General Menu 0-9 x 4 - buffer keys others - responds "INVALID ENTRY", go to General Menu - responds "NEW UNLOCK CODE SAVED", save general settings, go to General Menu ====================================================================== Edit Profile Menu: Change settings for the currently selected profile Prompts with "EDIT PROFILE MENU" # - responds "CANCELLED", go to General Menu 0 - help "1 TRANSMISSION TIME, 2 CYCLE TIME, 3 TONES, 4 TONE SPEED, 5 START DELAY, 6 MAX RUNTIME, 7 AUTO CHANGE PROFILE, 8 TEST TONES, 9 CURRENT SETTINGS, POUND EXIT", reloads menu 1 - go to Transmission Time Menu 2 - go to Cycle Time Menu 3 - go to Tones Menu 4 - go to Tone Speed Menu 5 - go to Start Delay Menu 6 - go to Max Runtime Menu 7 - responds "AUTO CHANGE PROFILE IS ENABLED|DISABLED", save profile, reloads menu 8 - plays one transmission cycle, reloads menu 9 - responds with all profile settings, reloads menu ---------------------------------------------------------------------- Transmission Time Menu: Change the length of each transmission, includes ID time, defaults to "30" Prompts with "CHANGE TRANSMISSION TIME, CURRENT TIME IS SECONDS, BEGIN ENTRY NOW, STAR TO SAVE, POUND TO CANCEL" # - responds "CANCELLED", go to General Menu 0-9 x 1-3 buffered keys * validates and saves others - responds "INVALID ENTRY", go to Profile Menu - if no keys are buffered, responds CANCELLED", go to Profile Menu - if time is outside 10-290, responds "INVALID TIME", go to Profile Menu - if time is with 15 seconds of cycle time, responds "INVALID TIME", go to Profile Menu - responds "NEW TRANSMISSION TIME IS SECONDS", , go to Profile Menu ---------------------------------------------------------------------- Cycle Time Menu: Change the total time between transmissions, defaults to "60" Prompts with "CHANGE CYCLE TIME, CURRENT TIME IS SECONDS, BEGIN ENTRY NOW, STAR SAVE, POUND CANCEL" # - responds "CANCELLED", go to General Menu 0-9 x 2-6 buffered keys * validates and saves others - responds "INVALID ENTRY", go to Profile Menu - if no keys are buffered, responds CANCELLED", go to Profile Menu - if time is outside 30-86400, (30 sec - 24 hrs) responds "INVALID TIME", go to Profile Menu - if time is with 15 seconds of duration time, responds "INVALID TIME", go to Profile Menu - responds "NEW CYCLE TIME IS SECONDS", , go to Profile Menu ---------------------------------------------------------------------- Tones Menu: Change the tone sequence to play after ID, defaults to "13713713700R" Prompts with "CHANGE TONES, BEGIN ENTRY NOW, STAR SAVE, POUND CANCEL" # - responds "CANCELLED", go to General Menu - enter 1-9 for tones to play. 1-9 increase in pitch, 200-2000hz in 225hz increments - enter 0 for 500ms of silence - enter A followed by three digits to specify a WORD to play (word_id as number entered, and ms*10) - enter B followed by 1-8 to play a custom message 1-8 - enter C to loop the tones from the start. - if the sequence is too long to store, it will be truncated and responds "(tone_max) MAX TONES" * responds "NEW TONES SAVED", go to Profile Menu - if no keys are buffered, responds CANCELLED", go to Profile Menu others (D) or bad WORD slot - responds "INVALID ENTRY", go to Profile Menu tone sequence will loop if it ends in Loop, otherwise it will dead key until transmission_time if ID requires more time than transmission_time, no tones will be played a silence of 1/10 of tone_speed will be inserted between all tones custom sound lengths are stored in general settings (in ms*100) Use the included WORD_ID chart to select words sto be spoken ---------------------------------------------------------------------- Tone Speed Menu: Change the speed of tones during playback in tenths of a second, defaults to 2 Prompts with "CHANGE TONE SPEED, CURRENT SPEED IS , BEGIN ENTRY NOW, STAR TO SAVE, POUND TO CANCEL" # - responds "CANCELLED", go to General Menu 0-9 buffered key * validates and saves others - responds "INVALID ENTRY", go to Profile Menu - if no keys are buffered, responds CANCELLED", go to Profile Menu - if tone speed is outside 0-9, responds "INVALID SPEED", go to Profile Menu - responds "NEW TONE SPEED IS ", go to Profile Menu tones are played for speed*100 milliseconds, for a range of 0.1 to 1.0 seconds per tone. (0 is 1.0) unless you include a break (such as with a silence tone 0), the tones play without a gap between them ---------------------------------------------------------------------- Start Delay Menu: Change the number of seconds to delay after program start before first transmission, defaults to "5" Prompts with "CHANGE START DELAY, CURRENT DELAY IS SECONDS, BEGIN ENTRY NOW, STAR TO SAVE, POUND TO CANCEL" # - responds "CANCELLED", go to General Menu 0-9 x 1-5 buffered keys * validates and saves others - responds "INVALID ENTRY", go to Profile Menu - if no keys are buffered, responds CANCELLED", go to Profile Menu - if time is outside 0-604799 (0 sec - 7 days), responds "INVALID DELAY", go to Profile Menu - responds "NEW START DELAY IS SECONDS", go to Profile Menu ---------------------------------------------------------------------- Max Runtime Menu: Change the total time to run after starting, defaults to "0" Prompts with "CHANGE MAX RUNTIME, CURRENT MAX IS MINUTES, BEGIN ENTRY NOW, STAR TO SAVE, POUND TO CANCEL" # - responds "CANCELLED", go to General Menu 0-9 x 1-4 buffered keys * validates and saves others - responds "INVALID ENTRY", go to Profile Menu - if no keys are buffered, responds CANCELLED", go to Profile Menu - if time is outside 5-43199 (5 min - 30 days), responds "INVALID RUNTIME", go to Profile Menu - responds "NEW MAX RUNTIME IS MINUTES", go to Profile Menu ---------------------------------------------------------------------- Dialaion Menu: Change time dialation, defaults to "0" Prompts with "CHANGE TIME CHANGE, BEGIN ENTRY NOW, STAR TO SAVE, POUND TO CANCEL" # - responds "CANCELLED", go to General Menu 0-9/A x 1-4 buffered keys * validates and saves others - responds "INVALID ENTRY", go to Profile Menu - if no keys are buffered, responds CANCELLED", go to Profile Menu - if range is outside -250 - +250, responds "INVALID CHANGE", go to Profile Menu - responds with "NEW TIME CHANGE IS ", go to General Menu - to enter a negative amount, key in A before entering digits - to determine necessary dialation, program CleverFox for a cycle time of one hour, and run it. Measure the time between the start of the first transmission and the start of the next. Say it's 53 minutes. Dialation is 1000 x (got-wanted)/wanted. 1000 x (53-60)/60 = -117, enter that with A117*. Or say it took 78 minutes. 1000 x (78-60)/60 = 300, enter that with 300*. You should be able to adjust to within 3.6 second per hour. Of course measure in seconds rather than minutes for more accuracy. If your hour cycle time looped at 58:13, convert to seconds, 3600 in 3493, 1000 x (3600-3493)/3493 would be a dialation of 30. You can test with a shorter time, but it will affect the precision of your adjustment. - make sure the dialation is set to zero when you test - changing the dialation while a profile is running will confuse current timers ===================================================================== On powerup, default profile is selected, and will be started if Auto Start is enabled. (be careful with this, you must have your antenna attached and ready or you may damage your transmitter) If Auto Start is disabled, CleverFox will load the default profile and be in a stopped state, outside the menu Hit # while CleverFox is stopped, delaying, or paused outside the menu to enter the menu. While you are in the menu, the profile is suspended if it was delaying, so time spent in the menu will not count as part of the delay. As soon as you exit the menu, the profile will wake from suspension. If you selected to resume/start the profile, CleverFox will immediately exit the menu. Profie pausing and selected profile are not saved. All other options are saved immediately. if CleverFox is locked, it must be unlocked before entering the menu. Enter the unlock code and press *. It should respond with "CLEVERFOX UNLOCKED". If CleverFox is unlocked, press # to enter the menu. See above for menu tree, available options, and expected responses. While you are in the menu, the current profile, if running, will be suspended. All menus will timeout after 60 seconds. All value entries will also timeout after 60 seconds. Timeout will return you to the previous menu, or if at the main menu, exit the menu entirely. (and possibly unsuspend the active profile) All menus and value entries can be cancelled at any time by pressing #. ID will be sent when Main Menu is first accessed, and when leaving main menu to start or resume delays or change to stopped state, in addition to at the start of each regular hide transmission. Since many radios to be used for foxes won't have dual crossband vfos, this controller will not be designed to receive commands while transmitting. The tone menu will allow you to play one of the recorded sound bytes intead of a tone. To use a sound byte, enter "A" followed by the byte's three digit code. Sound bytes can be strung together to form fun phrases to play during the hunt. CleverFox has two minutes of custom sound memory you can program before the hunt and play as part of the Tones. Enter B and a digit 1-8 specifying the slot of the custom sound to play. Each slot is 15 seconds. You can record messages longer than 15 seconds by overlapping into the next slot. For example, uploading a 40 second message to slot 1 would occupy slots 1 through 3. Message 1 would play the entire 40 seconds. Attempting to play slot 2 would start the message at the 15 second mark and continue to the end of the message. Custom messages stop playing when they reach the end of the message, the end of slot 8, or at the end of the Transmission Time. All menus with multiple options have help available that lists the available options by number. Press 0 for help. Hold down the START button at power-on to disable profile auto start. (that setting will also be saved) Hold down both START and TEST buttons at power-on to restore factory defaults. I AM CLEVERFOX I WILL MEET YOU IF YOU FIND ME I AM HIDDEN YOU CAN START TO FIND ME NOW I AM HIDING FIND ME IF YOU CAN I AM A VERY TRICKY FOX YOU WILL BE A VERY LUCKY HOUND IF YOU FIND ME IF YOU CAN FIND ME YOU WILL BE A WINNER TO FIND ME YOU NEED TO BE VERY CLEVER I AM CLEVERFOX,,IF YOU FIND ME YOU WILL BE CLEVER TOO A018 A120 A050 0 0 0 A073 A128 A062 A083 A128 A118 A125 A049 A123